Ports und Netzwerkkonfiguration
1. Voraussetzungen
Hardware
| Ressource | Minimum | Empfohlen |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 1 GB | 2 GB |
| Platte | 20 GB | 40 GB (mehr für ausführliche Activity-Logs und Caddy-Access-Logs) |
Software
- Betriebssystem: Moderne Linux-Distribution (Debian 11+, Ubuntu 22.04+, Fedora, Rocky, Alma, Alpine). Getestet auf Debian 13.
- Docker Engine: 24.0 oder neuer
- Docker Compose: v2 (seit Docker Engine 23.0 integriert)
- WireGuard-Kernelmodul: auf den meisten modernen Kernels vorhanden. Der Container bringt kein externes Install mit, aber WireGuard-Capabilities (
NET_ADMIN) müssen dem Container gewährt werden können.
DNS
Bevor der Container gestartet wird, muss ein DNS-A-Record (optional zusätzlich AAAA für IPv6) auf die öffentliche IP des Hosts zeigen:
gate.example.com. IN A 198.51.100.42
GateControl nutzt diesen Namen für zwei Zwecke:
- Admin-UI via
GC_BASE_URL— Caddy fordert automatisch beim ersten Start ein Let's-Encrypt-Zertifikat dafür an. - WireGuard-Endpunkt, falls du zusätzlich
GC_WG_HOST=gate.example.comsetzt. (GC_WG_HOSTkann auch eine blanke öffentliche IP sein, aber derselbe Hostname vereinfacht Peer-Konfigurationen.)
Jede Domain, für die du später eine Reverse-Proxy-Route einrichtest, braucht einen eigenen A-Record, der auf denselben Host zeigt.
Ports
| Port | Protokoll | Zweck | Erreichbar von |
|---|---|---|---|
| 80 | TCP | HTTP → HTTPS Redirect, ACME HTTP-01-Challenge | Internet |
| 443 | TCP | HTTPS für Admin-UI und alle Reverse-Proxy-Routen | Internet |
| 443 | UDP | HTTP/3 (optional, empfohlen) | Internet |
| 51820 | UDP | WireGuard-VPN-Endpunkt | Internet |
| 53 | TCP/UDP auf 127.0.0.1 und auf der VPN-Gateway-IP (10.8.0.1 per Default) |
Interner DNS für VPN-Peers | nur Container (Loopback + WG-Interface) |
Sofern auf dem Host bereits etwas auf 127.0.0.1:53 lauscht (häufige Ursachen: NetworkManager-dnsmasq, libvirt-dnsmasq, bind9), weigert sich der GateControl-Container zu starten. systemd-resolved nutzt 127.0.0.53 und kollidiert nicht. Das Entrypoint-Skript prüft das explizit und beendet sich mit einer klaren Fehlermeldung, falls es einen anderen Listener findet.
Öffne die ersten vier Ports in deiner Cloud-Firewall / iptables / ufw, bevor du den Container startest.
11. Updates
Automatisches Update
cd /opt/gatecontrol
./update.sh
update.sh pullt das neueste Image aus GHCR, erzeugt den Container nur dann neu, wenn tatsächlich ein neues Image gezogen wurde, und loggt nach /var/log/gatecontrol-update.log. Sicher per Cron oder systemd-Timer einplanbar:
# /etc/cron.d/gatecontrol-update
0 3 * * * root /opt/gatecontrol/update.sh
Manuelles Update
cd /opt/gatecontrol
docker compose pull
docker compose up -d
Downtime liegt bei etwa 10–30 Sekunden während Container-Restart und Caddy-Reload des persistierten Zustands. Datenmigration ist nie nötig — Migrationen laufen automatisch beim Container-Start mit Per-Step-Commits, sodass ein gescheiterter Schritt keine erfolgreichen Schritte zurückrollt.
Nach dem Update verifizieren
curl -s http://127.0.0.1:3000/health | jq .version
Der Versions-String muss zum gepullten Tag passen.