Build Linux binary from source and become a Sentry Node Operator
Preresquites
Operating System
This tutorial assumes that your node is running Ubuntu LTS version (i.e: 18.04, 20.04 or 22.04). It does not work with Ubuntu 16.04 or older versions.
Go version
The Golang version should be from 1.18 and above If you have not installed it yet, you can refer to this document.
Make sure that $GOPATH is in your $PATH. It's the crucial part of this tutorial.
Make
If your node does not have Make, install using: sudo apt update && sudo apt install make
Gcc
You need to install Gcc to build the binary. Type: sudo apt update && sudo apt install gcc
Build the binary from source
Please define the $ORAI_HOME environment variable which will be used as the working directory, in this tutorial we will assume that your $ORAI_HOME is root. If you don't define it, all of the following installations will be using your $HOME folder as $ORAI_HOME, please replace $ORAI_HOME with $HOME in the corresponding commands (except export ORAI_HOME command).
Make sure your user has enough permissions to write data to the $ORAI_HOME folder.
Copy
# Export ORAI_HOME env variable
export ORAI_HOME="/root"Copy
# clone the Oraichain network repository
cd $ORAI_HOME
git clone https://github.com/oraichain/orai.git
# enter the repo
cd orai
# checkout the latest tag
git checkout <tag>The <version-tag> will need to be set to either a testnet or the latest mainnet version tag.
The current mainnet version tag will be v0.41.7-1s-block-time - i.e:
Copy
git checkout v0.41.7-1s-block-timeNext, you should be able to build the binary file using the below command:
Copy
# go to main folder ($ORAI_HOME/orai/orai)
cd orai
go mod tidy
make installAfter running the above commands, your oraid binary can be found in $GOPATH/bin. To confirm that the installation is succeeded, you can run (please make sure that $GOPATH/bin is in your $PATH):
Copy
oraid versionThe current binary version for Linux users is v0.41.7-1s-block-time
Libwasmvm version: oraid query wasm libwasmvm-version, which should give: 1.5.2
Initialize Orai Node
Use oraid to initialize your node (replace the NODE_NAME with a name of your choosing):
Copy
oraid init NODE_NAME --home $ORAI_HOME/.oraidDownload and place the genesis file in the orai config folder:
Copy
wget -O $ORAI_HOME/.oraid/config/genesis.json https://raw.githubusercontent.com/oraichain/oraichain-static-files/master/genesis.jsonFinally, your working directory should be like below:
Copy
#tree $ORAI_HOME/.oraid/
$ORAI_HOME/.oraid/
├── config
│ ├── app.toml
│ ├── client.toml
│ ├── config.toml
│ ├── genesis.json
│ ├── node_key.json
│ └── priv_validator_key.json
└── data
└── priv_validator_state.json2 directories, 7 files
Set Up Cosmovisor
(You may also refer to the Cosmovisor installation instructions.) Set up cosmovisor to ensure any future upgrades happen flawlessly. To install Cosmovisor:
Copy
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latestCreate the required directories, and Copy the current oraid binary into the cosmovisor/genesis folder:
Copy
mkdir -p $ORAI_HOME/.oraid/cosmovisor
mkdir -p $ORAI_HOME/.oraid/cosmovisor/genesis
mkdir -p $ORAI_HOME/.oraid/cosmovisor/genesis/bin
mkdir -p $ORAI_HOME/.oraid/cosmovisor/upgrades
cp $GOPATH/bin/oraid $ORAI_HOME/.oraid/cosmovisor/genesis/binSet the environment variables
Copy
echo "# Setup Cosmovisor" >> ${HOME}/.profile
echo "export ORAI_HOME=/root" >> ${HOME}/.profile
echo "export DAEMON_NAME=oraid" >> ${HOME}/.profile
echo "export DAEMON_HOME=$HOME/.oraid" >> ${HOME}/.profile
echo "export DAEMON_ALLOW_DOWNLOAD_BINARIES=false" >> ${HOME}/.profile
echo "export DAEMON_LOG_BUFFER_SIZE=512" >> ${HOME}/.profile
echo "export DAEMON_RESTART_AFTER_UPGRADE=true" >> ${HOME}/.profile
echo "export UNSAFE_SKIP_BACKUP=true" >> ${HOME}/.profile
source ~/.profileTo check your work, ensure the version of cosmovisor and oraid are the same:
Copy
cosmovisor version
oraid versionFinally, your working directory should be like below:
Copy
$ORAI_HOME/.oraid/
├── config
│ ├── app.toml
│ ├── client.toml
│ ├── config.toml
│ ├── genesis.json
│ ├── node_key.json
│ └── priv_validator_key.json
├── cosmovisor
│ ├── current -> /root/.oraid/cosmovisor/genesis
│ ├── genesis
│ │ └── bin
│ │ └── oraid
│ └── upgrades
└── data
└── priv_validator_state.json7 directories, 8 files
Download Chain Data
Download liblz4-tool to handle the compressed file, then Download & Decompress the snapshot:
Copy
cd $ORAI_HOME/.oraid
sudo apt-get install wget liblz4-tool aria2 -y
wget -O oraichain_latest.tar.lz4 https://orai.s3.us-east-2.amazonaws.com/snapshots/oraichain_latest.tar.lz4
lz4 -c -d oraichain_latest.tar.lz4 | tar -x -C $ORAI_HOME/.oraidOptional (problem with binnary version v0.41.6)
In the data folder, if the file upgrade-info.json does not exist, you can ignore this section. Otherwise, open the upgrade-info.json file and check the version.
Copy
cat $ORAI_HOME/.oraid/data/upgrade-info.jsonIf version is not "v0.41.6" then delete this file
Copy
rm $ORAI_HOME/.oraid/data/upgrade-info.jsonEdit config
Copy
vim $ORAI_HOME/.oraid/config/config.tomlUpdate seed address
Copy
seeds = "[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656"Set Up Orai Service
Set up a service to allow cosmovisor to run in the background as well as restart automatically if it runs into any problems:
Copy
cat > /tmp/orai.service <<EOF
[Unit]
Description=Cosmovisor daemon
After=network-online.target
[Service]
Environment="ORAI_HOME=/root"
Environment="DAEMON_NAME=oraid"
Environment="DAEMON_HOME=${ORAI_HOME}/.oraid"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_LOG_BUFFER_SIZE=512"
Environment="UNSAFE_SKIP_BACKUP=true"
User=$USER
ExecStart=$GOPATH/bin/cosmovisor run start --home ${ORAI_HOME}/.oraid --minimum-gas-prices=0.001orai
Restart=always
RestartSec=3
LimitNOFILE=infinity
LimitNPROC=infinity
[Install]
WantedBy=multi-user.target
EOFMove this new file to the systemd directory:
Copy
sudo mv /tmp/orai.service /etc/systemd/system/orai.serviceReload and start the service:
Copy
sudo systemctl daemon-reload
sudo systemctl restart systemd-journald
sudo systemctl start orai
sudo systemctl enable oraiCheck the status of the service:
Copy
sudo systemctl status oraiTo see live logs of the service:
Copy
journalctl -u orai -fCheck your node status
Copy
oraid status
# OR
oraid status 2>&1 | jq .SyncInfo
# OR
curl -s localhost:26657/status | grep "catching_up"
# OR
oraid status 2>&1 | jq .SyncInfo.check_statusIf the catching_up status is false, your node finishes syncing process. Finally, you can delete the snapshot file and backup your config folder. The snapshot file may be outdated; you can reach out to our community for it. Please join the Oraichain validators group on Telegram to discuss ideas and problems!
Last updated