Команда инженеров · свой ЦОД в РФ · своё железо · своя панель · CloudStack + Linstor · MCP · база знаний по self-hosted
Проверено
1 августа 2026 г.
Запуск
docker compose (build --optimized) + Caddy
Сложность
Средний
Ключевой замер
RAM idle ~0.64 GB весь стек
Версия
26.7.0
Репозиторий
GitHub →
Идентификация и SSO

Keycloak

Свой SSO-сервер и провайдер идентификации: единый вход для всех приложений по OpenID Connect, OAuth2 и SAML, федерация LDAP/AD, соц-логин и MFA. Развернули актуальную версию в боевом режиме, замерили и проверили: вход администратора и админ-консоль работают вживую.

Август 2026 ~9 минут чтения Fatmetal Team
Identity / SSO Лицензия: Apache-2.0 Статус: запущен у нас, 26.7.0

Вердикт

Подходит
  • нужен единый вход (SSO) для нескольких своих приложений по OIDC/OAuth2/SAML
  • важна федерация пользователей из LDAP/Active Directory и соц-логин
  • нужен зрелый корпоративный стандарт, под который написаны интеграции у сотен продуктов
Не подходит
  • нужен просто логин для одного небольшого приложения - тяжело для задачи
  • жалко RAM: JVM прожорливее легких Go/Node-аналогов, комфортно от 4 ГБ
  • хочется максимально простого IdP - authentik легче в освоении
Мин. тариф: CPU4-RAM8-DISK100 Рекомендуем: CPU4-RAM8-DISK100 Сложность: medium-high Время запуска: ~2-4 мин Главный риск: неверный KC_HOSTNAME за прокси Прод-готовность: из коробки (Postgres + TLS + пароль сервера)
Что это

Что это и какую задачу решает

Keycloak - open-source сервер управления доступом (IAM) и единого входа (SSO) под крылом CNCF, исторически от Red Hat. Вы поднимаете его один раз, и все ваши приложения перестают хранить пароли у себя: они аутентифицируют пользователей через Keycloak по стандартным протоколам - OpenID Connect (OIDC), OAuth 2.0 и SAML 2.0. Один вход, один каталог пользователей, одна точка для MFA и политик.

Из коробки: единый вход между приложениями, брокеринг внешних провайдеров и социальный логин (Google, GitHub, Microsoft и другие), федерация пользователей из LDAP и Active Directory, многофакторная аутентификация (TOTP/WebAuthn), самостоятельная регистрация, роли и тонкая авторизация, мультиарендность через realms. Это приватная self-hosted замена облачным Okta, Auth0 и Microsoft Entra ID: учетные записи остаются на вашем сервере, без оплаты за активных пользователей.

Java / QuarkusOpenID ConnectOAuth 2.0SAML 2.0PostgreSQLDocker
Сравнение

Чем отличается от облачных и от соседей

Сравнение с облачными IdP и с тем, что у нас уже есть в каталоге.

ПараметрKeycloak (self-hosted)Облачный IdP (Okta/Auth0)
Где данныена вашем серверев облаке вендора
ПротоколыOIDC + OAuth2 + SAML разоместь, часть - в платных планах
Федерация LDAP/ADвстроенаобычно платно
Ценасвой сервер, без оплаты за MAUподписка за активных пользователей
Зрелость / интеграцииде-факто стандартвысокая

Если сравнивать внутри self-host: authentik - легче и проще в освоении, хорош для небольших установок; FreeIPA - про идентификацию Linux-хостов (Kerberos/LDAP/CA), другой слой. Keycloak - самый тяжелый из трех, но это корпоративный эталон app-SSO с максимумом протоколов и федерации.

Под капотом

Тех-стек и архитектура

Сервер Keycloak работает на Quarkus (со времен v17 старая сборка на WildFly убрана). Для боевого режима нужна база данных - здесь PostgreSQL 16 (встроенная H2 - только для dev и не переживает рестарт). Мы разворачиваем не start-dev, а именно start --optimized с преднастроенным под Postgres образом - это правильный прод-путь.

Наружу приложение слушает только localhost (порт 8080), health и метрики - на отдельном management-порту 9000. Публичный доступ - через Caddy обратным прокси с авто-TLS. Все realms, пользователи, клиенты и роли лежат в томе PostgreSQL.

