2026 Аренда Mac Mini 7×24: матрица certbot, launchd health-пробы и параметры ночного тихого окна

Независимые разработчики, которые арендуют Mac Mini под шлюзы, reverse proxy и мониторинг 7×24, теряют HTTPS, когда certbot продление съезжает с календаря или renew-hook перезапускает не тот процесс в два часа ночи.

Этот runbook фиксирует матрицу решений для режима challenge, таймеров launchd, health-проб и UTC тихого окна на Apple Silicon. Внутри — исполняемые фрагменты plist и crontab, шесть шагов внедрения, опорные пороги и ссылки на главную, launchd vs PM2 и FAQ водораздела APFS.

Три операционные боли TLS на аренде Mac Mini 7×24

  1. Дрейф challenge. HTTP-01 падает, когда порт 80 закрыт; токены DNS-01 истекают, если API-ключи живут только в истории shell.
  2. Радиус reload. Наивный renew-hook рестартует все сервисы — включая шлюз OpenClaw на loopback — вместо только nginx или Caddy.
  3. Слепые пробы. Мониторинг смотрит uptime процесса, а не notAfter сертификата: TLS истекает при «зелёном» health.

HTTP-01 vs DNS-01: какой challenge certbot выбрать на аренде?

Один основной режим на hostname. Wildcard требует DNS-01; одиночный reverse proxy на арендованной Mac Mini часто остаётся на HTTP-01, если порты 80 и 443 доступны из интернета.

  • HTTP-01: nginx отдаёт /.well-known/acme-challenge/ при достижимом порте 80.
  • DNS-01: плагин с API для wildcard или закрытого 80 — храните токен в Keychain, не в plaintext plist.
certbot certonly --staging --nginx -d gateway.example.dev
# production после dry-run:
certbot certonly --nginx -d gateway.example.dev --deploy-hook /usr/local/bin/reload-proxy.sh

Матрица certbot, launchd и хостинга 7×24

Зафиксируйте параметры в git — они переживают consumer uplink и один том APFS на M4.

Контроль Стартовое значение Стабильность / безопасность
Режим challenge HTTP-01 or DNS-01 (one primary) Wildcards force DNS-01; document open ports in runbook.
Каденция renew 03:17 and 15:17 local daily Разнести с бэкапом и ночным batch.
Интервал health-пробы 60s curl + 7d expiry gate Пейдж при < 14 дней вне тишины.
UTC тихая полоса 22:00–06:00 + 30 min buffer Глушить renew-noise webhook; P1 обходит тишину.
Планировщик launchd LaunchAgent crontab — для lab; см. фрагмент ниже.
Область renew-hook Только reload прокси Не рестартовать label OpenClaw при смене cert.

launchd, renew-hook и запасной crontab

На аренде предпочитайте launchd StartCalendarInterval: логи в предсказуемых путях, jobs переживают reboot. Пара renew-hook с nginx -t перед reload.

# ~/Library/LaunchAgents/com.runmini.certbot-renew.plist (excerpt)
ProgramArguments: certbot renew --quiet --deploy-hook /usr/local/bin/reload-proxy.sh
StartCalendarInterval: 03:17 and 15:17 daily
StandardOutPath: /var/log/certbot-renew.log

# renew-hook — proxy only; do not restart OpenClaw gateway
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

Загрузка: launchctl bootstrap gui/$(id -u) …/com.runmini.certbot-renew.plist. Сравните с матрицей launchd vs PM2, если на том же хосте Node-шлюз.

Тихое окно, health-пробы и маршрутизация алертов

Планируйте certbot продление внутри UTC тихого окна, чтобы ожидаемый reload не будил on-call. Отдельный LaunchAgent каждые 60 секунд проверяет TLS и upstream.

# 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
  • Глушить не-P1 webhook 22:00–06:00 UTC плюс 30 минут буфера после renew.
  • Немедленный пейдж при days_left < 7; warn-only выше 14 дней.

Диск и логи on APFS rentals

Согласуйте с FAQ водораздела APFS до безнадзорного renew.

  • Жёлтая зона 15% свободного APFS — пауза renew; красная 10% — stop certbot и пейдж.
  • Cap certbot-renew.log at 128 MB via newsyslog.

Шесть шагов TLS 7×24 на арендованной Mac Mini

  1. Провижининг: оформите аренду, SSH из центр помощи, baseline df -h from главную.
  2. Staging: certbot certonly --staging с выбранным challenge.
  3. launchd: загрузите plist renew и reload-proxy.sh; tail certbot-renew.log.
  4. Health-проба: LaunchAgent 60 с на TLS и /healthz; пейдж вне тишины.
  5. Production: повторите без staging; зафиксируйте notAfter.
  6. Учебный прогон: certbot renew --dry-run; подтвердите proxy-only reload и приглушённые UTC-алерты.

Опорные величины для runbook и SLA

Опорные величины: renew at 03:17 and 15:17 local; health probe 60s; TLS page threshold 14 days left, immediate at 7 days; silence 22:00–06:00 UTC plus 30 minute buffer; APFS yellow 15% red 10%; certbot log cap 128 MB × 7 rotations; renew-hook reloads nginx only.

FAQ: обесточивание и ночной шлюз OpenClaw

Сломает ли certbot renew шлюз OpenClaw во время ночного батча?

Нет, если renew-hook перезагружает только nginx или Caddy. Держите OpenClaw на loopback; не трогайте label шлюза при ротации сертификата. Прогоните certbot renew --dry-run внутри тихого окна.

launchd или crontab для certbot на macOS?

На хостинге 7×24 используйте LaunchAgents — они переживают reboot. crontab подходит для lab; тот же --deploy-hook в обоих случаях.

Что проверить первым после краткого обесточивания?

launchctl print gui/$(id -u)/com.runmini.certbot-renew, certbot certificates, APFS выше жёлтого порога по FAQ APFS, затем включите исходящие алерты.

Аренда Mac Mini для TLS и health-проб 7×24

RunMini Apple Silicon nodes stay online for gateways, proxies, and monitors that need unattended certbot renewal. Compare тарифы, open оформите аренду without login, and read SSH / VNC центр помощи after checkout.

Итог. Заморозьте challenge, таймеры launchd, proxy-only renew-hook, health-пробы 60 с и UTC тишину до того, как арендуете Mac Mini под 7×24 TLS. Вернитесь на главную после первого dry-run без ложного пейджа.

Аренда Mac Mini — TLS 7×24