Install and Register an AeroNyx Decentralized Privacy Node
The supported production workflow for installing, registering, verifying, upgrading, and optionally enabling blind relay on an AeroNyx decentralized privacy node.
This guide is the supported production path for a new AeroNyx node. It uses the repository-local operator entrypoint, registers the node with a one-time code from Nodeboard, starts the hardened systemd service, and verifies network admission.
Operator console: app.aeronyx.network
Source repository: github.com/AeroNyxNetwork/AeroNyx
Before you begin
Use a dedicated Linux server with a stable public address.
| Resource | Production guidance |
|---|---|
| Operating system | Current Ubuntu or Debian release |
| CPU | 2 cores minimum; more for source builds or high packet rates |
| Memory | 4 GB recommended; hosts below 2 GB fail or warn preflight |
| Disk | 20 GB free minimum; allow more for build cache and retained releases |
| Network | Public 51820/UDP for privacy-network traffic and 8422/TCP for signed discovery/peer APIs |
| SSH | Restrict administrative access to trusted addresses or an access proxy |
The local management API on 8421/TCP should not be exposed to the public internet.
1. Create a one-time registration code
- Sign in to Nodeboard.
- Open Registration Codes.
- Create a short-lived code for the intended operator account.
- Keep the code private. It binds the new node identity to that account and can be used only once.
Nodeboard may generate the final command for you. Prefer its generated command when available.
2. Obtain the official operator script
aeronyx-node.sh is not a global Linux command. It comes from the AeroNyx repository:
sudo install -d -m 0755 /opt/aeronyx
sudo git clone --branch main --single-branch \
https://github.com/AeroNyxNetwork/AeroNyx.git \
/opt/aeronyx/AeroNyx
cd /opt/aeronyx/AeroNyx
git rev-parse HEAD
If the repository already exists, do not clone over it. Use the built-in upgrade workflow described below.
3. Run the interactive quickstart
cd /opt/aeronyx/AeroNyx
sudo ./deploy/node/aeronyx-node.sh quickstart \
--node-name "Berlin1" \
--region "DE" \
--public-vpn
Replace the example name and ISO country code. Quickstart previews the plan, requests the registration code through a hidden prompt, asks for explicit confirmation, installs dependencies, builds or selects the node binary, writes configuration, applies forwarding/NAT rules, registers the generated node identity, starts systemd, and waits for admission.
For automation, pass the registration secret through stdin rather than the process list:
printf '%s\n' "$AERONYX_REGISTRATION_CODE" | \
sudo ./deploy/node/aeronyx-node.sh install \
--quick \
--registration-code-stdin \
--node-name "Berlin1" \
--region "DE" \
--public-vpn \
--start
Do not paste a live code into tickets, screenshots, shell history, or public AI conversations.
4. Verify the node
cd /opt/aeronyx/AeroNyx
./deploy/node/aeronyx-node.sh status
./deploy/node/aeronyx-node.sh health --json
systemctl is-active aeronyx-server
A production-ready result should show:
- systemd active and enabled
- local VPN health
ok - fresh management heartbeat
- public pool state matching the intended visibility
51820/UDPlistening- signed discovery ready with fresh peers
- no critical capacity or packet-drop risk
Nodeboard should show the same node name, region, visibility, heartbeat, capacity, and current operator action.
5. Optional blind relay participation
Public VPN participation and encrypted ChatRelay/OnionMiddle participation are separate operator choices. Do not advertise relay capability until the public peer endpoint is reachable.
cd /opt/aeronyx/AeroNyx
sudo ./deploy/node/aeronyx-node.sh chat-relay \
--enable-chat-relay --yes
sudo ./deploy/node/aeronyx-node.sh onion-middle \
--enable-onion-middle --restart --yes
For relay participation, [discovery] must also contain the externally reachable public_endpoint, public_discovery = true, and the correct region. Validate before restart:
./target/release/aeronyx-server validate -c /etc/aeronyx/server.toml
sudo systemctl restart aeronyx-server
./deploy/node/aeronyx-node.sh relay-probe --two-hop --json
New nodes enter a warm-up period. They become route candidates only after fresh reachability and path-proof evidence is available. A configured capability is not the same thing as route eligibility.
Safe upgrades
Use the operator wrapper rather than a manual git pull followed by an unguarded restart:
cd /opt/aeronyx/AeroNyx
sudo ./deploy/node/aeronyx-node.sh upgrade \
--build-priority live \
--build-jobs auto
The upgrade workflow checks active sessions, validates the candidate binary and configuration, records status, preserves rollback material, and verifies health after restart. Use --no-restart to stage a build for a later maintenance window.
AI-assisted installation standard
An AI terminal assistant may execute this workflow, but it must:
- identify the official GitHub repository and exact checkout path
- show the resolved plan before changing the host
- keep registration secrets out of command arguments and logs
- avoid compiling on an undersized production host when a verified staged binary is available
- check active sessions before restart or upgrade
- verify service health, backend heartbeat, public reachability, and discovery after changes
- report warnings honestly instead of declaring success from process state alone
Privacy boundary
Operational diagnostics may expose aggregate CPU, memory, disk, file-descriptor, conntrack, packet, capacity, heartbeat, and relay-proof status. They must not expose client public IP activity, destinations, DNS contents, packet payloads, browsing history, message plaintext, private keys, voucher secrets, MemChain plaintext, or wallet-level traffic.