Skip to content

Choose a shape

This page helps a sysop pick where an instance runs. It compares every shape side by side; at the end you know which install page to follow.

The default is Self-host with Docker. One box you own (a Raspberry Pi, a mini-PC or a VM) runs the gateway, the RF ingest and TLS. Its cost is flat: SQLite on your own disk costs the same at ten packets a minute as at a thousand. A large or global APRS-IS filter is no problem. Pick another shape only for one of the reasons in the table.

The shapes side by side

Shape What runs where Who it is for Ingress Cost Effort
Self-host with Docker (recommended) Gateway, ingest and Caddy in Docker on your box Clubs and operators who want an always-on instance Caddy with automatic TLS (ports 80 and 443), a Cloudflare Tunnel, or the LAN only Flat: your box and its power A Linux box with Docker; one wizard
Self-host behind Cloudflare The same Docker stack; Cloudflare carries the traffic A home connection without a static IP or open ports (CGNAT) Cloudflare Tunnel, optionally Cloudflare's CDN in front Flat: Cloudflare's free plan does not bill by what the instance writes Self-host plus a Cloudflare account with your domain
Self-host on Oracle Cloud (one-click) The same Docker stack on an Always Free Ampere A1 VM, set up by a Resource Manager stack Anyone without a box at home Caddy with automatic TLS on a reserved public IP Free on Always Free An Oracle Cloud account; one form
Self-host without Docker Gateway and ingest from a checkout under systemd Sysops who run their own services without Docker Your own reverse proxy with TLS, or the LAN only Flat Node.js 22 or newer, one helper command, your proxy
Desktop One executable on your computer, the web app inside Trying it out, a field day, one operator off-grid None: 127.0.0.1, or the LAN with HOST=0.0.0.0 Free Download, check, run
Pocket Gateway and ingest on an Android phone in Termux Field days, demos and hikes; not an always-on server The phone's hotspot; optionally a Cloudflare Tunnel or 44Net Free A phone, Termux, one installer
Ingest box only (a role, not a gateway) Only the ingest, next to your radio, feeding a gateway elsewhere The radio side of an instance in the cloud, or a second receiver for any instance Outbound only, to the gateway's /ingest Flat Docker on a Pi; one helper command

Every shape runs the same gateway with the full feature set: Node and SQLite (Self-host, Oracle Cloud, bare metal, Pocket) or Bun and SQLite (Desktop).

Want Cloudflare?

Run Self-host behind Cloudflare. A Cloudflare Tunnel needs no open port and no static IP, and the CDN can sit in front. You get Cloudflare's edge TLS, DDoS protection and caching on its free plan. The data stays in SQLite on your box, so the cost does not grow with your feed.

No box at home? The Oracle Cloud stack runs Self-host on a free VM, and Cloudflare can sit in front of it the same way.

Where the radio fits

In every shape the RF ingest runs on your own equipment: the stack's own ingest, or an ingest box next to the radio. The browser can also bridge a USB or Bluetooth radio with no server at all. A cloud VM may add an APRS-IS-only feed, never the RF bridge.

Joining the network by callsign

Every shape can federate with other instances. A shape peers can reach, such as Self-host with a public URL or behind a Cloudflare Tunnel, pulls and is pulled, and its receivers confirm finds for the whole network; Desktop and Pocket usually push to a hub (Choose how to connect). A licensed sysop can also let peers add the instance by callsign: on 44Net, or over the internet alone with one DNS record under <call>.ampr.org (Identity without 44Net).

You can change your mind later: a backup from one shape restores into another (Moving between shapes).

Next