Fullnode Installation Guide
Chain ID: mayachain-mainnet-v1 | Current Node Version: v1.124.1
Install Go and other requirements
Install Go
We will use Go v1.23.4
which is the required version for the latest MAYANode. The code below installs Go in your home directory to avoid requiring sudo privileges.
# Remove any existing Go installation
rm -rf ~/.go
# Download and extract Go
wget https://golang.org/dl/go1.23.4.linux-amd64.tar.gz
tar -C ~/ -xzf go1.23.4.linux-amd64.tar.gz
mv ~/go ~/.go
rm go1.23.4.linux-amd64.tar.gz
Configure Go
Unless you want to configure in a non-standard way, then set these in the ~/.bash_profile
for bash and ~/.zshrc
for zsh.
export GOROOT=$HOME/.go
export GOPATH=$HOME/go
export GO111MODULE=on
export PATH=$PATH:$HOME/.go/bin:$HOME/go/bin
After adding these lines, reload your shell configuration:
# For bash
source ~/.bash_profile
# For zsh
source ~/.zshrc
Install dependencies protobuf-compiler
sudo apt-get update
sudo apt-get install -y git \
make \
protobuf-compiler \
curl \
wget \
jq \
build-essential \
musl-tools \
linux-headers-generic
Install docker and docker compose plugin
https://docs.docker.com/engine/install/
Install Node
Install the current version of node binary.
*You can see tags in mayanode's repo tags
git clone https://gitlab.com/mayachain/mayanode
cd mayanode
curl -s https://mayanode.mayachain.info/mayachain/version
git checkout <latest version> # e.g. v1.123.1
make protob
Install binary
TAG=mainnet NET=mainnet make install
Install library dependencies
MAYANode requires the libzec.so and libradix_engine_toolkit_uniffi.so libraries. Copy them to the system library path:
sudo cp lib/libzec.so /usr/local/lib/
sudo cp lib/libradix_engine_toolkit_uniffi.so /usr/local/lib/
sudo ldconfig
Initialize Node
First, initialize the node and download the genesis file:
mayanode init local --chain-id mayachain-mainnet-v1
wget -O ~/.mayanode/config/genesis.json https://raw.githubusercontent.com/mayachain/mayanode/mainnet/genesis/mayachain-mainnet-v1-genesis.json
Configure Ports (if running alongside other nodes)
If you're running MAYANode alongside other blockchain nodes (like THORChain), you'll need to change the default ports to avoid conflicts:
# Change RPC port from 27147 to 28147
sed -i 's|laddr = "tcp://0.0.0.0:27147"|laddr = "tcp://0.0.0.0:28147"|g' ~/.mayanode/config/config.toml
# Change P2P port from 27146 to 28146
sed -i 's|laddr = "tcp://0.0.0.0:27146"|laddr = "tcp://0.0.0.0:28146"|g' ~/.mayanode/config/config.toml
# Change Prometheus port from 26660 to 28660
sed -i 's|prometheus_listen_addr = ":26660"|prometheus_listen_addr = ":28660"|g' ~/.mayanode/config/config.toml
# Change pprof port from 6060 to 7060
sed -i 's|pprof_laddr = "localhost:6060"|pprof_laddr = "localhost:7060"|g' ~/.mayanode/config/config.toml
# Change API port from 1317 to 2317
sed -i 's|address = "tcp://0.0.0.0:1317"|address = "tcp://0.0.0.0:2317"|g' ~/.mayanode/config/app.toml
# Change gRPC port from 9090 to 9190
sed -i 's|address = "0.0.0.0:9090"|address = "0.0.0.0:9190"|g' ~/.mayanode/config/app.toml
# Change gRPC-web port from 9091 to 9191
sed -i 's|address = "0.0.0.0:9091"|address = "0.0.0.0:9191"|g' ~/.mayanode/config/app.toml
Add Seed Nodes
# Update this with current active seed nodes
sed -i 's|seeds = ""|seeds = "[email protected]:27146,[email protected]:27146"|g' ~/.mayanode/config/config.toml
Create Service File
Create a mayanode.service
file in the /etc/systemd/system
folder with the following code snippet. Make sure to replace USER
with your Linux username. You need sudo privilege to do this step.
[Unit]
Description="Mayanode"
After=network-online.target
[Service]
User=USER
WorkingDirectory=/home/USER
ExecStart=/home/USER/go/bin/mayanode start
Restart=always
RestartSec=3
LimitNOFILE=4096
Environment="MAYA_COSMOS_TELEMETRY_ENABLED=true"
Environment="CHAIN_ID=mayachain-mainnet-v1"
Environment="NET=mainnet"
Environment="SIGNER_NAME=mayachain"
Environment="SIGNER_PASSWD=password"
[Install]
WantedBy=multi-user.target
Download Snapshot
Please use a snapshot in order to avoid syncing from start. You can choose between full snapshots or pruned snapshots (recommended for fullnodes to save disk space).
Using aria2c (recommended for faster downloads):
# Install aria2c if not already installed
sudo apt-get install -y aria2
# For pruned snapshot (recommended):
mkdir -p ~/.mayanode/data
aria2c -x 16 -s 16 -k 1M https://public-snapshots-mayanode.s3.amazonaws.com/pruned/mayachain-mainnet-v1-pruned-<HEIGHT>.tar.gz
tar -xzf mayachain-mainnet-v1-pruned-<HEIGHT>.tar.gz -C ~/.mayanode/
rm mayachain-mainnet-v1-pruned-<HEIGHT>.tar.gz
# For full snapshot:
mkdir -p ~/.mayanode/data
aria2c -x 16 -s 16 -k 1M https://public-snapshots-mayanode.s3.amazonaws.com/full/mayachain-mainnet-v1-full-<HEIGHT>.tar.gz
tar -xzf mayachain-mainnet-v1-full-<HEIGHT>.tar.gz -C ~/.mayanode/
rm mayachain-mainnet-v1-full-<HEIGHT>.tar.gz
Using AWS CLI:
# Install aws-cli if not already installed
sudo apt-get install -y awscli
# Download snapshot
mkdir -p ~/.mayanode/data
aws s3 cp --recursive s3://public-snapshots-mayanode/pruned/<snapshot height> ~/.mayanode/data
Note: Check the snapshot page for the latest available snapshot height.
Start Node Service
# Enable service
sudo systemctl enable mayanode.service
# Start service
sudo systemctl start mayanode
# Check logs
sudo journalctl -feu mayanode
# Check sync status
curl -s localhost:28147/status | jq '.result.sync_info'
# Check connected peers
curl -s localhost:28147/net_info | jq '.result.n_peers'
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.
Firewall Configuration: Configure firewall to close most ports while only leaving the p2p port (28146 if using custom ports, or 27146 for default) open for incoming connections
Multiple Nodes: When running multiple blockchain nodes on the same server, ensure each uses different ports as shown in the port configuration section
Disk Space: Pruned snapshots use significantly less disk space (~15GB vs ~50GB for full snapshots) and are recommended for fullnodes
Monitoring: Set up monitoring for the node using the Prometheus metrics endpoint (port 28660 if using custom ports)
Seed Nodes: The seed nodes may change over time. Check with the MAYAChain community for current active seed nodes if connection issues persist
Troubleshooting
Port Conflicts: If you see "bind: address already in use" errors, check if another service is using the port:
sudo lsof -i :<PORT_NUMBER>
Library Errors: If you see "error while loading shared libraries: libzec.so" or "libradix_engine_toolkit_uniffi.so", ensure the libraries are properly installed:
sudo cp /path/to/mayanode/lib/libzec.so /usr/local/lib/
sudo cp /path/to/mayanode/lib/libradix_engine_toolkit_uniffi.so /usr/local/lib/
sudo ldconfig
No Peers: If the node shows 0 peers after starting, check:
Firewall rules allow outbound connections
Seed nodes are correctly configured in config.toml
P2P port is accessible
If you find a bug in this installation guide, please reach out to our Discord Server and let us know.
Last updated
Was this helpful?