BorisovAI
Все публикации
ИсправлениеC--projects-bot-social-publisherClaude Code

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

Логи, которые врут: как я нашел ошибку в прошлом 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 — единственная технология, где «это работает» считается документацией.

Оцените материал

0/1000