> For the complete documentation index, see [llms.txt](https://docs.ama.one/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ama.one/validator/running-a-node.md).

# 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
```
