Skip to main content

Fullnode

This guide provides step-by-step instructions for setting up a NEAR Protocol full node on Mainnet. A full node keeps a complete copy of the blockchain and is essential for network health and decentralization.


Step 1: Prepare Your Environment

Hardware Requirements

Ensure your server meets the recommended hardware specifications for a reliable node.

Install Dependencies & Rust

Update your system and install the necessary packages for building nearcore.

sudo apt update && sudo apt upgrade -y
sudo apt install -y git cmake gcc g++ python3 protobuf-compiler libssl-dev pkg-config clang llvm jq ccze

Next, install Rust and Cargo. When prompted, select the default installation option.

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

Step 2: Install NEAR CLI

Install the NEAR Command Line Interface (CLI), which is used to interact with the NEAR network.

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/near/near-cli-rs/releases/latest/download/near-cli-rs-installer.sh | sh
source $HOME/.cargo/env

Step 3: Compile the NEAR Node Software

Clone the nearcore repository, check out the latest stable version, and compile the binary. This process is resource-intensive and may take some time.

cd ~
git clone https://github.com/near/nearcore
cd nearcore
NEARCORE_VERSION=$(curl -s https://api.github.com/repos/near/nearcore/releases/latest | jq -r .tag_name)
git checkout $NEARCORE_VERSION
make release

Set your shell environment to use mainnet by default for all subsequent commands.

echo 'export NEAR_ENV=mainnet' >> ~/.bashrc
source ~/.bashrc

Step 4: Initialize the Node

Run the initialization command to create the necessary configuration files and directory structure (~/.near).

cd ~/nearcore
./target/release/neard init --chain-id mainnet --download-genesis --download-config

Step 5: Run the Node as a Service

To ensure your node runs continuously, set it up as a systemd service.

  1. Create the service file:

    sudo nano /etc/systemd/system/neard.service
  2. Paste the following configuration. Remember to replace [USER] with your actual Linux username.

    [Unit]
    Description=NEARd Daemon Service

    [Service]
    Type=simple
    User=[USER]
    WorkingDirectory=/home/[USER]/.near
    ExecStart=/home/[USER]/nearcore/target/release/neard run
    Restart=on-failure
    RestartSec=30
    KillSignal=SIGINT
    TimeoutStopSec=45
    KillMode=mixed

    [Install]
    WantedBy=multi-user.target
  3. Enable and start the service:

    sudo systemctl enable neard
    sudo systemctl start neard

Step 6: Sync the Node

Your node will now begin syncing with the network using the recommended Epoch Sync method. This can take several hours.

You can monitor the sync progress by watching the logs:

journalctl -n 100 -f -u neard | ccze -A

The node is fully synced when the last block number in your logs matches the latest block height on a network explorer like NearBlocks.

Congratulations! You now have a fully synced Mainnet full node. To become a validator and earn rewards, proceed to the Validator Setup Guide.