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
- Дрейф challenge. HTTP-01 падает, когда порт 80 закрыт; токены DNS-01 истекают, если API-ключи живут только в истории shell.
- Радиус reload. Наивный
renew-hookрестартует все сервисы — включая шлюз OpenClaw на loopback — вместо только nginx или Caddy. - Слепые пробы. Мониторинг смотрит 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.logat 128 MB via newsyslog.
Шесть шагов TLS 7×24 на арендованной Mac Mini
- Провижининг: оформите аренду, SSH из центр помощи, baseline
df -hfrom главную. - Staging:
certbot certonly --stagingс выбранным challenge. - launchd: загрузите plist renew и
reload-proxy.sh; tailcertbot-renew.log. - Health-проба: LaunchAgent 60 с на TLS и
/healthz; пейдж вне тишины. - Production: повторите без staging; зафиксируйте
notAfter. - Учебный прогон:
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 без ложного пейджа.