Skip to main content

Running a Node

The basic requirements in order of importance:

  • 1gbps+ stable internet connection
  • modern CPU with AVX512 (7950x is best value for $)
  • 2TB+ diskspace
  • UDP port 36969 open

The basic system configuration required anything less will degrade performance:

/etc/sysctl.conf
net.core.wmem_max = 268435456
net.core.rmem_default = 212992
net.core.rmem_max = 268435456
net.core.netdev_max_backlog = 300000
net.core.optmem_max = 268435456
net.ipv4.udp_mem = 3060432 4080578 6120864

net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
/etc/security/limits.conf
root hard nofile 1048576
root soft nofile 1048576
* hard nofile 1048576
* soft nofile 1048576
root hard nproc unlimited
root soft nproc unlimited
* hard nproc unlimited
* soft nproc unlimited
root hard memlock unlimited
root soft memlock unlimited
* hard memlock unlimited
* soft memlock unlimited

To run a node download the latest amadeusd release from github https://github.com/amadeus-robot/node/releases/latest and run it like:

./amadeusd

Multiple .envvars are supported. For the best up-to-date list check https://github.com/amadeus-robot/node/blob/main/ex/config/runtime.exs

Here are a few important ones with their respective defaults:

WORKFOLDER=~/.cache/amadeusd/ # where the blockchain + all data is stored
OFFLINE=false # run the node without connecting to any peers

UDP_IPV4=0.0.0.0 # ip address(es) to listen on for protocol.
# default listen on all interfaces
UDP_PORT=36969 # mainnet port

PUBLIC_UDP_IPV4=stun # if behind complex NAT, what IP do you want to advertise
# default - obtain ip via STUN

ANR_NAME=nil # (optional) name of your validator
ANR_DESC=nil # (optional) description of your validator
# stored in https://nodes.amadeus.bot/api/peer/anr

HTTP_IPV4=off # HTTP RPC API (useful for integrations)
HTTP_PORT=80

ARCHIVALNODE=false # if this node is expected to store all chainstate
# for integrations enable this

COMPUTOR=false # if this node will also solve (for mainnet disable)

Your seed for your public key is stored in $WORKFOLDER/sk.

Syncing currently takes a long time as the entire chainstate is pulled including contract states + transactions since genesis. This is just over 170G compressed as of September 19th, 2025. Do not attempt syncing unless you have stable 1gbps connection.

Here is a systemd service that will restart the node as required and run it on a screen:

/etc/systemd/system/amadeusd.service
[Unit]
Description=AmadeusD
After=network-online.target

[Service]
Type=forking
LimitNOFILE=1048576
KillMode=control-group
Restart=always
RestartSec=3
User=root
WorkingDirectory=/root/
Environment="UDP_IPV4=0.0.0.0"
ExecStart=/usr/bin/screen -UdmS amadeusd bash -c './amadeusd'

[Install]
WantedBy=default.target