Celestia Full Storage Node - Mocha

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.

1. Set up dependencies

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

2. Install Celestia Node

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

Output will look similar if installed correctly
Output will look similar if installed correctly

The Binary for celestia-node is installed to /usr/local/bin

3. Run Celestia Node

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

4. Key

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>

5. Set up as System Service

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.

If working you should see logs with data sampling- INFO das
If working you should see logs with data sampling- INFO das

Additional Commands

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
Subscribe to GLCstaked
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.