Nodes
Node Operators

Sei Node Setup Guide

System Requirements

CPU CoresRAMDisk
16 cores64GB1TB NVMe

Build Version and Genesis Table

NetworkVersionChain IDGenesis URL
Mainnetpacific-1Genesis
Testnetatlantic-2Genesis
Devnetarctic-1Genesis

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]

  1. Remove old Go version if necessary:

    rm -rvf /usr/local/go/
  2. 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
  3. 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

  1. 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://example.com/genesis.json
        MONIKER="your node name"
  2. 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

  1. Initialize the node:

    seid init $MONIKER --chain-id $CHAIN_ID
  2. 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

  1. 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
  2. Enable sei-db (dependent on snapshot provider):

    sed -i 's/^sc-enable = false/sc-enable = true/' ~/.sei/config/app.toml

Create Systemd Service

  1. Create the service file:

    nano /etc/systemd/system/seid.service
  2. 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.

  1. Download snapshot:

    wget -O $SNAP_URL $SNAP
  2. Stop the node (if running as systemd service):

    systemctl stop seid
  3. Unpack snapshot to location:

    lz4 -c -d $SNAP | tar -x -C $HOME/.sei
  4. Start service and confirm operation:

    systemctl start seid
    systemctl status seid
  5. 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 and pruning="nothing" in app.toml.
  • State Sync Nodes: Provide snapshot data for other nodes to bootstrap. Set a value greater than zero for snapshot-interval under [statesync] in app.toml.
  • Validator Nodes: Secure the chain by proposing and signing blocks. Set mode=validator in config.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: P2P
  • 26657: RPC
  • 1317: REST
  • 9090 : GRPC
  • 8545: EVM RPC
  • 8546: EVM Websocket
  • 26660: Tendermint Prometheus Metrics Exporter
📘

The standard websocket rides on the same connection as the RPC server. Example: [non-TLS] wss://localhost:26657/websocket.