Set up guide for a Full Storage Node on Celestia Mocha Testnet.
The Full storage node is a Data Availability Node, this node stores all the data but does not connect to Consensus (Celestia App). A bridge node is used to bridge between consensus nodes and data (storage & light) nodes.
A setup script, for easier install is available here:
Hardware Requirements:
4vCPU / 8GB RAM / 250GB SSD / 1 Gbps Download/100 Mbps Upload
OS: Ubuntu Linux 20.04 (LTS) x64
See Official guides for Celestia on setting up a Full Storage Node here, This document is designed for an easy step by step setup for beginner users.
Update the OS
sudo apt update && sudo apt upgrade -y
Install essential packages for Celestia
These are essential packages that are necessary to execute many tasks like downloading files, compiling and monitoring the node:
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu -y
Change to Root User
Most of the packages to install work best under root, to enter root in the terminal with sudo -i
which can be exited back to normal user with exit
anytime.
Install Golang
most of Celestia software is written in go, so the go programming language suite needs to be installed. remove any existing installation
cd $HOME
sudo rm -rf /usr/local/go
sudo rm -rf ~/go
Install Go and extract
ver="1.19.4"
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz"
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"
rm "go$ver.linux-amd64.tar.gz"
Add Go to PATH
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
Adding to the PATH variable is to allow Linux shell to know where to look for executable files is easy, to confirm this try go version
This should Returngo version go1.19.4 linux/amd64
For Celestia full storage node setup: we need to install celestia-node
the software stack for data availability not consensus, https://docs.celestia.org/developers/celestia-app/
Install Celestia Node
Check the Discord ‘mocha testnet’ announcements for the latest version (currently this is v0.6.1)
cd $HOME
rm -rf celestia-node
git clone https://github.com/celestiaorg/celestia-node.git
cd celestia-node/
git checkout tags/v0.6.1
make install
make cel-key
confirm installation by running from within the directory celestia version
The Binary for celestia-node is installed to /usr/local/bin
Initialise Celestia Node for full storage
From Directory celestia-node
celestia full init
There is now a config.toml
file which contains some parameters that can be modified for changes such as ports, this is in .celestia-full-mocha
Start the Full Storage Node
A Full Storage Node requires a connection to a validator node's gRPC endpoint (which is usually exposed on port 9090): we can find RPC endpoints, check out the list of resources here.
celestia full start --core.ip http://<ip addr of core node>:<Port>
Example
celestia full start --core.ip https://grpc-mocha.pops.one
Output will look like this on first start, this creates a Key for you
Stop the node with ctrl + c
Once you start the Full Storage Node, a wallet key will be generated for you. You will need to fund that address with testnet tokens to pay for PayForData transactions.
Find Celestia node Key
this will list the key installed earlier on first start-up in order for you to find your address
./cel-key list --node.type full --keyring-backend test
Use Existing Key
The custom key must exist inside the Celestia bridge node directory at the correct path default: ~/.celestia-full-mocha/keys/keyring-test
.
add a wallet with existing seed, from celestia-node
directory
./cel-key add <name_of_custom_key> --keyring-backend test --node.type full --recover
add flag to the start command from step 3. or to the system service file later at step 5.
--keyring.accname <name_of_custom_key>
Set up celestia-node
as a background process.
tee <<EOF >/dev/null /etc/systemd/system/celestia-full.service
[Unit]
Description=celestia-full Cosmos daemon
After=network-online.target
[Service]
User=root
ExecStart=/usr/local/bin/celestia full start --core.ip https://grpc-mocha.pops.one
Restart=on-failure
RestartSec=3
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target
EOF
Enable and start celestia-full daemon
systemctl enable celestia-full
systemctl daemon-reload
systemctl start celestia-full
To view logs
journalctl -u celestia-full.service -f
you are now running a Celestia Full Storage Node as a background service, this will run until stopped.
Stop the full storage node
systemctl stop celestia-full
Making changes to service file
nano /etc/systemd/system/celestia-full.service
Restart the service
systemctl daemon-reload
systemctl start celestia-full