# 2026-07-18 — Monitoring-HTML öffentlich: Caddy / www (Infra) ## Symptom Öffentliche URLs liefern **Merchant-JSON code 21** (HTTP 404), kein sticky-bar HTML: - `https://taler.hacktivism.ch/monitoring/` - `https://bank.hacktivism.ch/monitoring/` - `https://exchange.hacktivism.ch/monitoring/` - `https://taler.hacktivism.ch/taler-monitoring-surface/` - `https://taler.hacktivism.ch/taler-monitoring-aptdeploy/` - `https://taler.hacktivism.ch/taler-monitoring-mattermost/` - `https://taler.hacktivism.ch/taler-monitoring-mail/` (jeweils auch ohne trailing slash und `*_err/` wo vorhanden) ## Nicht die Suite Standalone-Repo **taler-monitoring** (aktuell z. B. **v1.7.1**, `~/src/taler-monitoring`): | Ort | Status | |-----|--------| | Staging `~/monitoring-sites-staging/…/*/index.html` | **vorhanden** (sticky-bar) | | Host-agent Timer | aktiv; meldet Deploy/monpages-Fehler (`STRICT_EXIT=1` ab v1.7.1) | | Live `/var/www/monitoring-sites` | unvollständig / veraltet; **nicht** schreibbar für `hernani` | | Live `/etc/caddy/Caddyfile` | **keine** `handle /monitoring*` (Stand 2026-07-18) | | Vorbereitet | `~/koopa-caddy/Caddyfile` (Handles vor `reverse_proxy`) | Caddy läuft als System-Unit (`User=caddy`, **`ProtectHome=true`**) → Staging unter `/home/hernani` ist für Caddy **nicht** lesbar. Auslieferung muss über **`/var/www/monitoring-sites`**. ## Root-Fix (einmal) ```bash sudo ~/koopa-caddy/apply-monitoring-live.sh ``` Das Script: 1. `rsync` Staging → `/var/www/monitoring-sites/` 2. Ownership/ACL: `hernani` schreibbar, Gruppe `caddy` 3. Installiert vorbereitete Caddyfile → `/etc/caddy/Caddyfile`, `caddy validate`, `systemctl reload caddy` 4. Smoke-curl der Monitoring-URLs (darf **nicht** code 21 sein) Danach sollten Host-Agent-Läufe selbst nach www rsyncen (wenn ACL greift). ## Verifikation ```bash curl -sS -o /dev/null -w "%{http_code}\n" https://taler.hacktivism.ch/monitoring/ # expect 200 + HTML with sticky-bar, not JSON code 21 grep -c "handle /monitoring" /etc/caddy/Caddyfile # expect > 0 test -w /var/www/monitoring-sites && echo www_writable ``` ## Suite vs. Ops | Repo | Rolle | |------|--------| | [taler-monitoring](https://git.hacktivism.ch/hernani/taler-monitoring) | Checks, HTML-Generator, host-agent | | **koopa-admin-log** (dieses Repo) | Caddy-Spiegel, Apply-Skript-Hinweise, Issues | | `~/koopa-caddy/` | Live-Apply-Quelle auf dem Host (nicht Secrets) | Siehe Issue **I-09** in `ISSUES.md`. ## Follow-up — empty Caddy 404 after apply (v1.7.2) After apply, Caddy returned **empty HTTP 404** (Server: Caddy). **Cause:** `root * …/monitoring` + `handle /monitoring/` → looks for `…/monitoring/monitoring/`. **Fix:** `root * …/{host}` + `handle /monitoring*` in `~/koopa-caddy/Caddyfile`. Re-apply: ```bash sudo ~/koopa-caddy/apply-monitoring-live.sh ```