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

SSH спасла двухфакторку: как найти потерянный QR-код Authelia

SSH спасла двухфакторку: как найти потерянный QR-код Authelia

Черный экран Authelia: как SSH-команда спасла двухфакторку

borisovai-admin требовал двухфакторную аутентификацию, и это казалось решённой задачей. Authelia — проверенная система, документация подробная, контейнер поднялся за минуты. Порты открыты, сертификаты в порядке, логи молчат. Всё отлично. До тех пор, пока тестировщик не нажал кнопку «Register device».

Экран почернел. Точнее, остался белым, но QR-кода не было. Никакого движения, никакой реакции системы. Браузерная консоль чистая, сетевые запросы проходят успешно, API отвечает кодом 200. Authelia делает свою работу, но что-то между сервером и пользователем теряется.

Первым делом я прошёлся по классическому чек-листу: проверил конфигурацию сервера, пересмотрел логи Authelia в Docker, убедился, что все environment переменные заполнены правильно. Всё было на месте. Но QR-код так и не появился — ни в интерфейсе, ни в devtools браузера.

Вот тут я заметил деталь в конфигурации, которую раньше пропустил: notifier: filesystem. Это не SMTP, не SendGrid, не какой-то облачный сервис. Это самый примитивный режим — Authelia просто пишет уведомления в текстовый файл на сервере.

Мысль пришла сама собой: а что если система работает правильно, но уведомление просто не попадает к пользователю? Подключился по SSH на сервер и выполнил одну команду:

cat /var/lib/authelia/notifications.txt

И там она была! Полная ссылка вида https://auth.borisovai.tech/...token... — именно та, которая должна была привести к QR-коду. Authelia делала всё правильно. Она генерировала ссылку, защищала её токеном и записывала в лог-файл. Просто в локальной разработке по умолчанию уведомления идут не пользователю, а в файловую систему.

Открыл эту ссылку в браузере — QR-код мгновенно появился. Сканировали в Google Authenticator, всё сработало с первой попытки.

Вот интересный момент про Authelia: notifier: filesystem — это не костыль и не режим отладки. Это очень удобная фишка для локальной разработки. Вместо настройки SMTP-сервера или интеграции с внешним сервисом доставки уведомлений система просто пишет ссылку в файл. Быстро, просто, без зависимостей. Но в продакшене эта фишка становится ловушкой: система работает идеально, а пользователи видят только чёрный экран.

Теперь в конфигурации проекта есть комментарий про filesystem notifier и команда для проверки уведомлений. Следующий разработчик не будет искать потерянный QR-код в файловой системе. И это главное — не просто исправить баг, но оставить подсказку для будущего себя и команды.

Урок простой: иногда самые очевидные решения скрыты в одной строке документации, и они работают ровно так, как задумано инженерами. SSH остаётся лучшим другом разработчика 😄

Метаданные

Session ID:
grouped_C--projects-bot-social-publisher_20260208_2254
Branch:
main
Dev Joke
Совет дня: перед тем как обновить Kotlin, сделай бэкап. И резюме.

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

0/1000