BASH
#certbot#letsencrypt#cron#nginx#renew#deploy-hook

Certbot: продление сертификата и cron с deploy-hook для nginx

Команды certbot renew, проверка через --dry-run, настройка cron с --deploy-hook для перезагрузки nginx. По документации Certbot.

Как использовать

  1. Проверка без продления: certbot renew --dry-run --deploy-hook "echo OK".
  2. В crontab root добавь задачу на certbot renew с --deploy-hook "systemctl reload nginx".
  3. Используй полный путь к 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 выполняется только при успешном обновлении).