2026 Mac Mini mieten 7×24: certbot-Zertifikatserneuerung, launchd-Healthcheck & Nacht-Stillefenster-Entscheidungsmatrix
Solo-Entwickler, die einen Mac Mini mieten und 7×24 Gateways, Reverse-Proxies oder Monitoring betreiben, verlieren HTTPS oft, wenn certbot-Erneuerung vom Kalender abweicht — oder um zwei Uhr nachts der falsche Prozess neu startet.
Dieser Leitfaden friert eine Entscheidungsmatrix für Challenge-Modus, launchd-Timer, Health-Probes und UTC-Stillefenster auf Apple-Silicon-Mietknoten ein: ausführbare plist- und crontab-Snippets, sechs Rollout-Schritte, zitierbare Schwellen. Intern: Startseite, launchd vs. PM2, APFS-Wasserlinien-FAQ, launchd-Daemon-Healthcheck.
Warum TLS-Erneuerung auf 7×24-Miet-Macs scheitert
- Challenge-Drift: HTTP-01 scheitert, wenn Port 80 schließt; DNS-01-Token verfallen, wenn API-Keys nur in der Shell-Historie liegen.
- Reload-Blast-Radius: Ein naiver
renew-hookstartet alle Dienste neu — auch ein OpenClaw-Gateway — statt nur nginx. - Blinde Probes: Prozesse sind grün,
notAfterist rot — Zertifikate laufen ab, während Monitore schlafen.
HTTP-01 vs. DNS-01: welcher certbot-Challenge-Modus passt zur Miete?
Ein primärer Modus pro Hostname. Wildcards erzwingen DNS-01; einzelne Reverse-Proxies auf dem gemieteten Mac Mini bleiben oft bei HTTP-01, wenn Port 80 und 443 erreichbar sind.
| Kriterium | HTTP-01 | DNS-01 |
|---|---|---|
| Port 80 | Pflicht | Optional |
| Wildcard | Nein | Ja |
| Geheimnis | nginx-Pfad | Keychain-Token |
| Typische Miet-Szene | Caddy/nginx-Gateway | Interne Subdomains |
certbot certonly --staging --nginx -d gateway.example.dev
# Produktion nach Dry-Run:
certbot certonly --nginx -d gateway.example.dev --deploy-hook /usr/local/bin/reload-proxy.sh
7×24 certbot- und launchd-Entscheidungsmatrix
Parameter in Git versionieren — sie überleben Consumer-Uplinks und 7×24-Hosting auf M4-Mietknoten.
| Steuergröße | Startwert | Hinweis / Stabilität |
|---|---|---|
| Challenge-Modus | HTTP-01 oder DNS-01 (einer) | Offene Ports im Runbook dokumentieren. |
| Erneuerungs-Takt | 03:17 und 15:17 lokal täglich | Von Backup- und Batch-Fenstern entkoppeln. |
| Health-Intervall | 60 s curl + 7-Tage-Ablauf-Gate | Page bei < 14 Tagen außerhalb Stille. |
| UTC-Stille | 22:00–06:00 UTC + 30 min Puffer | Renew-Rauschen dämpfen; P1 bypass. |
| Scheduler | launchd LaunchAgent | crontab nur für Labs — siehe Snippet. |
| renew-hook-Umfang | Nur Proxy-Reload | OpenClaw-Gateway bei Zertifikatswechsel nicht neu starten. |
launchd-Timer, renew-hook und crontab-Fallback
launchd StartCalendarInterval auf Mietknoten: vorhersagbare Logs nach Reboot. Der renew-hook validiert nginx vor kill -HUP.
# ~/Library/LaunchAgents/com.runmini.certbot-renew.plist (Auszug)
ProgramArguments: certbot renew --quiet --deploy-hook /usr/local/bin/reload-proxy.sh
StartCalendarInterval: 03:17 und 15:17 täglich
StandardOutPath: /var/log/certbot-renew.log
# renew-hook — nur Proxy; OpenClaw-Gateway nicht anfassen
nginx -t && kill -HUP "$(cat /usr/local/var/run/nginx.pid)"
# crontab-Lab-Fallback:
# 17 3,15 * * * certbot renew -q --deploy-hook /usr/local/bin/reload-proxy.sh
Bootstrap: launchctl bootstrap gui/$(id -u) …/com.runmini.certbot-renew.plist. Vergleich launchd vs. PM2 KeepAlive; Daemon-Probes: launchd-Daemon-Healthcheck.
Stillefenster, Health-Probes und Alarm-Routing
certbot-Erneuerung in UTC-Stillefenster legen; separate Healthcheck-Jobs alle sechzig Sekunden nur bei echten TLS- oder Upstream-Fehlern pagieren.
# tls-health.sh — 60s LaunchAgent
DAYS=$(( ($(date -j -f "%b %d %T %Y %Z" "$(openssl … -enddate|cut -d= -f2)" +%s) - $(date +%s)) / 86400 ))
[ "$DAYS" -lt 14 ] && curl -fsS -X POST "$ALERT_URL" -d "{\"days_left\":$DAYS}"
curl -fsS --max-time 5 https://gateway.example.dev/healthz
- Nicht-P1-Webhooks 22:00–06:00 UTC plus dreißig Minuten Renew-Puffer unterdrücken.
- Sofort page bei
days_left < 7; Warnung nur über vierzehn Tage.
Disk- und Log-Wasserlinie on APFS rentals
Vor unbeaufsichtigter Erneuerung mit dem APFS-Wasserlinien-FAQ abstimmen — certbot-Logs füllen bei fehlgeschlagenen DNS-Plugins schnell.
- Gelb fünfzehn Prozent APFS frei — Erneuerung pausieren; Rot zehn Prozent — certbot stoppen und page.
certbot-renew.logper newsyslog auf 128 MB × 7 Rotationen begrenzen.
Sechs Rollout-Schritte für 7×24-TLS auf der Miete
- Provisionieren: kaufen.html, SSH laut Hilfe-Center, Baseline
df -hvon der Startseite dokumentieren. - Staging-Zertifikate:
certbot certonly --stagingwith chosen challenge. - launchd-Agent: Load renew plist and
reload-proxy.sh; tailcertbot-renew.log. - Health-Probe: Sechzig-Sekunden-TLS plus
/healthz; außerhalb Stille pagieren. - Produktion: Ohne Staging wiederholen;
notAfter. - Feueralarm:
certbot renew --dry-run; Proxy-only-Reload und gedämpfte UTC-Alarme bestätigen.
Zitierbar: Erneuerung 03:17 und 15:17 lokal; Health-Probe 60 s; TLS-Page-Schwelle 14 Tage Restlaufzeit, sofort bei 7 Tagen; Stille 22:00–06:00 UTC plus 30 min Puffer; APFS Gelb 15 %, Rot 10 %; Log-Deckel 128 MB × 7 Rotationen; renew-hook lädt nur nginx neu.
Stromausfall-Wiederherstellung — FAQ
Zerstört certbot renew mein OpenClaw-Gateway während Nachtbatches?
Nein — wenn der renew-hook nur nginx oder Caddy neu lädt. OpenClaw bleibt auf Loopback; Gateway-Label bei Zertifikatswechsel nicht neu starten. Erneuerung in UTC-Stille und zuerst certbot renew --dry-run.
launchd oder crontab für certbot unter macOS?
LaunchAgents auf 7×24-Hosting-Mietknoten — Reboot-Überleben und feste Log-Pfade. crontab für lokale Labs; dasselbe --deploy-hook-Skript in beiden Fällen.
Was nach einem Stromausfall zuerst prüfen?
Prüfen: launchctl print gui/$(id -u)/com.runmini.certbot-renew, dann certbot certificates, APFS frei über Gelb laut APFS-FAQ, danach ausgehende Alarme wieder aktivieren.
Mac Mini für 7×24-TLS und Health-Probes mieten
RunMini Apple-Silicon-Knoten bleiben für Gateways, Proxies und Monitore online — mit unbeaufsichtigter certbot-Erneuerung. Preise, kaufen.html ohne Login, SSH/VNC-Hilfe nach Checkout.
Fazit. Challenge-Modus, launchd-Erneuerung, Proxy-renew-hook, sechzig-Sekunden-Healthchecks und UTC-Stille einfrieren, bevor Sie einen Mac Mini mieten für 7×24-TLS. Zurück zur Startseite nach dem ersten Dry-Run ohne On-Call-Page.