| title | Node Operations on Sei | ||||||
|---|---|---|---|---|---|---|---|
| sidebarTitle | Home | ||||||
| description | Deploy and maintain Sei Network infrastructure with comprehensive guides for validators, RPC nodes, and archive nodes, including hardware requirements, installation steps, and operational best practices. | ||||||
| keywords |
|
Power the Sei Network Infrastructure
Comprehensive guides for running, maintaining, and optimizing Sei network nodes. Whether you're setting up a validator, an RPC node, or a relayer, you'll find detailed instructions and best practices to ensure optimal performance and security.
<iframe src="https://sei-widgets.vercel.app/version-table" style={{ width: "100%", minHeight: "320px", border: "0" }} loading="lazy" title="Sei network versions" />Live binary versions, genesis, and seed peers — see the network versions widget or the technical reference.
| Component | Required |
|---|---|
| CPU | 16 cores (Intel Xeon/Core i7/i9 or AMD Epyc/Ryzen) |
| RAM | 256 GB DDR5 or better |
| Storage | 2 TB NVMe SSD (high IOPS required) |
| Network | 2 Gbps with low latency |
sudo apt update && sudo apt upgrade -ysudo apt install make gcc git jq chrony curl lz4 wget tar build-essential -ysudo timedatectl set-timezone UTC
sudo systemctl enable --now chronyd
timedatectlSuggested Version: Go 1.24.x (required for seid v6.3+)
# Check for existing Go installation
go version
# Download and install Go 1.24.x
wget https://go.dev/dl/go1.24.5.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.24.5.linux-amd64.tar.gz
# Add Go to your environment variables
echo 'export PATH=$PATH:/usr/local/go/bin' >> $HOME/.bashrc
source $HOME/.bashrc
# Verify installation
go version# Clone repository and install
git clone https://github.com/sei-protocol/sei-chain.git
cd sei-chain
git checkout <version-tag> # Replace with specific version
make install
# Verify installation
seid versionSee Network Versions table above for current recommended version.
Official Docker images are available at GitHub Container Registry.# Pull the latest version
docker pull ghcr.io/sei-protocol/sei:latest
# Or pull a specific version (recommended)
docker pull ghcr.io/sei-protocol/sei:v6.3.1Available architectures: linux/amd64 and linux/arm64.
If you encounter an error like `command not found: seid`, you may need to set your GOPATH environment variable.Add the following to your ~/.bashrc or ~/.zshrc:
export GOPATH=$(go env GOPATH)
export PATH=$PATH:$GOPATH/binThen reload your shell with source ~/.bashrc or source ~/.zshrc.
For more information see here.
Default init mode is full (RPC/P2P bind to all interfaces). For validator or seed nodes, use --mode validator or --mode seed so RPC and P2P bind to localhost only. See the Validator Operations Guide for the full validator init example.
Peers can be found here -
- mainnet (pacific-1):
- testnet (atlantic-2):
# Initialize node (default mode is full: RPC/P2P bind to all interfaces)
# For validator nodes, use: seid init <your-moniker> --chain-id <chain-id> --mode validator
seid init <your-moniker> --chain-id <chain-id>
# Genesis is written automatically for known networks (mainnet and testnets); no download needed.
# Configure peers in config.toml.
PEERS="<comma-separated-peer-list>"
#Set persistent peers in config.toml
sed -i 's/persistent-peers = .*/persistent-peers = "'$PEERS'"/' ~/.sei/config/config.toml# Set minimum gas price (recommended)
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0usei\"/" $HOME/.sei/config/app.toml
# Tune mempool settings
sed -i \
-e 's/^keep-invalid-txs-in-cache = .*/keep-invalid-txs-in-cache = true/' \
-e 's/^ttl-duration = .*/ttl-duration = "5s"/' \
-e 's/^ttl-num-blocks = .*/ttl-num-blocks = 5/' \
$HOME/.sei/config/config.toml
# Set Concurrent Workers to 500 and enable occ
sed -i -e "s/^#concurrency-workers *=.*/concurrency-workers = 500/" $HOME/.sei/config/app.toml
sed -i -e "s/^occ-enabled *=.*/occ-enabled = true/" $HOME/.sei/config/app.tomlsed -i 's/^ss-keep-recent = [0-9]*/ss-keep-recent = 0/' ~/.sei/config/app.tomlAn archive node maintains the complete historical record of the chain. This requires disabling state sync and starting with a pre-existing database using a "snapshot".
1. Disable State Sync — In $HOME/.sei/config/config.toml , modify the [statesync] section:
# State sync configuration
[statesync]
enable = false2. Configure Archive Node Peers — To sync from the height your snapshot was created at, you need peers retaining a large amount of historical blocks. The node will require specific peers during initial sync, which can be changed at a later time.
For optimal transaction handling and resource management, it is recommended to update the mempool settings in your config.toml file.
# Mempool configuration settings
[mempool]
# Broadcast transactions to other nodes
broadcast = true
# Maximum number of transactions in the mempool
size = 5000
# Limit the total size of all txs in the mempool.
max-txs-bytes = 10737418240
# Size of the cache (used to filter duplicate transactions)
cache-size = 10000
# Do not remove invalid transactions from the cache
keep-invalid-txs-in-cache = true
# Maximum size of a single transaction
max-tx-bytes = 2048576
# Maximum size of a batch of transactions to send to a peer
max-batch-bytes = 0
# Maximum length of time a transaction can remain in the mempool
ttl-duration = "3s"
# Maximum number of blocks a transaction can remain in the mempool
ttl-num-blocks = 5
tx-notify-threshold = 0
check-tx-error-blacklist-enabled = true
check-tx-error-threshold = 50
pending-size = 5000
max-pending-txs-bytes = 1073741824
pending-ttl-duration = "3s"
pending-ttl-num-blocks = 5If you see an error such as panic: recovered: runtime error: integer divide by zero it means you can’t start nodes straight from the genesis file. Instead, sync to the block tip via state sync or using a snapshot.
For production deployments, configure a systemd service to ensure your node restarts automatically:
# Create the systemd service file
sudo tee /etc/systemd/system/seid.service > /dev/null << EOF
[Unit]
Description=Sei Node
After=network-online.target
[Service]
User=$USER
ExecStart=$(which seid) start
Restart=always
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
# Reload systemd, enable and start the service
sudo systemctl daemon-reload
sudo systemctl enable seid
sudo systemctl start seidCheck your node's status with these commands:
# Check sync status
seid status | jq .SyncInfo
# Monitor logs in real-time
journalctl -u seid -f -o cat
# Check validator status (if running a validator)
seid query staking validator $(seid keys show <your_key> --bech val -a)Common Issues & Solutions
- Verify sufficient disk space - Ensure stable network connectivity - Confirm system time is synchronized - Consider using state sync for initial setup - Monitor system resources (CPU, RAM, I/O) - Evaluate disk performance and network bandwidth - Adjust mempool and peer settings if needed Complete guide to setting up and running a Sei node with hardware requirements and configuration steps. Specialized instructions for validators, including staking, commission settings, and security best practices. Full reference for `app.toml`, `config.toml`, and `client.toml` shipped by the latest `seid` release. Optimize your node's performance with advanced settings and monitoring tools. Run with RocksDB instead of the default backend. Detailed technical specifications, API endpoints, and commands for node operators.