eb3ecbe682
- opnsense-step-a-nat.md: genaue GUI-Schritte (warum SNAT auf 10.1.1.22 nötig, Aliase, Outbound-NAT, Firewall, Test) - horus/README.md: watchtower-Crashloop behoben (DOCKER_API_VERSION=1.40), mailcow ohne Auto-Update dokumentiert Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
60 lines
4.1 KiB
Markdown
60 lines
4.1 KiB
Markdown
# 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 |
|
|
|
|
## Updates / Wartung
|
|
|
|
- **watchtower** (`/opt/infrastructure`): aktualisiert per `WATCHTOWER_LABEL_ENABLE=true` **nur** Container mit Label `com.centurylinklabs.watchtower.enable=true` (aktuell faktisch nur sich selbst). mailcow & Stacks sind bewusst ausgenommen.
|
|
- **mailcow**: hat **keine** Auto-Update-Automatik (kein cron/Timer). Updates **manuell/kontrolliert** via `cd /opt/mailcow && ./update.sh` (Multi-Container-Stack mit Migrationen — watchtower darf das nicht, würde nur Images blind tauschen).
|
|
|
|
## Bekannte Probleme / Historie
|
|
|
|
- ✅ **2026-06-28: watchtower crash-loop behoben** — `containrrr/watchtower:latest` pinnt intern Docker-API `1.25` (Daemon verlangt min `1.40`). Fix: `DOCKER_API_VERSION=1.40` in der watchtower-`environment` (in `/opt/infrastructure/docker-compose.yml`). Läuft seitdem sauber als „Watchtower 1.7.1".
|