Celestia Node Installation Guide

Chain ID: celestia | Current Node Version: v2.3.1

Install Go and Cosmovisor

Feel free to skip this step if you already have Go and Cosmovisor.

Install Go

We will use Go v1.22.4 as example here. The code below also cleanly removes any previous Go installation.

sudo rm -rvf /usr/local/go/
wget https://golang.org/dl/go1.22.4.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz
rm go1.22.4.linux-amd64.tar.gz

Configure Go

Unless you want to configure in a non-standard way, then set these in the ~/.profile file.

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GO111MODULE=on
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin

Install Cosmovisor

We will use Cosmovisor v1.0.0 as example here.

go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/[email protected]

Install Node

Install the current version of node binary.

git clone https://github.com/celestiaorg/celestia-app celestia
cd celestia
git checkout v2.3.1
make install

Configure Node

Initialize Node

Please replace YOUR_MONIKER with your own moniker.

celestia-appd init YOUR_MONIKER --chain-id celestia

Download Genesis

The genesis file link below is Polkachu's mirror download. The best practice is to find the official genesis download link.

wget -O genesis.json https://snapshots.polkachu.com/genesis/celestia/genesis.json --inet4-only
mv genesis.json ~/.celestia-app/config

Configure Seed

Using a seed node to bootstrap is the best practice in our view. Alternatively, you can use addrbook or persistent_peers.

sed -i 's/seeds = ""/seeds = "[email protected]:11656"/' ~/.celestia-app/config/config.toml

Launch Node

Configure Cosmovisor Folder

Create Cosmovisor folders and load the node binary.

# Create Cosmovisor Folders
mkdir -p ~/.celestia-app/cosmovisor/genesis/bin
mkdir -p ~/.celestia-app/cosmovisor/upgrades

# Load Node Binary into Cosmovisor Folder
cp ~/go/bin/celestia-appd ~/.celestia-app/cosmovisor/genesis/bin

Create Service File

Create a celestia.service file in the /etc/systemd/system folder with the following code snippet. Make sure to replace USER with your Linux user name. You need sudo previlege to do this step.

[Unit]
Description="celestia node"
After=network-online.target

[Service]
User=USER
ExecStart=/home/USER/go/bin/cosmovisor start
Restart=always
RestartSec=3
LimitNOFILE=4096
Environment="DAEMON_NAME=celestia-appd"
Environment="DAEMON_HOME=/home/USER/.celestia-app"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="UNSAFE_SKIP_BACKUP=true"

[Install]
WantedBy=multi-user.target

Download Snapshot

Please use our popular snapshot download service to download and extract Celestia snapshot.

Start Node Service

# Enable service
sudo systemctl enable celestia.service

# Start service
sudo service celestia start

# Check logs
sudo journalctl -fu celestia

Other Considerations

This installation guide is the bare minimum to get a node started. You should consider the following as you become a more experienced node operator.

  • Use Ansible script to automate the node installation process
  • Configure firewall to close most ports while only leaving the p2p port (typically 26656) open
  • Use custom ports for each node so you can run multiple nodes on the same server

If you find a bug in this installation guide, please reach out to our Discord Server and let us know.