Using Cosmovisor with und: Quick Start
Note
This guide is for operators already running a node who have not yet implemented Cosmovisor. For new nodes, please see the Install und with Cosmovisor documentation.
cosmovisor can be used for all node types (sentries, RPCs, seeds etc.), not just validator nodes.
See Cosmos SDK's Cosmovidor Docs for full documentation.
This is a quick-start guide specifically for getting und up and running using cosmovisor, and is aimed at operators who are already running a FUND node.
It is recommended that node operators fully read and understand the official documentation above before proceeding.
Note
The above documentation states that go get github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor should be run to install cosmovisor. However, this is not currently possible due to issue 11305. As such, this guide directly downloads the cosmovisor binary from the Cosmos SDK repo. If you prefer to install via go, you will need to install go v1.18, make, git, and standard build tools such as g++, and build cosmovisor v1.2.0 from source, ignoring step 1 below.
This guide assumes the und binary is running with systemd and that the user logging in via SSH is a sudoer. It also assumes that the .und_mainchain home directory is the default $HOME/.und_mainchain.
1. Download & install cosmovisor
mkdir $HOME/tmp && cd $HOME/tmp
wget https://github.com/cosmos/cosmos-sdk/releases/download/cosmovisor%2Fv1.5.0/cosmovisor-v1.5.0-linux-amd64.tar.gz
tar -zxvf cosmovisor-v1.5.0-linux-amd64.tar.gz
sudo mv cosmovisor /usr/local/bin/cosmovisorNote: Installing using go install as per the official guide will install cosmovisor in $GOPATH/bin (usually $HOME/go/bin) not /usr/local/bin.
IMPORTANT
if your .und_mainchain is located somewhere other than $HOME/.und_manichain, replace all instances in the commands below with the full, absolute path to your .und_mainchain directory, for example:
/mnt/mounted_data_volume/path/to/.und_mainchain2. Set up cosmovisor dirs
mkdir -p $HOME/tmp && cd $HOME/tmp
wget https://github.com/unification-com/mainchain/releases/download/1.5.1/und_v1.5.1_linux_x86_64.tar.gz
tar -zxvf und_v1.5.1_linux_x86_64.tar.gz
mkdir -p $HOME/.und_mainchain/cosmovisor/genesis/bin
mv und $HOME/.und_mainchain/cosmovisor/genesis/bin
$HOME/.und_mainchain/cosmovisor/genesis/bin/und version --log_level=""Create a UND_COSMOVISOR_ENV env file for systemd:
nano $HOME/.und_mainchain/cosmovisor/UND_COSMOVISOR_ENVAdd:
DAEMON_NAME=und
DAEMON_HOME=$HOME/.und_mainchain
DAEMON_RESTART_AFTER_UPGRADE=trueOptionally add a value for DAEMON_RESTART_DELAY (must be in seconds, e.g. 5s)
DAEMON_RESTART_DELAY=5sSee https://github.com/cosmos/cosmos-sdk/blob/main/cosmovisor/README.md#command-line-arguments-and-environment-variables for other environment variables.
3. Edit systemd service file
Stop the service
sudo systemctl stop undOpen the service file in a text editor
sudo nano /etc/systemd/system/und.serviceAdd the EnvironmentFile directive to the [Service] section, for example:
EnvironmentFile=/full/path/to/.und_mainchain/cosmovisor/UND_COSMOVISOR_ENVEdit the ExecStart directive, replacing /usr/local/bin/und with /usr/local/bin/cosmovisor run, for example:
change
ExecStart=/usr/local/bin/und startto:
ExecStart=/usr/local/bin/cosmovisor run startIf you have installed via go install or built/installed from source, the path might be something like /home/username/go/bin/cosmovisor
Note
Any flags for und can be passed the same as previously, for example:
ExecStart=/usr/local/bin/cosmovisor run start --home /path/to/my/.und_mainchain4. restart the und service
Reload systemd and start the und service
sudo systemctl daemon-reload
sudo systemctl start undCheck:
sudo journalctl -u und -fThe logs should be prefixed with cosmovisor[PID]

