Teku
Last updated
Last updated
Create a service user for the consensus service, create data directory and assign ownership.
sudo adduser --system --no-create-home --group consensus
sudo mkdir -p /var/lib/teku
sudo chown -R consensus:consensus /var/lib/teku
Install dependencies.
sudo apt install curl openjdk-17-jdk libsnappy-dev libc6-dev jq git libc6 unzip -y
Downloading binaries is often faster and more convenient.
Building from source code can offer better compatibility and is more aligned with the spirit of FOSS (free open source software).
Create a systemd unit file to define your consensus.service
configuration.
sudo nano /etc/systemd/system/consensus.service
Paste the following configuration into the file.
[Unit]
Description=Teku Consensus Layer Client service for Goerli
Wants=network-online.target
After=network-online.target
Documentation=https://www.coincashew.com
[Service]
Type=simple
User=consensus
Group=consensus
Restart=on-failure
RestartSec=3
KillSignal=SIGINT
TimeoutStopSec=900
Environment=JAVA_OPTS=-Xmx5g
ExecStart=/usr/local/bin/teku/bin/teku \
--network goerli \
--data-path /var/lib/teku/ \
--data-storage-mode="prune" \
--initial-state="https://goerli.beaconstate.info/eth/v2/debug/beacon/states/finalized" \
--ee-endpoint http://127.0.0.1:8551 \
--ee-jwt-secret-file /secrets/jwtsecret \
--rest-api-enabled true \
--metrics-enabled true \
--metrics-port 8008 \
--validator-keys /var/lib/teku/validator_keys:/var/lib/teku/validator_keys \
--validators-graffiti "" \
--validators-proposer-default-fee-recipient <0x_CHANGE_THIS_TO_MY_ETH_FEE_RECIPIENT_ADDRESS>
[Install]
WantedBy=multi-user.target
Replace<0x_CHANGE_THIS_TO_MY_ETH_FEE_RECIPIENT_ADDRESS>
with your own Ethereum address that you control. Tips are sent to this address and are immediately spendable.
Not staking? If you only want a full node, delete the whole three lines beginning with
--validator-keys
--validators-graffiti
--validators-proposer-default-fee-recipient
To exit and save, press Ctrl
+ X
, then Y
, then Enter
.
Run the following to enable auto-start at boot time.
sudo systemctl daemon-reload
sudo systemctl enable consensus
Finally, start your consensus layer client and check it's status.
sudo systemctl start consensus
sudo systemctl status consensus
Press Ctrl
+ C
to exit the status.
Check your logs to confirm that the consensus clients are up and syncing.
sudo journalctl -fu consensus | ccze
Example of Synced Consensus Client Logs
teku[64122]: 02:24:28.010 INFO - Slot Event *** Slot: 19200, Block: 1468A43F874EDE790DB6B499A51003500B5BA85226E9500A7A187DB9A169DE20, Justified: 1132, Finalized: 1133, Peers: 70
teku[64122]: 02:24:40.010 INFO - Slot Event *** Slot: 19200, Block: 72B092AADFE146F5D3F395A720C0AA3B2354B2095E3F10DC18F0E9716D286DCB, Justified: 1132, Finalized: 1133, Peers: 70
sudo journalctl -fu consensus | ccze
Example of Synced Teku Consensus Client Logs
teku[64122]: 02:24:28.010 INFO - Slot Event *** Slot: 19200, Block: 1468A43F874EDE790DB6B499A51003500B5BA85226E9500A7A187DB9A169DE20, Justified: 1132, Finalized: 1133, Peers: 70
teku[64122]: 02:24:40.010 INFO - Slot Event *** Slot: 19200, Block: 72B092AADFE146F5D3F395A720C0AA3B2354B2095E3F10DC18F0E9716D286DCB, Justified: 1132, Finalized: 1133, Peers: 70
Now that your consensus client is configured and started, you have a full node.
Proceed to the next step on setting up your validator client, which turns a full node into a staking node.