# 0g Node Installation Guide **Published by:** [@Nelson](https://paragraph.com/@nelson-5/) **Published on:** 2024-08-06 **URL:** https://paragraph.com/@nelson-5/0g-node-installation-guide ## Content Update Dependencies:To successfully install new libraries and tools, it is better to update the old dependenciessudo apt update sudo apt install curl git jq build-essential gcc unzip wget lz4 -y Install GO:cd $HOME && \\ ver="1.21.3" && \\ wget "<https://golang.org/dl/go$ver.linux-amd64.tar.gz>" && \\ sudo rm -rf /usr/local/go && \\ sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" && \\ rm "go$ver.linux-amd64.tar.gz" && \\ echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && \\ source $HOME/.bash_profile && \\ go version Install binary:git clone -b v0.1.0 <https://github.com/0glabs/0g-chain.git> ./0g-chain/networks/testnet/install.sh source .profile Set variables (you can personalize them):Variables will be used further for convenienceecho 'export MONIKER="type_your_moniker_nodebrand"' >> ~/.bash_profile echo 'export CHAIN_ID="zgtendermint_16600-1"' >> ~/.bash_profile echo 'export WALLET_NAME="wallet"' >> ~/.bash_profile echo 'export RPC_PORT="26657"' >> ~/.bash_profile source $HOME/.bash_profile Initialize the node:cd $HOME 0gchaind config chain-id $CHAIN_ID 0gchaind init $MONIKER --chain-id $CHAIN_ID 0gchaind config node tcp://localhost:$RPC_PORT 0gchaind config keyring-backend os Install current release:wget -P ~/.0gchain/config <https://github.com/0glabs/0g-chain/releases/download/v0.1.0/genesis.json> Configure config.toml file:PEERS="" && \\ SEEDS="c4d619f6088cb0b24b4ab43a0510bf9251ab5d7f@54.241.167.190:26656,44d11d4ba92a01b520923f51632d2450984d5886@54.176.175.48:26656,f2693dd86766b5bf8fd6ab87e2e970d564d20aff@54.193.250.204:26656,f878d40c538c8c23653a5b70f615f8dccec6fb9f@54.215.187.94:26656" && \\ sed -i -e "s/^seeds *=.*/seeds = \\"$SEEDS\\"/; s/^persistent_peers *=.*/persistent_peers = \\"$PEERS\\"/" $HOME/.0gchain/config/config.toml Set the config:EXTERNAL_IP=$(wget -qO- eth0.me) \\ PROXY_APP_PORT=26658 \\ P2P_PORT=26656 \\ PPROF_PORT=6060 \\ API_PORT=1317 \\ GRPC_PORT=9090 \\ GRPC_WEB_PORT=9091 Set the port and address:sed -i \\ -e "s/\\(proxy_app = \\"tcp:\\/\\/\\)\\([^:]*\\):\\([0-9]*\\).*/\\1\\2:$PROXY_APP_PORT\\"/" \\ -e "s/\\(laddr = \\"tcp:\\/\\/\\)\\([^:]*\\):\\([0-9]*\\).*/\\1\\2:$RPC_PORT\\"/" \\ -e "s/\\(pprof_laddr = \\"\\)\\([^:]*\\):\\([0-9]*\\).*/\\1localhost:$PPROF_PORT\\"/" \\ -e "/\\[p2p\\]/,/^\\[/{s/\\(laddr = \\"tcp:\\/\\/\\)\\([^:]*\\):\\([0-9]*\\).*/\\1\\2:$P2P_PORT\\"/}" \\ -e "/\\[p2p\\]/,/^\\[/{s/\\(external_address = \\"\\)\\([^:]*\\):\\([0-9]*\\).*/\\1${EXTERNAL_IP}:$P2P_PORT\\"/; t; s/\\(external_address = \\"\\).*/\\1${EXTERNAL_IP}:$P2P_PORT\\"/}" \\ $HOME/.0gchain/config/config.toml sed -i \\ -e "/\\[api\\]/,/^\\[/{s/\\(address = \\"tcp:\\/\\/\\)\\([^:]*\\):\\([0-9]*\\)\\(\\".*\\)/\\1\\2:$API_PORT\\4/}" \\ -e "/\\[grpc\\]/,/^\\[/{s/\\(address = \\"\\)\\([^:]*\\):\\([0-9]*\\)\\(\\".*\\)/\\1\\2:$GRPC_PORT\\4/}" \\ -e "/\\[grpc-web\\]/,/^\\[/{s/\\(address = \\"\\)\\([^:]*\\):\\([0-9]*\\)\\(\\".*\\)/\\1\\2:$GRPC_WEB_PORT\\4/}" $HOME/.0gchain/config/app.toml Set the pruning:sed -i.bak -e "s/^pruning *=.*/pruning = \\"custom\\"/" $HOME/.0gchain/config/app.toml sed -i.bak -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \\"100\\"/" $HOME/.0gchain/config/app.toml sed -i.bak -e "s/^pruning-interval *=.*/pruning-interval = \\"10\\"/" $HOME/.0gchain/config/app.toml Set the gas price:sed -i "s/^minimum-gas-prices *=.*/minimum-gas-prices = \\"0ua0gi\\"/" $HOME/.0gchain/config/app.toml Set indexer:sed -i "s/^indexer *=.*/indexer = \\"kv\\"/" $HOME/.0gchain/config/config.toml Create a service file:sudo tee /etc/systemd/system/ogd.service > /dev/null <<EOF [Unit] Description=OG Node After=network.target [Service] User=$USER Type=simple ExecStart=$(which 0gchaind) start --home $HOME/.0gchain Restart=10 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF Install addrbook:curl -Ls <https://snapshots.switchgear.top/snapshots/testnet/zero-gravity/addrbook.json> > $HOME/.0gchain/config/addrbook.json Install Spanshot:To speed up the process of syncing the node with the network, you should install a snapshotsudo systemctl stop ogd cp $HOME/.0gchain/data/priv_validator_state.json $HOME/.0gchain/priv_validator_state.json.backup rm -rf $HOME/.0gchain/data curl -L <http://snapshots.switchgear.top/snapshots/testnet/zero-gravity/zgtendermint_16600-1_latest.tar.lz4> | tar -Ilz4 -xf - -C $HOME/.0gchain mv $HOME/.0gchain/priv_validator_state.json.backup $HOME/.0gchain/data/priv_validator_state.json sudo systemctl restart ogd && sudo journalctl -u ogd -f -o cat Update peersUpdating peers before connecting a node provides up-to-date information about available and verified nodes on the network, which improves the establishment of initial connections and increases the security and efficiency of the nodePEERS=$(curl -s --max-time 3 --retry 2 --retry-connrefused "<https://snapshots.switchgear.top/snapshots/testnet/zero-gravity/peers.txt>") if [ -z "$PEERS" ]; then echo "No peers were retrieved from the URL." else echo -e "\\nPEERS: "$PEERS"" sed -i "s/^persistent_peers *=.*/persistent_peers = "$PEERS"/" "$HOME/.0gchain/config/config.toml" echo -e "\\nConfiguration file updated successfully.\\n" fi Start node:sudo systemctl daemon-reload && \\\\ sudo systemctl enable ogd && \\\\ sudo systemctl restart ogd && sudo journalctl -u ogd -f -o cat Check node synchronization:If you get false, you can install the validator. If it is true, you have to wait.0gchaind status | jq .sync_info ## Publication Information - [@Nelson](https://paragraph.com/@nelson-5/): Publication homepage - [All Posts](https://paragraph.com/@nelson-5/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@nelson-5): Subscribe to updates - [Twitter](https://twitter.com/valid_nelson): Follow on Twitter