Страница входа Keycloak 26.7.0 с брендированной формой Sign in to your account
Рабочий Keycloak 26.7.0: страница входа на magic-DNS домене с валидным TLS. Тариф CPU4-RAM8.
Конфигурация

Минимальная конфигурация

Реальные требования против официального минимума.

Минимум (из-за JVM)CPU4-RAM8-DISK100
Реально в простое (весь стек)~0.64 GB RAM (keycloak 574 + postgres 49 + caddy 15 MiB)
Образы на диске~1.49 GB рантайм (keycloak 761 + postgres 642 + caddy 89 MB)
Рекомендуем тарифCPU4-RAM8-DISK100
i

Важно: Keycloak на JVM прожорливее Go/Node-аналогов и дольше стартует. На 2 ГБ RAM он будет тесниться - берите от 4 ГБ. Первый старт дольше обычного: сборка оптимизированного образа плюс миграции базы.

В маркетплейсе Fatmetal

Не хотите ставить руками?

Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий домен, валидный TLS, правильно настроенный за прокси Keycloak и вход администратора паролем сервера.

Рекомендуемая конфигурация: CPU4-RAM8-DISK100

В маркетплейс →
Развертывание

Развертывание на Fatmetal

Базовый путь - Cloud Server + Ubuntu 24.04 + Docker в боевом режиме за Caddy.

  1. Создать VM

    Ubuntu 24.04 с Docker. Тариф CPU4-RAM8 - JVM Keycloak любит память.

  2. Задать переменные под прокси

    KC_HOSTNAME=https://ваш-домен
    KC_HTTP_ENABLED=true
    KC_PROXY_HEADERS=xforwarded
    KC_DB=postgres

    KC_HOSTNAME обязан совпадать с публичным адресом, иначе редиректы входа сломаются - это главная грабля.

  3. Собрать оптимизированный образ и поднять стек

    kc.sh build            # под Postgres
    docker compose up -d   # keycloak + postgres

    Проверка готовности: curl localhost:9000/health/ready должен вернуть status: UP.

  4. Закрыть TLS

    Caddy обратным прокси на :8080 - автоматический сертификат Let's Encrypt на ваш домен.

Админ-консоль Keycloak: список клиентов OpenID Connect и левое меню Users, Realm settings, Identity providers
Админ-консоль Keycloak: клиенты realm (OpenID Connect) и меню - realms, клиенты, пользователи, роли, федерация. Вход admin паролем сервера.
Замеры

Что измерили после запуска

Цифры со свежей установки в боевом режиме, весь стек без нагрузки.

Контейнеров3 (keycloak + postgres + Caddy)
RAM в простое (весь стек)~0.64 GB (keycloak ~574 MiB)
Образы на диске~1.49 GB рантайм
Health-check:9000/health/ready -> {status: UP}
Внешний откликhttps 302 -> /admin/, валидный Let's Encrypt

Вход проверили предметно: запросили токен у master-realm через OIDC token endpoint (grant_type=password, client_id=admin-cli, логин admin) - сервер отдал Bearer access_token. То есть админ-вход паролем сервера действительно пускает в консоль, а не просто отдает страницу входа.

Keycloak Identity providers: плитки соц-логина Google, GitHub, Microsoft и протоколы SAML, OpenID Connect
Identity providers: брокеринг и соц-логин из коробки - Google, GitHub, GitLab, Microsoft, а также SAML v2.0 и OpenID Connect.

Проверено на версии 26.7.0, август 2026. На новых версиях результаты могут отличаться.

Подводные камни

Где может сломаться

Реальные грабли Keycloak за прокси, на которые спотыкаются все.

админка и ссылки входа ведут на localhost:8080 вместо вашего домена

Причина. Не задан или неверен KC_HOSTNAME: Keycloak строит абсолютные URL по нему, и за прокси они уезжают на внутренний адрес.

Решение. Задайте KC_HOSTNAME=https://ваш-домен, включите KC_HTTP_ENABLED=true и KC_PROXY_HEADERS=xforwarded, перезапустите. В карте маркетплейса это уже настроено.

!

