Sei Node Setup Guide
System Requirements
| CPU Cores | RAM | Disk |
|---|---|---|
| 16 cores | 64GB | 1TB NVMe |
Build Version and Genesis Table
| Network | Version | Chain ID | Genesis URL |
|---|---|---|---|
| Mainnet | pacific-1 | Genesis | |
| Testnet | atlantic-2 | Genesis | |
| Devnet | arctic-1 | Genesis |
Getting Started
The following is intended for Debian-based systems. Others like MacOS or Archlinux will differ slightly
Update and Upgrade System Packages
apt update && apt upgrade -yInstall Dependencies [use a package manager like apt]
apt install nano make build-essential gcc git jq chrony tar curl lz4 wget -yInstall Golang [do not use a package manager for this step]
-
Remove old Go version if necessary:
rm -rvf /usr/local/go/ -
Install Golang:
wget https://golang.org/dl/go1.21.1.linux-amd64.tar.gz tar -C /usr/local -xzf go1.21.1.linux-amd64.tar.gz rm go1.21.1.linux-amd64.tar.gz -
Configure PATH and GOPATH (add to
~/.profileor~/.bashrcto make persistent):export GOROOT=/usr/local/go export GOPATH=$HOME/go export GO111MODULE=on export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
Install seid
-
Define the variables for your network and (optional) a moniker or name to assign your node: Replace these with real values, found in the reference table above
VERSION=v1.2.3 CHAIN_ID=mainnet-1 GENESIS_URL=https://raw.githubusercontent.com/sei-protocol/testnet/main/pacific-1/genesis.json MONIKER="your node name" -
Clone the repository and install:
cd ~/ && git clone https://github.com/sei-protocol/sei-chain.git cd sei-chain git checkout $VERSION make install
Initialize Node
-
Initialize the node:
seid init $MONIKER --chain-id $CHAIN_ID -
Download and place genesis file:
wget -O genesis.json $GENESIS_URL mv genesis.json ~/.sei/config
For light-client setup stop here, and add an RPC connection to client.toml as a final step.
Configure Node
-
Set persistent peers:
sed -i '/^# Comma separated list of nodes to keep persistent connections to$/,/^$/ s/^persistent-peers = ""$/persistent-peers = "de8b1df70c7a8817ed121908e7c6e6059f4238f9@3.142.50.176:26656,7a962f3a928ca4e0e58355e6e798aba1ea253272@34.242.85.117:26656"/' ~/.sei/config/config.toml -
Enable
sei-db(dependent on snapshot provider, must align with the format in which it was provided):sed -i 's/^sc-enable = false/sc-enable = true/' ~/.sei/config/app.toml
Create Systemd Service
-
Create the service file:
nano /etc/systemd/system/seid.service -
Add the following content:
[Unit] Description="Sei Daemon" After=network-online.target [Service] User=<USER> ExecStart=/home/<USER>/go/bin/seid start Restart=always RestartSec=3 LimitNOFILE=8192 [Install] WantedBy=multi-user.target
Download & Apply Snapshot
Find a snapshot from a provider like Polkachu (opens in a new tab), and either download, or define $SNAP_URL with it.
-
Download snapshot:
wget -O $SNAP_URL $SNAP -
Stop the node (if running as systemd service):
systemctl stop seid -
Unpack snapshot to location:
lz4 -c -d $SNAP | tar -x -C $HOME/.sei -
Start service and confirm operation:
systemctl start seid systemctl status seid -
Remove snapshot archive:
rm -v $SNAP
Appendix
Node Types
- RPC / Full Nodes: Used for querying data or interacting with the chain. Default settings run RPC / full nodes.
- Archive Nodes: Maintain full state from genesis. Set
min-retain-blocks=0andpruning="nothing"inapp.toml. - State Sync Nodes: Provide snapshot data for other nodes to bootstrap. Set a value greater than zero for
snapshot-intervalunder[statesync]inapp.toml. - Validator Nodes: Secure the chain by proposing and signing blocks. Set
mode=validatorinconfig.toml.
Default Service Ports
The standard service ports can be manually configured in $HOME/.sei/config/config.toml and $HOME/.sei/config/app.toml:
26656: P2P26657: RPC1317: REST9090: GRPC8545: EVM RPC8546: EVM Websocket26660: Tendermint Prometheus Metrics Exporter
The standard websocket rides on the same connection as the RPC server. Example: [non-TLS] ws://localhost:26657/websocket.