2026 Mac Mini loué 7×24 : matrice certbot, launchd, sondes santé et paramètres de fenêtre silencieuse nocturne

Lecture : 9 min

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

  1. 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.
  2. Rayon de rechargement. Un renew-hook naïf redémarre tous les services — y compris une passerelle OpenClaw en lot nocturne — au lieu de nginx seul.
  3. 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 --staging avant 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éfiHTTP-01 ou DNS-01Wildcard → DNS-01 obligatoire
Calendrier renew03:17 et 15:17 localesDécaler des sauvegardes et lots nuit
Sonde santécurl 60s + seuil 7jPager si <14j hors silence
Bande silencieuse UTC22:00–06:00 +30 minP1 contourne le silence
Planificateurlaunchd LaunchAgentcrontab pour labo uniquement
renew-hookRechargement proxy seulNe 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_renew vs upstream_down pour é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é

  1. Provisionner. Achat, SSH via centre d’aide, baseline df -h depuis l’accueil.
  2. Certificats staging. certbot certonly --staging selon le mode choisi.
  3. Agent launchd. plist renew + reload-proxy.sh ; suivre certbot-renew.log.
  4. Sonde santé. TLS soixante secondes + /healthz ; pager hors bande silencieuse.
  5. Production. Rejouer sans staging ; journaliser notAfter.
  6. 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-run dans 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.

Louer Mac Mini · TLS 7×24