Requires a bare-metal server with Ubuntu 24.04+, Linux kernel >= 6.8.0.60 (avoid 6.8.0.136–6.8.0.139), HyperThreading/SMT disabled in BIOS, and a dedicated NVMe drive for the TrieDB. See hardware requirements.
All commands below are run as the root user.
Before the first start, follow the Hard Reset guide to import a recent snapshot — syncing from genesis is not practical.
Installation
Update the system and install dependencies:
Add the package repository and install the testnet build of monad:
Create the monad service user and config directories:
Partition your dedicated NVMe drive for the TrieDB (verify with lsblk first — this wipes the drive) and format it:
Open the consensus P2P port in the firewall:
Download the testnet configuration for a full node:
Set a keystore password and generate your node's keys — back up /opt/monad/backup/ to an external location, it contains your node identity:
Edit /home/monad/monad-bft/config/node.toml:
beneficiary — leave the burn address 0x0000000000000000000000000000000000000000 for a full node
node_name — set something unique, e.g. full_<PROVIDER>-1
confirm enable_client = true under [fullnode_raptorcast] and expand_to_group = true under [statesync]
leave [blocksync_override] peers empty
Sign your node's name record (needed for peer discovery):
Copy the printed self_ip:self_tcp_port, self_record_seq_num and self_name_record_sig into the [peer_discovery] section of node.toml.
Fix permissions and enable the services:
Import a snapshot first (see Hard Reset note above), then start the node: