Проблеми з автоматичним оновленням Let's Encrypt
Processing /etc/letsencrypt/renewal/mail.domain.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Account registered.
Simulating renewal of an existing certificate for mail.slavaswim.com
Failed to renew certificate mail.domain.com with error: Could not bind TCP port 80
because it is already in use by another process on this system (such as a web server).
Please stop the program in question and then try again.Помилка чітко показує: попередній сертифікат видано у режимі standalone, тому certbot під час поновлення намагається захопити порт 80, але він уже зайнятий (Nginx або Apache).
Є два правильні варіанти, залежно від того, як ти хочеш це робити надалі.
ВАРІАНТ 1: Зупинити веб-сервер → поновити → запустити назад
(Швидко, але з секундним простоєм)
Перевір, який веб-сервер використовується:
sudo ss -tlnp | grep :80Потім:
sudo systemctl stop nginx
або
sudo systemctl stop apache2Тепер понови:
Або конкретний домен:
Після цього:
І перезавантажити поштові служби:
ВАРІАНТ 2: Перевести сертифікат на webroot (рекомендовано)
Так сертифікат поновлюватиметься без зупинки веб-сервера.
Переконайся, що сайт domain.com або окремий віртуальний хост вже обслуговує /var/www/domain.com (або інший шлях).
Тоді виконай:
Цей спосіб:
не чіпає порт 80;
працює через HTTP-файли
/.well-known/acme-challenge/;після цього
certbot renewбуде працювати без помилок.
Чому у тебе виникла проблема
Твій файл:
містить щось подібне:
Тому certbot намагається сам слухати порт 80, а там уже веб-сервер.
Що зробити?
Ось покрокова інструкція, як правильно з самого початку створювати сайт з піддоменом mail. на Apache і налаштовувати для нього сертифікат Let's Encrypt.
Крок 1. Підготовка
Каталог сайту:
Піддомен пошти:
Apache вже встановлено і слухає порти 80 та 443.
Certbot встановлено.
Окрім створеного VirtualHost для основного сайту треба створити VirtualHost для mail-піддомену
Крок 2. Створюємо VirtualHost для mail-піддомену (порт 80)
Чому окремо: щоб Let's Encrypt міг отримати challenge файли для mail.domain.com без редіректів.
Файл: /etc/apache2/sites-available/mail.domain.com.conf
Активуємо VHost і перезавантажуємо Apache:
Крок 3. Тестуємо доступність webroot для mail
Створюємо тестовий файл:
Перевіряємо:
Очікуємо:
Якщо отримуємо 404 або редірект — потрібно виправити VHost для mail, щоб не було редіректів на HTTPS.
Крок 4. Створюємо початковий сертифікат для mail
Це створить файли сертифіката в:
Крок 5. Перевірка dry-run
Щоб переконатися, що поновлення працюватиме автоматично:
Якщо успішно — значить все налаштовано правильно.
Крок 6. Налаштування автоматичного оновлення
У файлі /etc/letsencrypt/renewal/mail.domain.com.conf має бути:
Після цього certbot renew буде автоматично оновлювати сертифікат.
Крок 7. Перезавантаження поштових служб
Після поновлення сертифікатів потрібно оновити Postfix і Dovecot, щоб вони використовували нові ключі:
Підсумкові правила
Для
mail.обов’язково окремий VHost на порт 80 без редіректів.Webroot для mail повинен бути доступний через HTTP.
Початковий сертифікат створюємо через
certbot certonly --webroot.Для майбутнього поновлення перевіряємо dry-run.
Після поновлення перезавантажуємо поштові служби.
Last updated