Skip to content

Requirements

  • An x86_64 or ARM64 processor.
  • Linux with WireGuard support.
  • Docker with Docker Compose v2.

For the best performance you want the WireGuard UDP port reachable from the public internet, so clients connect directly. Either of these gets you there, and atreoLINK derives your public IP from the agent’s authenticated connection, so you never have to configure or track it:

  • A router that supports NAT-PMP or UPnP, so the agent maps the port automatically. This covers the vast majority of consumer routers.
  • A static UDP port forward on your router (any router can do this). See Manual port forwarding.

The agent runs WireGuard directly on the host kernel, which needs three Docker features:

CapabilityReason
cap_add: NET_ADMINCreate and configure the wg-atreo network interface.
devices: /dev/net/tunTUN device for the userspace fallback (rarely used).
network_mode: hostLet WireGuard bind directly to the host network stack.

Standard requirements for any containerised VPN.

The agent stores all state (long-term identity keys, pairing pin, TLS certificates, ACL cache, paired-device records) under /var/lib/atreoagent inside the container. The example Compose file bind-mounts this to an agent-data/ directory alongside your docker-compose.yml. Back it up if you want to migrate hardware without re-pairing.

You need an atreoLINK account. The free plan lets you connect one of your own servers and invite one other person, and joining servers you’ve been invited to is always free. Paid plans raise the server and member limits and add custom domains — see pricing for the current tiers.

WireGuard is a registered trademark of Jason A. Donenfeld.