Certbot: продление сертификата и cron с deploy-hook для nginx
Команды certbot renew, проверка через --dry-run, настройка cron с --deploy-hook для перезагрузки nginx. По документации Certbot.
Как использовать
- Проверка без продления: certbot renew --dry-run --deploy-hook "echo OK".
- В crontab root добавь задачу на certbot renew с --deploy-hook "systemctl reload nginx".
- Используй полный путь к certbot: /usr/bin/certbot.
Сертификаты Let’s Encrypt действуют 90 дней. Команда certbot renew проверяет срок и при необходимости продлевает сертификат. Флаг --deploy-hook запускает указанную команду только после успешного продления. По Certbot — Renewing certificates.
Проверка без реального продления
Имитация продления: сертификат не меняется, но видно, пройдёт ли процесс и выполнится ли hook.
certbot renew --dry-run --deploy-hook "echo OK"
Если в выводе есть OK и нет ошибок — продление настроено верно.
Ручное продление с перезагрузкой nginx
Принудительное обновление (например, для проверки или после смены домена):
certbot renew --force-renewal --deploy-hook "systemctl reload nginx"
В обычной работе достаточно автоматического продления по cron.
Cron: ежедневная проверка и reload nginx
Задача выполняется от root. При успешном продлении certbot вызовет systemctl reload nginx.
EDITOR=nano crontab -e
Строка для вставки (каждый день в 03:00):
0 3 * * * /usr/bin/certbot renew --quiet --deploy-hook "systemctl reload nginx" >/dev/null 2>&1
Вариант с записью в лог (для отладки):
0 3 * * * /usr/bin/certbot renew --quiet --deploy-hook "systemctl reload nginx" >> /var/log/le-renew.log 2>&1
Просмотр лога:
tail -20 /var/log/le-renew.log
Источники: Certbot — Renewing certificates, Certbot — Deploy hooks (deploy-hook выполняется только при успешном обновлении).