# 0g Storage KV Node Installtion Guide **Published by:** [@Nelson](https://paragraph.com/@nelson-5/) **Published on:** 2024-08-06 **URL:** https://paragraph.com/@nelson-5/0g-storage-kv-node-installtion-guide ## Content Update Dependenciessudo apt-get update sudo apt-get install clang cmake build-essential Install Rustcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh rustc --version Install GO If Not Installed# install the latest GO cd $HOME && \ ver="1.22.4" && \ 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 Build Storage KV From Source Codegit clone -b v1.1.0-testnet https://github.com/0glabs/0g-storage-kv.git cd 0g-storage-kv git submodule update --init cargo build --release Copy the example config_example.toml & rename to config.tomlcp $HOME/0g-storage-kv/run/config_example.toml $HOME/0g-storage-kv/run/config.toml Set Parameters For Storage NodeSTORAGE_PORT=$(grep -oP '(?<=rpc_listen_address = "0.0.0.0:)\d+(?=")' $HOME/0g-storage-node/run/config.toml) ZGS_LOG_SYNC_BLOCK=$(grep -oP '(?<=log_sync_start_block_number = )\d+' $HOME/0g-storage-node/run/config.toml) STORAGE_RPC_ENDPOINT=http://$(wget -qO- eth0.me):$STORAGE_PORT BLOCKCHAIN_RPC_ENDPOINT=$(sed -n 's/blockchain_rpc_endpoint = "\([^"]*\)"/\1/p' $HOME/0g-storage-node/run/config.toml) LOG_CONTRACT_ADDRESS=$(sed -n 's/log_contract_address = "\([^"]*\)"/\1/p' $HOME/0g-storage-node/run/config.toml) MINE_CONTRACT_ADDRESS=$(sed -n 's/mine_contract_address = "\([^"]*\)"/\1/p' $HOME/0g-storage-node/run/config.toml) JSON_PORT=$(sed -n '/\[json-rpc\]/,/^address/ s/address = "0.0.0.0:\([0-9]*\)".*/\1/p' $HOME/.0gchain/config/app.toml) JSON_RPC_ENDPOINT=http://$(wget -qO- eth0.me):$JSON_PORT echo -e "\nSTORAGE_RPC_ENDPOINT: $STORAGE_RPC_ENDPOINT\nLOG_CONTRACT_ADDRESS: $LOG_CONTRACT_ADDRESS\nMINE_CONTRACT_ADDRESS: $MINE_CONTRACT_ADDRESS\nBLOCKCHAIN_RPC_ENDPOINT: $BLOCKCHAIN_RPC_ENDPOINT\nJSON_RPC_ENDPOINT: $JSON_RPC_ENDPOINT\nZGS_LOG_SYNC_BLOCK: $ZGS_LOG_SYNC_BLOCK\n\n" Use sed to update these parameters:sed -i "s|rpc_listen_address = .*|rpc_listen_address = \"0.0.0.0:6789\"|" $HOME/0g-storage-kv/run/config.toml sed -i "s|zgs_node_urls = .*|zgs_node_urls = \"$STORAGE_RPC_ENDPOINT\"|" $HOME/0g-storage-kv/run/config.toml sed -i "s|log_config_file = .*|log_config_file = \"$HOME/0g-storage-kv/run/log_config\"|" $HOME/0g-storage-kv/run/config.toml sed -i "s|blockchain_rpc_endpoint = .*|blockchain_rpc_endpoint = \"$BLOCKCHAIN_RPC_ENDPOINT\"|" $HOME/0g-storage-kv/run/config.toml sed -i "s|log_contract_address = .*|log_contract_address = \"$LOG_CONTRACT_ADDRESS\"|" $HOME/0g-storage-kv/run/config.toml sed -i "s|log_sync_start_block_number = .*|log_sync_start_block_number = $ZGS_LOG_SYNC_BLOCK|" $HOME/0g-storage-kv/run/config.toml Create zgs-kv Service (storage KV) To Run In The Backgroundsudo tee /etc/systemd/system/zgs-kv.service > /dev/null <<EOF [Unit] Description=ZGS-KV Node After=network.target [Service] User=$USER WorkingDirectory=$HOME/0g-storage-kv/run ExecStart=$HOME/0g-storage-kv/target/release/zgs_kv --config $HOME/0g-storage-kv/run/config.toml Restart=on-failure RestartSec=10 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF Start Storage KV Nodesudo systemctl daemon-reload && \ sudo systemctl enable zgs-kv && \ sudo systemctl restart zgs-kv View Storage KV Logsudo journalctl -u zgs-kv.service -f Stop Storage KV Node If You Wishsudo systemctl stop zgs-kv ## 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