KC 26 сменил опции. Старое KC_PROXY=edge убрано - теперь KC_PROXY_HEADERS=xforwarded. Первый админ задается через KC_BOOTSTRAP_ADMIN_USERNAME/PASSWORD (старые KEYCLOAK_ADMIN* переименованы). Гайды под старые версии вводят в заблуждение.

!

Health не на 8080. В KC 26 /health/ready отвечает на management-порту 9000, а не на порту приложения. Проверяйте готовность именно там.

Безопасность

Безопасность и обновления

Сразу после входа смените пароль администратора и заведите постоянного админа (Keycloak сам подсказывает это баннером про временного bootstrap-админа). Для своих приложений работайте в отдельном realm, а не в master. Порт 8080 наружу не публикуйте - только через обратный прокси с TLS. Включите MFA для админов.

Обновление - смена тега образа и пересборка оптимизированного образа:

docker compose pull && docker compose up -d --build

Бэкап - том PostgreSQL (это все ваши realms, пользователи и клиенты):

docker exec keycloak-postgres-1 pg_dump -U keycloak keycloak > kc-backup.sql
i

Перед продом закройте: смену пароля админа и постоянного администратора, MFA, TLS на прокси, отдельный realm под приложения и регулярный бэкап тома PostgreSQL.

Рядом

Связь с другими стеками

  • Ваши приложения - подключаете как OIDC/SAML-клиентов, единый вход между ними.
  • LDAP / Active Directory - федерация существующего каталога пользователей.
  • Обратный прокси - Caddy или Nginx Proxy Manager для TLS и единого домена.
  • Мониторинг - Prometheus и Grafana по метрикам Keycloak и контейнеров.
Честно

Когда это НЕ ваш выбор

Одно небольшое приложение

Если нужен просто логин для одного сервиса, Keycloak - из пушки по воробьям. Проще встроенная авторизация приложения или легкий authentik.

Жалко памяти

JVM прожорлив: комфортно от 4 ГБ RAM. На совсем маленьком сервере под кучей сервисов Keycloak будет тесно.

Нужен максимально простой IdP

Порог входа у Keycloak выше. Если важна простота настройки и современный UI без глубины энтерпрайза - посмотрите authentik.

FAQ

Частые вопросы

Почему у меня админка ведет на localhost?

Не задан или неверен KC_HOSTNAME. Укажите его как публичный https-адрес и включите KC_PROXY_HEADERS=xforwarded. В карте маркетплейса это уже настроено.

Какие протоколы поддерживает?

OpenID Connect (OIDC), OAuth 2.0 и SAML 2.0. Плюс брокеринг внешних провайдеров и соц-логин.

Хватит ли 2 GB RAM?

Впритык. Из-за JVM Keycloak комфортно чувствует себя от 4 ГБ - берите CPU4-RAM8.

Чем отличается от authentik?

Keycloak - корпоративный эталон, тяжелее, максимум протоколов и федерации. authentik легче и проще в освоении. Ниши разные по аудитории.

Можно в продакшен?

Да. Мы разворачиваем боевой режим start --optimized с PostgreSQL и TLS. Останется сменить пароль админа, включить MFA и настроить бэкап.

Как делать бэкап?

Дампьте базу PostgreSQL (pg_dump) или бэкапьте том pgdata - там все realms, пользователи и клиенты.

Какие ограничения лицензии?

Лицензия Apache-2.0 - свободное использование, в том числе коммерческое. Ограничений на хостинг нет.

Итог

Keycloak - зрелый и мощный способ вынести аутентификацию из приложений в один SSO-сервер под своим контролем: OIDC, OAuth2 и SAML разом, федерация LDAP/AD, соц-логин и MFA, под Apache-2.0. Весь стек в простое ест около 0.64 GB, вход администратора проверили вживую. Плата за мощь - JVM и чуть более высокий порог входа, а также обязательный правильный KC_HOSTNAME за прокси, который мы закрыли в карте из коробки.

Анонсы новых разборов в Telegram-канале Новые гайды и карточки в маркетплейсе первыми @fatmetal_channel →

Этот стек у нас запущен на тарифе CPU4-RAM8. Нашли баг в гайде - напишите, поправим в течение дня.

Спросить инженера в TelegramМы на связи