⚙️ Installation
System Preparation
Run all commands as root unless stated otherwise.
Update system
apt update && apt upgrade -yReboot if kernel was updated.
Install dependencies
apt install -y curl nvme-cli aria2 jq ufwInstall Monad Package
Configure APT repository
cat <<EOF > /etc/apt/sources.list.d/category-labs.sources
Types: deb
URIs: https://pkg.category.xyz/
Suites: noble
Components: main
Signed-By: /etc/apt/keyrings/category-labs.gpg
EOF
curl -fsSL https://pkg.category.xyz/keys/public-key.asc | \
gpg --dearmor --yes -o /etc/apt/keyrings/category-labs.gpgInstall Monad
Create Monad User
Create directory structure:
Configure TrieDB NVMe Device
Identify NVMe drive
⚠ Ensure the drive has no mounted filesystem
Partition drive
Create udev rule
Verify 512-byte LBA
Expected:
If not:
Initialize TrieDB (MPT)
Service must finish with:
Firewall Configuration
Anti-spam UDP filter:
Persist rule using iptables-persistent if desired.
Install OTEL Collector
Metrics endpoint:
Download Configuration Files
Testnet example
Keystore & Keys
Generate password
Backup password:
Generate keys
⚠ Store backups off-server
Hard Reset (Snapshot Restore)
Restore snapshot:
Validator Configuration
Edit:
Mandatory changes
Ensure validator-specific template is used.
Reload config without restart:
Start Services
Final Notes
Monitor logs:
journalctl -u monad-bft -fMonitor metrics via OTEL
Backup keys regularly
Never expose keystore password
Last updated