Running a node
Kopi is built using CosmosSDK v0.50. For this reason, Node Operators and Validators alike are required to run Golang version 1.24 and above. This guide is based on a server running Ubuntu 24.04 and will initiate a node on the Kopi Testnet or Mainnet.
Initial configuration
Set environment variables
NODE_NAME="my_node"
GO_VERSION=1.24.3
IP=$(curl -s -4 icanhazip.com)
export DAEMON_HOME="/root/.kopid"
export DAEMON_NAME="kopid"
Install requirements
rm -rf /usr/local/go
wget -q https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz
tar -C /usr/local -xzf go${GO_VERSION}.linux-amd64.tar.gz >/dev/null
export PATH=$PATH:/usr/local/go/bin:/root/go/bin
apt-get -qq update >/dev/null
NEEDRESTART_MODE=a apt-get -qq install make gcc lz4 snapd -y
Install cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latest
rm -rf ~/.kopid/cosmovisor
DAEMON_HOME="/root/.kopid/" DAEMON_NAME="kopid" cosmovisor init /root/go/bin/kopid
sed -i '/^timeout_propose =/c timeout_propose = "300ms"' ${HOME}/.kopid/config/config.toml
sed -i '/^timeout_propose_delta =/c timeout_propose_delta = "50ms"' ${HOME}/.kopid/config/config.toml
sed -i '/^timeout_prevote =/c timeout_prevote = "100ms"' ${HOME}/.kopid/config/config.toml
sed -i '/^timeout_prevote_delta =/c timeout_prevote_delta = "50ms"' ${HOME}/.kopid/config/config.toml
sed -i '/^timeout_precommit =/c timeout_precommit = "100ms"' ${HOME}/.kopid/config/config.toml
sed -i '/^timeout_precommit_delta =/c timeout_precommit_delta = "50ms"' ${HOME}/.kopid/config/config.toml
sed -i '/^timeout_commit =/c timeout_commit = "500ms"' ${HOME}/.kopid/config/config.toml
sed -i '/^minimum-gas-prices =/c minimum-gas-prices = "0ukopi"' ${HOME}/.kopid/config/app.toml
Configuring testnet
Cloning Kopi repository and installing it locally
git clone --quiet --depth 1 --branch v22-rc4 https://github.com/kopi-money/kopi.git ${HOME}/kopi
cd ${HOME}/kopi
make install
Adjusting config files
${HOME}/go/bin/kopid init "${NODE_NAME}" --chain-id kopi-test-6
sed -i '/^persistent_peers =/ c\persistent_peers = "7427da3a793f0c7f08f4034215b6f310e214fb28@9
Download snapshot
curl -L https://kopitest-services.luckystar.asia/kopitest/kopi-test-6_latest.tar.gz | tar -xzf - -C $HOME/.kopid/data
Configuring mainnet
Cloning Kopi repository and installing it locally
git clone --quiet --depth 1 --branch v21 https://github.com/kopi-money/kopi.git ${HOME}/kopi
cd ${HOME}/kopi
make install
Adjusting config files
${HOME}/go/bin/kopid init "${NODE_NAME}" --chain-id luwak-1
sed -i '/^persistent_peers =/ c\persistent_peers = "7708d7d7d38eb39a98427707a0266e974e9c7f40@162.55.220.37@26656,f3d6e39e68673fcf331c3f2022a104ee9ea4bfdb@135.181.108.189:26656"' ${HOME}/.kopid/config/config.tomlStarting the service
Download snapshot:
curl -L https://kopi-services.luckystar.asia/kopi/luwak-1_latest.tar.lz4 | lz4 -d - | tar -xf - -C $HOME/.kopid/data
Installing system service
Create a file called cosmovisor.service with the below input:
echo "[Unit]
Description=Cosmovisor daemon
After=network-online.target
[Service]
Environment="DAEMON_NAME=kopid"
Environment="DAEMON_HOME=/root/.kopid"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=true"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="DAEMON_POLL_INTERVAL=300ms"
Environment="DAEMON_DATA_BACKUP_DIR=/root/.kopid"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="DAEMON_PREUPGRADE_MAX_RETRIES=0"
User=root
ExecStart=/root/go/bin/cosmovisor run start
Restart=always
RestartSec=3
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target" >> cosmovisor.service
mv cosmovisor.service /etc/systemd/system/cosmovisor.service
sudo systemctl daemon-reload
sudo systemctl enable cosmovisor
sudo systemctl start cosmovisor
You can now monitor your node by using the following command command:
journalctl -f -u cosmovisor.service --output cat
The following command executes all the shown commands at once:
curl -s https://data.kopi.money/install-test.sh | sh
If you need to restart the Node for whatever reason you can run the following command:
sudo systemctl restart cosmovisor && journalctl -f -u cosmovisor.service --output cat
To stop your Node, simply run:
sudo systemctl stop cosmovisor
Last updated