🖥️Light node (Shwap)
In this guide, we install the Light 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 light_node
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 light_wallet --keyring-backend test --node.type light
# show wallet address
cel-key list --node.type light --keyring-backend test
Initializing the light
--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 light init \
--core.ip <RPC_NODE_IP> \
--core.port 9090 \
--keyring.keyname light_wallet
Create a service file
tee <<EOF >/dev/null /etc/systemd/system/celestia-light.service
[Unit]
Description=celestia-light mainnet daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$(which celestia) light start \
--metrics.tls=true --metrics --metrics.endpoint otel.celestia.observer \
--keyring.keyname light_wallet
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable celestia-light
systemctl restart celestia-light && journalctl -u celestia-light -f -o cat
Don't forget to save the catalog with keys!!! .celestia-light/keys
Update
systemctl stop celestia-light
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 light config-update
systemctl restart celestia-light && journalctl -u celestia-light -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 Light
Stop Light on the new server and replace the two files in
/root/.celestia-light-mocha-4/keys/
Be sure to give the necessary rights
chmod 600 /root/.celestia-light-mocha-4/keys/*
Restart Light on the new server and wait for full synchronization
Stop the old server
Useful commands
Find out Light node id
# first, let's generate an authorization token
AUTH_TOKEN=$(celestia light 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-light/
Working with wallets
# show wallet address
cel-key list --node.type light --keyring-backend test
# check balance
celestia state balance --node.store ~/.celestia-light/
# restore wallet
cel-key add light_wallet --keyring-backend test --node.type light --recover
Status
celestia header sync-state --node.store ~/.celestia-light/
Delete
systemctl stop celestia-light
systemctl disable celestia-light
rm /etc/systemd/system/celestia-light.service
systemctl daemon-reload
cd $HOME && \
rm -rf .celestia-light .celestia-ap celestia-node && \
rm -rf $(which celestia)
Last updated