🖥️Full node (Shwap)
In this guide, we install the Full node on a separate server and use data from Consensus Full Node!
Server preparation
apt update && apt upgrade -y
apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev lz4 -y
Install GO
ver="1.23.1" && \
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" && \
sudo rm -rf /usr/local/go && \
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" && \
rm "go$ver.linux-amd64.tar.gz" && \
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && \
source $HOME/.bash_profile && \
go version
ufw allow 2121 comment full_node
IMPORTANT - you must use XFS file system. Please do not use ext4, but migrate to XFS/ZFS
Node installation
cd $HOME
rm -rf celestia-node
git clone https://github.com/celestiaorg/celestia-node && cd celestia-node
git checkout tags/v0.21.9
make build
make install
celestia version
#Semantic version: v0.21.9
#Commit: 3d8fb74bc073fb23303dcfc2804ab85ce316fa24
#https://docs.celestia.org/developers/celestia-node-key/
make cel-key
mv $HOME/celestia-node/cel-key /usr/local/bin/
cel-key add full_wallet --keyring-backend test --node.type full
# show wallet address
cel-key list --node.type full --keyring-backend test
Initializing the full
--core.ip use the address of our remote RPC node
--p2p.network use the chain id of our network
--core.port use the gRPC port from our RPC node
--keyring.keyname use the name of the wallet we created
celestia full init \
--core.ip <RPC_NODE_IP> \
--core.port 9090 \
--keyring.keyname full_wallet
Create a service file
tee <<EOF >/dev/null /etc/systemd/system/celestia-full.service
[Unit]
Description=celestia-full mainnet daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$(which celestia) full start --archival \
--metrics.tls=true --metrics --metrics.endpoint otel.celestia.observer \
--keyring.keyname full_wallet
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable celestia-full
systemctl restart celestia-full && journalctl -u celestia-full -f -o cat
Don't forget to save the catalog with keys!!! .celestia-full/keys
Update
systemctl stop celestia-full
cd $HOME
rm -rf celestia-node
git clone https://github.com/celestiaorg/celestia-node && cd celestia-node
git checkout tags/v0.16.0
make build
make install
make cel-key
celestia version
#Semantic version: v0.16.0
#Commit: 6744f648649ebb5fee1b27faf7aca96ecf4519b2
# update config
celestia full config-update
systemctl restart celestia-full && journalctl -u celestia-full -f -o cat
Node transfer
Please note that we do not necessarily need to change the keyring-test wallet Let's look at the most suitable option for saving the Node ID, assuming that the old server is working:
Start a new server and fully sync the Full
Stop Full on the new server and replace the two files in
/root/.celestia-full-mocha-4/keys/
Be sure to give the necessary rights
chmod 600 /root/.celestia-full-mocha-4/keys/*
Restart Full on the new server and wait for full synchronization
Stop the old server
Useful commands
Find out Full node id
# first, let's generate an authorization token
AUTH_TOKEN=$(celestia full auth admin)
echo $AUTH_TOKEN
# we get the peerId of our node
curl -X POST \
-H "Authorization: Bearer $AUTH_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":0,"method":"p2p.Info","params":[]}' \
http://localhost:26658
# another way to get Node ID
celestia p2p info --node.store ~/.celestia-full/
Working with wallets
# show wallet address
cel-key list --node.type full --keyring-backend test
# check balance
celestia state balance --node.store ~/.celestia-full/
# restore wallet
cel-key add full_wallet --keyring-backend test --node.type full --recover
Status
celestia header sync-state --node.store ~/.celestia-full/
Delete
systemctl stop celestia-full
systemctl disable celestia-full
rm /etc/systemd/system/celestia-full.service
systemctl daemon-reload
cd $HOME && \
rm -rf .celestia-full .celestia-app celestia-node && \
rm -rf $(which celestia)
Last updated