docs: mark Plesk cron todo done; optional heartbeat backlog

Record live monitor.php cron config in HOSTING.md and close todo 05.
Move optional */5 heartbeat task to todo/13.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Frank Schwenk
2026-06-12 14:56:47 +02:00
parent 9b18b11f32
commit 226bbe1bf7
6 changed files with 75 additions and 25 deletions
+16 -9
View File
@@ -151,19 +151,26 @@ Ausgehende Mails vom 0012.de-Mailserver (`ha01s019.org-dns.com`) werden von **Tu
## Geplante Aufgaben (Cron)
Plesk: **Websites & Domains → Geplante Aufgaben → Aufgabe planen**
Plesk: **Websites & Domains → Geplante Aufgaben**
| Einstellung | Empfehlung |
|-------------|------------|
**Stand: eingerichtet 2026-06-12** — eine Aufgabe für Pull-Monitoring (`monitor.php`).
| Einstellung | Ist-Wert |
|-------------|----------|
| Aufgabentyp | PHP-Skript ausführen |
| Skriptpfad | `httpdocs/monitor.php` (nach Deployment) |
| PHP-Version | aktuelle verfügbare (z. B. 8.5.x) |
| Skriptpfad | `httpdocs/monitor.php` |
| PHP-Version | 8.5.x (höchste stabile in Plesk) |
| Status | Aktiv |
| Ausführen | Cron-Stil |
| Schedule Pull-Checks | `*/10 * * * *` (alle 10 Min) |
| Schedule Heartbeat-Check | `*/5 * * * *` (Push-Stale-Prüfung, ggf. in monitor.php) |
| Benachrichtigen | „Nur Fehler“ für Cron-PHP-Fehler; App-Alerts über eigenes SMTP |
| Schedule | `*/10 * * * *` (alle 10 Min) |
| Benachrichtigen | Nur Fehler (Plesk-Mail bei PHP-Fehler; App-Alerts über SMTP) |
| Beschreibung | z. B. „0012 external monitoring pull“ |
Screenshot-Referenz: Plesk „Aufgabe planen“ (PHP-Skript, Cron-Stil, PHP-Version).
**Lauf:** Im Apache-Access-Log als `GET /monitor.php` mit User-Agent `curl/8.20.0` sichtbar. Enthält HTTPS/SSL-Pull, boka-Stale-Prüfung (15 Min) und Push-Schwellen — kein separater Heartbeat-Cron nötig.
**Optional:** Zweite Aufgabe `*/5` nur für Push-Stale — [`todo/13-optional-plesk-cron-heartbeat.md`](todo/13-optional-plesk-cron-heartbeat.md) (backlog, nicht umgesetzt).
**Follow-up:** Cron auf CLI (`php monitor.php`) + HTTP-Token — [`todo/12-monitor-php-token-check.md`](todo/12-monitor-php-token-check.md).
Weitere Plesk-Funktionen (Git, Composer, Hosting-Einstellungen): [`PLESK.md`](PLESK.md)
+1 -1
View File
@@ -72,5 +72,5 @@ Offene Arbeiten: [`todo/README.md`](todo/README.md)
1. `.env.example` → `.env` kopieren und ausfüllen (lokal, FTP)
2. `python3 scripts/sync-server-env.py` → erzeugt `server.env` für den Webspace
3. `./scripts/deploy.sh` — spielt `public/` + `config/` + `server.env` hoch (**.env bleibt lokal**)
4. In Plesk: geplante Aufgabe für `monitor.php` (Cron-Stil, z. B. `*/10 * * * *`)
4. In Plesk: geplante Aufgabe für `monitor.php` (Cron-Stil, `*/10 * * * *`) — erledigt; Details [`todo/05-plesk-cron.md`](todo/05-plesk-cron.md)
5. Auf boka: Push-Skript + Crontab — erledigt via SSH (`frank@frank-schwenk.de`, Repo `~/server`); Details [`todo/04-monitoring-push-boka.md`](todo/04-monitoring-push-boka.md)
+1 -1
View File
@@ -47,7 +47,7 @@
## Notizen
- Plesk-Cron: `httpdocs/monitor.php`, `*/10 * * * *`, „Nur Fehler“ (Todo 05)
- Plesk-Cron: `httpdocs/monitor.php`, `*/10 * * * *`, „Nur Fehler“ — erledigt (Todo 05, 2026-06-12)
- Browser-Aufruf `https://0012.de/monitor.php` → leere Seite (HTTP 200) ist korrekt
- SSL-`warn` auf boka-Hosts nach LE short→long-lived-Wechsel: bekannt, kein Handlungsbedarf auf 0012.de
+19 -12
View File
@@ -1,6 +1,7 @@
# 05 — Plesk Cron (Geplante Aufgaben)
**Priorität:** high
**Status:** erledigt (2026-06-12)
**Abhängigkeiten:** 01, 03 (Skript muss existieren)
**Referenz:** Plesk → Websites & Domains → Geplante Aufgaben
@@ -10,16 +11,17 @@ Monitoring automatisch alle 5–10 Minuten ausführen.
## Checkliste
- [ ] Aufgabe anlegen: **PHP-Skript ausführen**
- [ ] Skriptpfad: `httpdocs/monitor.php` (Pfad nach Deployment verifizieren)
- [ ] PHP-Version: höchste stabile (z. B. 8.5.7)
- [ ] **Aktiv** angehakt
- [ ] Ausführen: **Cron-Stil**
- [ ] Expression: `*/10 * * * *` (Pull-Checks alle 10 Min)
- [ ] Beschreibung: z. B. „0012 external monitoring pull“
- [ ] Benachrichtigen: **Nur Fehler** (siehe unten)
- [ ] **Jetzt ausführen** — Exit-Code / Log prüfen
- [ ] Optional zweite Aufgabe für leichtgewichtigen Heartbeat-Only-Check (`*/5`) — nur wenn von monitor.php getrennt
- [x] Aufgabe anlegen: **PHP-Skript ausführen**
- [x] Skriptpfad: `httpdocs/monitor.php` (Pfad nach Deployment verifizieren)
- [x] PHP-Version: höchste stabile (z. B. 8.5.x)
- [x] **Aktiv** angehakt
- [x] Ausführen: **Cron-Stil**
- [x] Expression: `*/10 * * * *` (Pull-Checks alle 10 Min)
- [x] Beschreibung: z. B. „0012 external monitoring pull“
- [x] Benachrichtigen: **Nur Fehler** (siehe unten)
- [x] **Jetzt ausführen** — Exit-Code / Log prüfen
Optional zweite Aufgabe für Heartbeat-only (`*/5`): ausgelagert nach [`13-optional-plesk-cron-heartbeat.md`](13-optional-plesk-cron-heartbeat.md) — nicht nötig, Stale-Check läuft im gleichen `monitor.php`-Lauf.
## Benachrichtigen: „Nur Fehler“
@@ -45,8 +47,13 @@ Plesk nutzt System-Timezone des Servers.
## Akzeptanzkriterien
- Aufgabe läuft scheduled ohne manuellen Klick
- `data/last-checks.json` Timestamp bewegt sich
- [x] Aufgabe läuft scheduled ohne manuellen Klick (Access-Log: `curl/8.20.0` → `GET /monitor.php`)
- [x] `data/last-checks.json` Timestamp bewegt sich (verifiziert in Todo 03)
## Notizen
- Lauf im Access-Log als HTTP-GET sichtbar (Plesk ruft URL per curl auf). Follow-up: CLI + Token — [`12-monitor-php-token-check.md`](12-monitor-php-token-check.md)
- Ist-Konfiguration dokumentiert in [`../HOSTING.md`](../HOSTING.md#geplante-aufgaben-cron)
## Fehlerbehebung
+33
View File
@@ -0,0 +1,33 @@
# 13 — Optional: Plesk Cron Heartbeat (`*/5`)
**Priorität:** backlog (optional)
**Status:** nicht umgesetzt — bewusst weggelassen
**Abhängigkeiten:** 05 (Haupt-Cron), 04 (Push ingest)
**Referenz:** [`05-plesk-cron.md`](05-plesk-cron.md), [`../HOSTING.md`](../HOSTING.md)
## Ziel
Optional eine **zweite** geplante Aufgabe in Plesk, die nur die Push-Stale-Prüfung (boka silent) alle 5 Min ausführt — getrennt vom vollen Pull-Check in `monitor.php`.
## Ausgangslage
- Haupt-Cron (Todo 05): `*/10 * * * *` → `httpdocs/monitor.php` (HTTPS/SSL + boka-Stale/Schwellen)
- boka pusht alle 5 Min; Stale-Schwelle in `monitor-lib.php`: 15 Min
- **Aktuell ausreichend:** ein Lauf alle 10 Min reicht für Stale-Erkennung
## Wann sinnvoll
- Pull-Checks dauern lang (>5 Min) und sollen seltener laufen, Stale-Alarm aber früher kommen
- Eigenes leichtgewichtiges Skript (nur `checkBokaPushStatus()`, kein HTTPS-Roundtrip)
## Checkliste (falls umgesetzt)
- [ ] Entscheidung: separates Skript (`monitor-heartbeat.php`) vs. Parameter an `monitor.php`
- [ ] Plesk-Aufgabe: Cron-Stil `*/5 * * * *`, PHP-Skript, „Nur Fehler“
- [ ] Kein Doppel-Alarm: Retry-/Cooldown-Logik mit Haupt-Monitor abstimmen
- [ ] [`../HOSTING.md`](../HOSTING.md) und [`05-plesk-cron.md`](05-plesk-cron.md) aktualisieren
## Akzeptanzkriterien
- Stale-Alarm spätestens ~5 Min nach letztem Push (statt bis zu 10 Min + Pull-Laufzeit)
- Keine doppelten Mails bei gleichzeitigem Pull- und Heartbeat-Lauf
+5 -2
View File
@@ -8,7 +8,7 @@ Nummerierte Todos für den 0012.de-Webspace. Abhängigkeiten beachten.
| 02 | [02-email-smtp.md](02-email-smtp.md) | **high** | Postfächer, SMTP für Alerts (0012.de) |
| 03 | [03-monitoring-pull-phase1.md](03-monitoring-pull-phase1.md) | **high** | `monitor.php`, HTTPS/SSL-Checks, Alarm |
| 04 | [04-monitoring-push-boka.md](04-monitoring-push-boka.md) | **medium** | Push von boka → `ingest.php` — erledigt |
| 05 | [05-plesk-cron.md](05-plesk-cron.md) | **high** | Geplante Aufgaben in Plesk |
| 05 | [05-plesk-cron.md](05-plesk-cron.md) | **high** | Geplante Aufgaben in Plesk — erledigt |
| 06 | [06-site-0012-landing.md](06-site-0012-landing.md) | **medium** | Status-Beacon Landing Page |
| 07 | [07-mail-domains-external.md](07-mail-domains-external.md) | **medium** | MX für Domains ohne Mailserver |
| 08 | [08-monitoring-phase2.md](08-monitoring-phase2.md) | **medium** | API-Health, Latenz, Backup-Heartbeat |
@@ -16,17 +16,20 @@ Nummerierte Todos für den 0012.de-Webspace. Abhängigkeiten beachten.
| 10 | [10-optional-plesk-git-composer.md](10-optional-plesk-git-composer.md) | backlog | Plesk Git / Composer evaluieren |
| 11 | [11-boka-smtp-relay.md](11-boka-smtp-relay.md) | **medium** | boka-Apps über 0012.de-SMTP |
| 12 | [12-monitor-php-token-check.md](12-monitor-php-token-check.md) | **medium** | HTTP-Zugriff auf `monitor.php` per Token |
| 13 | [13-optional-plesk-cron-heartbeat.md](13-optional-plesk-cron-heartbeat.md) | backlog | Optional: separater Heartbeat-Cron `*/5` |
## Backlog (ohne Priorität)
Todo **10** — Plesk Git-Deploy und Composer; dokumentiert in [`../PLESK.md`](../PLESK.md), kein Blocker für 02–09.
Todo **13** — optionaler Heartbeat-Cron in Plesk; nicht nötig solange `monitor.php` alle 10 Min läuft.
Todo **11** — boka SMTP-Relay; abhängig von erledigtem **02**, kein Blocker für **03**.
## Empfohlene Reihenfolge
```
01 → 02 → 05 → 03 → 06
01 → 02 → 05 ✓ → 03 ✓ → 06
↘ 04 ✓ (Push ingest.php)
07 (wenn Domains feststehen)
08 → 09