These docs are not up to date yet. The app is moving faster than we can describe it. These pages cover Watchpost 0.1.0 alpha (build 444) and may be incomplete or out of date. Details
Install the hub
The installer sets up the whole hub on one host: the relay, a WireGuard interface, a firewall table and the services that bring them up on boot. Run it as root.
What you need
Section titled “What you need”- A Linux server with systemd and root access. We tested the script on Debian 13. It also knows
dnf, but we have not tried that path. - A public IPv4 address, or a name that points to it.
- Two open ports: TCP for the relay (8443 by default) and UDP for WireGuard (20820 by default).
A small VPS is enough. In our tests the relay used about 10 MB of memory and 3 % of one core while it carried a 2560×1440 stream with sound.
Install
Section titled “Install”-
Put
install.shand thewatchpost-relaybinary in one folder on the server. -
Run the script with your public address, so the app can find the hub:
Terminal window sudo ./install.sh --host hub.example.comTo change the ports, add
--relay-portand--tunnel-port. -
Read the hub code the script prints at the end. It holds the address, the certificate fingerprint and the admin token. Save it: the app asks for it when you add the hub.
Lost the code? watchpost-relay admin new prints a hub code with an admin token.
What the script changes
Section titled “What the script changes”It installs wireguard-tools, nftables and openssl if they are missing, and creates a system user wphub. In /etc/watchpost it writes the relay config and a self-signed certificate valid for ten years, and the app checks its fingerprint. /etc/wireguard/wg-wp.conf gets the address 10.77.0.1/24 and a key of its own. The firewall rules live in a table named inet watchpost.
Your routes, sysctl settings and other firewall rules stay as they were. Nothing is forwarded through the host between the tunnels and its own network.
Four services start on boot:
| Service | What it does |
|---|---|
watchpost-hub-firewall |
Loads the firewall table |
wg-quick@wg-wp |
Brings up the WireGuard interface |
watchpost-hub-agent |
Runs as root and changes WireGuard peers on the relay’s behalf |
watchpost-relay |
The relay itself, without privileges |
The split is deliberate. A break-in into the relay gives no rights over the host’s network.
Check that it runs
Section titled “Check that it runs”systemctl is-active watchpost-hub-firewall wg-quick@wg-wp watchpost-hub-agent watchpost-relaysudo wg show wg-wpYou should see four active lines and the wg-wp interface. Peers appear after you connect the first site.
Update and remove
Section titled “Update and remove”Run install.sh again to update. The binary and the services are replaced. Keys, configuration, sites and the admin token stay.
sudo ./install.sh uninstall removes the services, the firewall table and the binary, and keeps keys and sites, so a later install picks them up. Add --purge to delete those too.