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 -y
Install Dependencies [use a package manager like apt
]
apt install nano make build-essential gcc git jq chrony tar curl lz4 wget -y
Install 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
~/.profile
or~/.bashrc
to 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=0
andpruning="nothing"
inapp.toml
. - State Sync Nodes: Provide snapshot data for other nodes to bootstrap. Set a value greater than zero for
snapshot-interval
under[statesync]
inapp.toml
. - Validator Nodes: Secure the chain by proposing and signing blocks. Set
mode=validator
inconfig.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
.