docu: Horus-VPS-Dienste, issues/-Tracking + WG-NAT-Vorfall, WG-Key-Warnungen

- horus/README.md: Dienst-Discovery (mailcow, bind9, NPM, authentik, hedgedoc, apps), Zugang, WG-Verwaltung (kein wireguard-ui aktiv), watchtower-Problem
- issues/: Tracking-Konvention + Vorfall VM101<->Horus WireGuard (Ursache war NAT/Quellport, nicht Keys; Fix ListenPort 51871)
- README.md: Horus in Hosts-Tabelle + Verzeichnisbaum
- shared/horus-opnsense-wireguard: Key-Verwechslungs-Warnungen

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
root
2026-06-28 16:01:26 +02:00
parent 77fde0e38b
commit 9c0b7e597c
6 changed files with 170 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
# Horus — VPS (Contabo)
Öffentlicher VPS, **WireGuard-Hub** und Anwendungsserver. Stand: 2026-06-28 (per Dienst-Discovery erhoben).
| | |
|---|---|
| **Hostname** | `horus.jeanavril.com` |
| **Public IP** | `207.180.222.207` |
| **WireGuard-IP** | `10.1.1.1` (Hub für alle Peers) |
| **OS** | Debian 12 (bookworm) |
| **Provider** | Contabo (Zugang via Contabo-Weboberfläche → VNC) |
## Zugang
- **Wenn ein WG-Tunnel läuft:** `ssh jean@192.168.10.10` (VM 101) → `ssh root@10.1.1.1`
- **Wenn alle Tunnel tot sind:** über Public-IP `ssh root@207.180.222.207` — aber **SSH:22 ist per ufw nur über `wg0` offen**. Notfall: am Contabo-VNC `ufw allow ssh`, fixen, danach `ufw delete allow ssh`. VM 101 besitzt den Horus-SSH-Key.
- **ufw:** default deny incoming. Offen: `61951/udp` (WG), alles auf `wg0`, plus die unten gelisteten Dienst-Ports.
## WireGuard
- **Verwaltung: `wg-quick@wg0`** (systemd, enabled). **Es läuft KEIN wireguard-ui** (kein Prozess/Container/Port 5000) — die `wg0.conf` wurde nur *historisch* damit erzeugt.
- Server-Config: `/etc/wireguard/wg0.conf` (Header sagt „don't edit manually", aber maßgeblich ist, was `wg-quick` lädt → `wg show wg0` / `wg showconf wg0` ist die Wahrheit).
- Client-Keys/Configs: `/etc/wireguard/clients/<name>/` (je `client.conf`, `privatekey`, `publickey`, `presharedkey`), Backup unter `/etc/wireguard/bak/`.
- Listen-Port: `61951/udp`. PostUp/PostDown setzen iptables FORWARD/NAT.
- **Peers sauber löschen** (ohne UI): `[Peer]`-Block aus `wg0.conf` entfernen **+** `clients/<name>/` löschen **+** `wg syncconf wg0 <(wg-quick strip wg0)` (oder `systemctl restart wg-quick@wg0`).
- Vorfall NAT/Port siehe [../issues/2026-06-28-vm101-horus-wireguard-nat.md](../issues/2026-06-28-vm101-horus-wireguard-nat.md).
## Dienste (Docker-Compose-Stacks)
Web-Apps liegen i.d.R. hinter **nginx-proxy-manager** (Ports 80/443).
| Stack | Verzeichnis | Zweck | Ports (extern) |
|-------|-------------|-------|----------------|
| **mailcowdockerized** | `/opt/mailcow` | Kompletter Mailserver (postfix, dovecot, rspamd, sogo, clamd, unbound, mysql, redis …) | 25, 465, 587, 110, 143, 993, 995, 4190; Web 8443/8880 |
| **infrastructure** | `/opt/infrastructure` | nginx-proxy-manager (Reverse Proxy) + MariaDB + watchtower | 80, 443; Admin `81` nur auf `10.1.1.1` (WG) |
| **sso** | `/opt/sso` | authentik (SSO / Identity Provider) + postgres + redis | 9000, 9443 |
| **bind9** (Container) | — | Autoritativer DNS | `207.180.222.207:53` tcp/udp |
| **collab** | `/opt/collab` | HedgeDoc (kollaborative Notizen) + postgres | hinter NPM |
| **files** | `/opt/files` | Caddy File-Server + filebrowser | hinter NPM |
| **kifin** | `/opt/projects/kifin` | App „ai-finance-simulations" | hinter NPM |
| **vectorseek** | `/opt/projects/vectorseek` | App (Port 3000) | hinter NPM |
| **website** | `/opt/website` | *gestoppt* (Exited vor ~15 Monaten) | — |
## Eigene systemd-Dienste
| Dienst | Zweck |
|--------|-------|
| `monitor-cert-changes.service` | `/usr/local/bin/monitor_cert_changes.sh` — überwacht Zertifikatsänderungen und startet Mailcow-Dienste neu (Teil der Cert-Automation, Certs kommen per rsync von VM 101). |
| `wg-quick@wg0.service` | WireGuard-Hub |
| `chrony`, `uptimed`, `docker`, `containerd` | Standard |
## Bekannte Probleme
- ⚠️ **`infrastructure-watchtower-1` crash-loopt** (`Restarting`). Log: *„client version 1.25 is too old. Minimum supported API version is 1.40"* — watchtowers Docker-API-Client ist zu alt für den Docker-Daemon. **Auto-Updates der Container laufen dadurch nicht.** Fix: watchtower-Image aktualisieren (`docker compose pull && up -d` in `/opt/infrastructure`) oder entfernen.