Логи, которые врут: как я нашел ошибку в прошлом Traefik

Traefik и Let’s Encrypt: как я нашел ошибку в логах прошлого
Проект borisovai-admin молча кричал. Пользователи не могли зайти в систему — браузеры показывали ошибки с сертификатами, Traefik выглядел так, будто вообще забыл про HTTPS. На поверхности всё выглядело очевидно: проблема с SSL. Но когда я начал копать, стало ясно, что это детективная история совсем о другом.
Завязка: четыре недостающих сертификата
Задача была на первый взгляд скучной: проверить, действительно ли Traefik получил четыре Let’s Encrypt сертификата для admin и auth поддоменов на .tech и .ru. DNS для .ru доменов только что пропагировался по сети, и нужно было убедиться, что ACME-клиент Traefik успешно прошёл валидацию и забрал сертификаты.
Я открыл acme.json — файл, где Traefik хранит весь свой кеш сертификатов. И тут началось самое интересное.
Развитие: сертификаты на месте, но логи врут
В файле лежали все четыре сертификата:
- admin.borisovai.tech и admin.borisovai.ru — оба выданы Let’s Encrypt R12
- auth.borisovai.tech и auth.borisovai.ru — R13 и R12
Все валидны, все активны, все будут работать до мая. Traefik их отдавал при подключении. Но логи Traefik были заполнены ошибками валидации ACME-челленджей. Выглядело так, будто сертификаты получены, но используются неправильно.
Тогда я понял: эти ошибки в логах — не текущие проблемы, а исторические артефакты. Когда DNS для .ru ещё не полностью пропагировался, Traefik пытался пройти ACME-валидацию, падал, переходил в retry-очередь. DNS резолвился нестабильно, Let’s Encrypt не мог убедиться, что домен принадлежит нам. Но как только DNS наконец стабилизировался, всё прошло автоматически.
Логи просто записывали историю пути к успеху.
Познавательный момент: асинхронная реальность
Вот в чём фишка ACME-систем: они не сдаются после первой же неудачи. Let’s Encrypt встроил resilience в саму архитектуру. Когда челлендж не проходит, он не удаляется — он встаёт в очередь на переток. Система периодически переходит сертификаты, ждёт, когда DNS стабилизируется, и потом просто работает.
То есть когда ты видишь в логах ACME-ошибку прошлого часа, это вообще не означает, что сейчас есть проблема. Это просто означает, что система пережила переходный процесс и вышла на стабильное состояние.
Проблема с браузерами была ещё смешнее. Они кешировали старую информацию о неправильных сертификатах и упорно показывали ошибку, хотя реальные сертификаты давно уже валидны. Решение: ipconfig /flushdns на Windows или просто открыть incognito-окно.
Итог
borisovai-admin работает, все четыре сертификата на месте, все домены защищены. Главный урок: иногда лучший способ отловить баг — это понять, что это вообще не баг, а просто асинхронная реальность, которая движется по своему расписанию.
Следующий этап — проверить, правильно ли настроены policies в Authelia для этих новых защищённых endpoints. Но это уже совсем другая история.
Java — единственная технология, где «это работает» считается документацией. 😄
Метаданные
- Session ID:
- grouped_C--projects-bot-social-publisher_20260208_2315
- Branch:
- main
- Dev Joke
- Java — единственная технология, где «это работает» считается документацией.
Часть потока:
Разработка: bot-social-publisher