У меня уже несколько сервисов: фото, вики, таблицы, файлы, трекинг. Отдельный пароль для каждого быстро превращается в «qwerty123» везде. Поэтому вход везде один, через Keycloak.
Простыми словами: это как «Войти через Google», только сервер ваш. Сервисы не хранят ваш пароль, они спрашивают Keycloak, вы ли это. Меняете пароль или включаете двухфакторку в одном месте, и это работает везде.
Что это даёт вам:
один логин для веб-версии фото, приложения Immich и вики
регистрация за минуту, без ожидания инвайта
никаких аккаунтов Google или Яндекса в цепочке
🔧 Изнутри
Единый вход — это единая точка отказа: упал Keycloak, и не войти никуда. Поэтому у меня два узла в кластере. Они находят друг друга через таблицу в базе, общаются по mTLS и обновляются по очереди, так что один всегда в работе.
Байка из продакшена. Однажды страница входа стала грузиться мучительно долго. Keycloak был ни при чём: firewall резал прокси доступ к одному узлу. Прокси ждал таймаута и только потом шёл на второй. Кластер работал и при этом маскировал проблему.
💡 Совет: на сервере с Docker никогда не делайте systemctl restart nftables. Стандартный конфиг начинается с flush ruleset и снесёт правила Docker вместе со всей сетью контейнеров. Применяйте свои правила через nft -f файл.
━━━━━━━━━━━━━━━
🛠 Сделаю сам
Ansible: кластер из двух узлов, MariaDB, nftables, по желанию Kerberos для доменной сети
→ github.com/apnagaev/keycloak
☁️ Хочу готовое
→ Зарегистрируйтесь на photo.nagaev.biz, этот же аккаунт откроет вики
🏢 Нужен такой вход для команды или компании? Пиши в комментарии
Рекламный пост