2026 Mac Mini loué 7×24 : matrice certbot, launchd, sondes santé et paramètres de fenêtre silencieuse nocturne
Les développeurs indépendants qui louent un Mac Mini pour des passerelles, proxys inversés et moniteurs en 7×24 perdent encore le HTTPS lorsque le renouvellement certbot dérive du calendrier — ou lorsqu’un renew-hook redémarre le mauvais processus à deux heures du matin.
Ce guide fige une conclusion opérationnelle : « un mode de défi, des timers launchd, des sondes santé et une fenêtre silencieuse UTC ». Vous y trouvez une matrice décisionnelle, des extraits plist et crontab exécutables, six étapes de déploiement, des repères citables et une FAQ reprise après coupure — avec liens vers l’accueil, le comparatif launchd vs PM2 et la FAQ lignes d’eau APFS.
Pourquoi le TLS casse sur un Mac Mini loué en 7×24
- Dérive du défi. HTTP-01 échoue quand le port quatre-vingts se ferme ; les jetons DNS-01 expirent s’ils ne vivent que dans l’historique shell.
- Rayon de rechargement. Un
renew-hooknaïf redémarre tous les services — y compris une passerelle OpenClaw en lot nocturne — au lieu de nginx seul. - Angle mort des sondes. Les sondes santé surveillent le PID, pas
notAfter: le monitoring reste vert pendant qu’ERR_CERT_DATE_INVALID frappe les utilisateurs.
HTTP-01 vs DNS-01 : quel défi certbot pour votre location ?
Un seul mode principal par nom d’hôte ; les wildcards imposent DNS-01 ; un reverse proxy mono-hôte sur Mac Mini loué reste souvent en HTTP-01 si les ports quatre-vingts et quatre cent quarante-trois sont publics.
- HTTP-01 : nginx sert
/.well-known/acme-challenge/. - DNS-01 : plugin API ; jetons dans le trousseau, jamais dans git.
- Staging :
certbot certonly --stagingavant le plist de production.
sudo certbot certonly --nginx -d gateway.example.dev \
--deploy-hook /usr/local/bin/reload-proxy.sh
export CF_DNS_API_TOKEN="$(security find-generic-password -s certbot-cf -w)"
sudo -E certbot certonly --dns-cloudflare \
-d gateway.example.dev -d '*.gateway.example.dev'
Matrice certbot et launchd 7×24
| Contrôle | Valeur de départ | Note |
|---|---|---|
| Mode de défi | HTTP-01 ou DNS-01 | Wildcard → DNS-01 obligatoire |
| Calendrier renew | 03:17 et 15:17 locales | Décaler des sauvegardes et lots nuit |
| Sonde santé | curl 60s + seuil 7j | Pager si <14j hors silence |
| Bande silencieuse UTC | 22:00–06:00 +30 min | P1 contourne le silence |
| Planificateur | launchd LaunchAgent | crontab pour labo uniquement |
| renew-hook | Rechargement proxy seul | Ne pas redémarrer OpenClaw |
launchd, renew-hook et repli crontab
Sur une location 7×24, préférez launchd StartCalendarInterval : journaux à chemins fixes et rechargement après reboot. Associez un renew-hook qui valide nginx avant HUP.
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0"><dict>
<key>Label</key><string>com.runmini.certbot-renew</string>
<key>ProgramArguments</key><array>
<string>/opt/homebrew/bin/certbot</string>
<string>renew</string><string>--quiet</string>
<string>--deploy-hook</string>
<string>/usr/local/bin/reload-proxy.sh</string>
</array>
<key>StartCalendarInterval</key><array>
<dict><key>Hour</key><integer>3</integer><key>Minute</key><integer>17</integer></dict>
<dict><key>Hour</key><integer>15</integer><key>Minute</key><integer>17</integer></dict>
</array>
<key>StandardOutPath</key><string>/var/log/certbot-renew.log</string>
</dict></plist>
#!/bin/bash
# reload-proxy.sh — proxy uniquement ; ne pas toucher OpenClaw
nginx -t && kill -HUP "$(cat /usr/local/var/run/nginx.pid)"
17 3,15 * * * /opt/homebrew/bin/certbot renew -q \
--deploy-hook /usr/local/bin/reload-proxy.sh \
>> /var/log/certbot-renew.log 2>&1
Chargez avec launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.runmini.certbot-renew.plist. Passerelles Node en parallèle : voir launchd vs PM2.
Fenêtre silencieuse, sondes santé et routage d’alertes
Placez le renouvellement certbot dans une fenêtre silencieuse UTC pour que le bruit de rechargement n’éveille pas l’astreinte. Une sonde distincte toutes les soixante secondes distingue TLS et panne amont.
#!/bin/bash
# com.runmini.tls-health
END=$(openssl s_client -connect 127.0.0.1:443 -servername gateway.example.dev 2>/dev/null \
| openssl x509 -noout -enddate | cut -d= -f2)
EPOCH=$(date -j -f "%b %e %T %Y %Z" "$END" "+%s")
DAYS=$(( (EPOCH - $(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 || exit 1
- Supprimer les webhooks non P1 22:00–06:00 UTC plus trente minutes de tampon renew.
- Pager immédiatement si
days_left < 7; avertissement seulement au-delà de quatorze jours. - Étiqueter
tls_renewvsupstream_downpour éviter le débogage SSH à l’aveugle.
Lignes d’eau disque APFS et journaux certbot
Un disque plein fait échouer l’écriture ACME et fait gonfler certbot-renew.log. Alignez-vous sur la FAQ lignes d’eau APFS avant tout renew sans surveillance.
- Jaune quinze pour cent APFS libre — suspendre renew ; rouge dix pour cent — arrêter certbot et pager.
- Rotation
certbot-renew.logà 128 Mo × 7 jours via newsyslog. - Décaler renew des sauvegardes profondes ; voir launchd throttle I/O.
Six étapes pour un TLS 7×24 sur Mac Mini loué
- Provisionner. Achat, SSH via centre d’aide, baseline
df -hdepuis l’accueil. - Certificats staging.
certbot certonly --stagingselon le mode choisi. - Agent launchd. plist renew +
reload-proxy.sh; suivrecertbot-renew.log. - Sonde santé. TLS soixante secondes +
/healthz; pager hors bande silencieuse. - Production. Rejouer sans staging ; journaliser
notAfter. - Exercice.
certbot renew --dry-run; rechargement proxy seul et alertes UTC atténuées.
Repères citables : renew 03:17 et 15:17 locales ; sonde 60 s ; seuil TLS 14 j / page immédiate 7 j ; silence 22:00–06:00 UTC +30 min ; APFS jaune 15 % rouge 10 % ; journal certbot 128 Mo × 7 ; renew-hook nginx seul.
FAQ reprise après coupure secteur
- Le renew certbot interrompt-il OpenClaw la nuit ?
- Non si renew-hook ne recharge que le proxy TLS. Gardez OpenClaw en loopback ; testez avec
certbot renew --dry-rundans la fenêtre silencieuse. - launchd ou crontab pour certbot sur macOS ?
- Préférez launchd sur un hébergement 7×24 loué : survie au reboot et chemins de journaux figés. crontab convient au labo local.
- Que contrôler après une coupure secteur ?
launchctl print gui/$(id -u)/com.runmini.certbot-renew,certbot certificates, APFS au-dessus du seuil jaune selon la FAQ APFS, puis réactiver les alertes.
Louer un Mac Mini pour TLS et sondes 7×24
RunMini maintient l’Apple Silicon en ligne pour passerelles et proxys qui exigent un renouvellement certbot sans surveillance humaine. Comparez les forfaits, ouvrez l’achat sans compte et lisez l’aide SSH/VNC après commande.
En synthèse : figez le mode de défi, les timers launchd, les renew-hook proxy-only, les sondes santé à soixante secondes et les fenêtres silencieuses UTC avant de louer un Mac Mini pour du TLS 7×24. Revenez à l’accueil après votre premier certbot renew --dry-run sans page à l’astreinte.