Copy sudo apt-get update
sudo apt-get install clang cmake build-essential curl git jq lz4 aria2 unzip wget
sudo curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.22.0.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/gobinpath.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | sudo tee /etc/profile.d/gopath.sh)
Copy TAG=v0.3.2
BASE_DIR=/data
cd $BASE_DIR
git clone -b v0.3.2 https://github.com/0glabs/0g-storage-node.git
cd $BASE_DIR/0g-storage-node
git submodule update --init
cargo build --release
Copy BASE_DIR=/data/0g-storage-node
LOG_DIR="$BASE_DIR/run/log"
LOG_CONFIG_FILE="$BASE_DIR/run/log_config"
LOG_SYNC_BLOCK=802
MINE_CONTRACT="0x85F6722319538A805ED5733c5F4882d96F1C7384"
LOG_CONTRACT_ADDRESS="0x8873cc79c5b3b5666535C825205C9a128B1D75F1"
WATCH_LOOP_WAIT_TIME_MS=10000
PUBLIC_IP= # wget -qO- eth0.me
sed -i '
s|# network_dir = "network"|network_dir = "network"|g
s|# network_enr_tcp_port = 1234|network_enr_tcp_port = 1234|g
s|# network_enr_udp_port = 1234|network_enr_udp_port = 1234|g
s|# network_libp2p_port = 1234|network_libp2p_port = 1234|g
s|# network_discovery_port = 1234|network_discovery_port = 1234|g
s|# rpc_enabled = true|rpc_enabled = true|g
s|# db_dir = "db"|db_dir = "db"|g
s|# log_config_file = "log_config"|log_config_file = "log_config"|g
s|# log_directory = "log"|log_directory = "log"|g
s|network_enr_address = ""|network_enr_address = "'"$PUBLIC_IP"'"|g
s|^log_sync_start_block_number = .*|log_sync_start_block_number = '"$LOG_SYNC_BLOCK"'|g
s|^log_config_file = .*|log_config_file = "'"$LOG_CONFIG_FILE"'"|g
s|^log_directory = .*|log_directory = "'"$LOG_DIR"'"|g
s|^mine_contract_address = .*|mine_contract_address = "'"$MINE_CONTRACT"'"|g
s|^log_contract_address = .*|log_contract_address = "'"$LOG_CONTRACT_ADDRESS"'"|g
s|^watch_loop_wait_time_ms = .*|watch_loop_wait_time_ms = '"$WATCH_LOOP_WAIT_TIME_MS"'|g
' $BASE_DIR/run/config.toml
# change blockchain_rpc_endpoint
BLOCKCHAIN_RPC_ENDPOINT="https://storage.0gnode.xyz/"
sed -i 's|^blockchain_rpc_endpoint = ".*"|blockchain_rpc_endpoint = "'"$BLOCKCHAIN_RPC_ENDPOINT"'"|' $BASE_DIR/run/config.toml
Copy BASE_DIR=/data/0g-storage-node
sudo tee /etc/systemd/system/0gstorage.service > /dev/null << EOF
[Unit]
Description=0g storage service
After=network-online.target
[Service]
User=$USER
Type=simple
ExecStart=$BASE_DIR/target/release/zgs_node --config $BASE_DIR/run/config.toml
Restart=on-failure
WorkingDirectory=$BASE_DIR
SyslogIdentifier=0gstorage
LimitNOFILE=65545
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable 0gstorage.service
sudo systemctl start 0gstorage.service
sudo journalctl -u 0gstorage.service -f -o cat