The Full storage node is a Data Availability Node, this node stores all the data but does not connect to Consensus. Therefore it doesn't connect to Celestia App (hence not a full node) but stores all the data. A bridge node is used to bridge between consensus nodes and data (storage & light) nodes.
Mamaki test network is deprecated now and replaced with Mocha test network, please see this guide for updated instructions
First, make sure to update and upgrade 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
Firewall Settings
we need to enable firewall and open ports on our device
sudo ufw allow 9090/tcp
sudo ufw enable
sudo ufw status
IMPORTANT: If you are going to remote into this server, make sure to enable SSH before enabling sudo ufw allow ssh
Install Golang
remove any existing installation
sudo rm -rf /usr/local/go
sudo rm -rf ~/go
cd $HOME
sudo wget https://golang.org/dl/go1.18.2.linux-amd64.tar.gz
sudo tar -xvf go1.18.2.linux-amd64.tar.gz
sudo rm go1.18.2.linux-amd64.tar.gz
sudo mv go /usr/local
Now we need to add the /usr/local/go/bin directory to $PATH:
mkdir ~/go
echo 'GOROOT=/usr/local/go' >> ~/.bashrc
echo 'GOPATH=~/go' >> ~/.bashrc
echo 'PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> ~/.bashrc
make changes to the applicable file, should now be persistent in the .bashrc
source .bashrc
Confirm installation
go version
This should Return
go version go1.18.2 linux/amd64
For Celestia full storage node setup: we need to install celestia node which handles data availability and not consensus, https://docs.celestia.org/developers/celestia-app/
Install Celestia Node
create a binary file named celestia-node inside $HOME/go/bin folder which will be used later to run the node. Check the Discord ‘mamaki testnet’ announcements for the latest version (currently this is v0.3.0-rc2)
cd $HOME
rm -rf celestia-node
git clone https://github.com/celestiaorg/celestia-node.git
cd celestia-node/
git checkout tags/v0.3.0-rc2
make install
confirm installation by running from within the directory celestia version
Initialize Celestia node
celestia full init
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.grpc http://<ip addr of core node>:9090
Example
celestia full start --core.grpc http://https://rpc-mamaki.pops.one:9090
Output will look like this on first start, this creates a Key for you
Stop the node with ctrl + c
cd celestia-node/
Will install binary in current working directory from the celestia-node
repository pulled in Step 2, accessible with ./cel-key
make cel-key
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
Output will be something like this, and stored in .celestia-full/keys/keyring-test
Fund Wallet with Mamaki Test tokens
Once synced the address will need to be funded with Mamaki Testnet tokens to pay for PayForData
transactions.
A section on wallet and claiming tokens can be found here
Optional: Generate your own Key
./cel-key add <key_name> --keyring-backend test --node.type full
This can then be selected later, in the start command with the flag --keyring.accname <name_of_custom_key>
Set up celestia-node
as a background process.
sudo tee <<EOF >/dev/null /etc/systemd/system/celestia-full.service
[Unit]
Description=celestia-full Cosmos daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$HOME/go/bin/celestia full start
Restart=on-failure
RestartSec=3
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target
EOF
confirm set up with
cat /etc/systemd/system/celestia-full.service
to make changes
nano /etc/systemd/system/celestia-full.service
Enable and start celestia-full daemon
systemctl enable celestia-full
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
Optional: specify endpoints and wallet
we can edit the flags in our system service file
celestia full start --core.grpc http://<ip>:9090 --keyring.accname <name_of_custom_key>
**
**