For mainnet, it's recommended to use Cosmovisor to run your node.
Setting up Cosmovisor is relatively straightforward. However, it does expect certain environment variables and folder structure to be set.
Cosmovisor allows you to download binaries ahead of time for chain upgrades, meaning that you can do zero (or close to zero) downtime chain upgrades. It's also useful if your local timezone means that a chain upgrade will fall at a bad time.
Rather than having to do stressful ops tasks late at night, it's always better if you can automate them away, and that's what Cosmovisor tries to do.
Install
First, go and get cosmovisor (recommended approach):
# to target a specific version:goinstallgithub.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@v1.0.0
Add environment variables to your shell
Some environment variables must be set to appropriate values for each node and each network.
echo"export CHAIN_REPO=https://github.com/sunriselayer/sunrise">>~/.bash_profileecho"export CHAIN_REPO_BRANCHE=main">>~/.bash_profileecho"export TARGET=sunrised">>~/.bash_profileecho"export TARGET_HOME=.sunrise">>~/.bash_profile# This value will be different for each node.echo"export MONIKER=<your-moniker>">>~/.bash_profile# This value is example of mainnet.echo"export CHAIN_ID=sunrise-1">>~/.bash_profileecho"export GENESIS_FILE_URL=https://raw.githubusercontent.com/sunriselayer/network/main/sunrise-1/genesis.json">>~/.bash_profileecho"export SETUP_NODE_CONFIG_ENV=TRUE">>~/.bash_profileecho"export SETUP_NODE_ENV=TRUE">>~/.bash_profileecho"export SETUP_NODE_MASTER=TRUE">>~/.bash_profileecho"export DAEMON_NAME=\$TARGET">>~/.bash_profile# This value will be different for each node.echo"export DAEMON_HOME=$HOME/.sunrise">>~/.bash_profileecho"export DAEMON_ALLOW_DOWNLOAD_BINARIES=true">>~/.bash_profileecho"export DAEMON_LOG_BUFFER_SIZE=512">>~/.bash_profileecho"export DAEMON_RESTART_AFTER_UPGRADE=true">>~/.bash_profileecho"export UNSAFE_SKIP_BACKUP=true">>~/.bash_profile
Then source your profile to have access to these variables:
Commands sent to Cosmovisor are sent to the underlying binary. For example, cosmovisor version is the same as typing sunrised version. Nevertheless, just as we would manage sunrised using a process manager, we would like to make sure Cosmovisor is automatically restarted if something happens, for example, an error or reboot. First, create the service file:
sudovi/lib/systemd/system/cosmovisor.service
Change the contents of the below to match your setup
A description of what the environment variables do can be found here. Change them depending on your setup.
Start Cosmovisor
If syncing from a snapshot, do not start Cosmovisor yet. Download the snapshot and extract it to $HOME/.sunrise/data. Finally, enable the service and start it.