Команда инженеров · свой ЦОД в РФ · своё железо · своя панель · CloudStack + Linstor · MCP · база знаний по self-hosted

Keycloakv26.7.0

Свой SSO-сервер и провайдер идентификации на вашем сервере: единый вход для всех приложений по OpenID Connect, OAuth2 и SAML, федерация LDAP/AD, соц-логин, MFA и роли. Корпоративный стандарт, замена Okta и Auth0. Лицензия Apache-2.0.

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

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

После создания сервера Keycloak ставится автоматически в боевом режиме (start --optimized) с PostgreSQL: docker поднимает стек, а Caddy выпускает Let's Encrypt и открывает доступ по HTTPS на magic-DNS домене. Переменные под reverse-proxy (KC_HOSTNAME, KC_PROXY_HEADERS) выставлены правильно - та частая грабля, из-за которой у самостоятельно поднятого Keycloak ломается админка, здесь закрыта.

Что внутри

Keycloak (Java/Quarkus)
сервер SSO, админ-консоль и API, в боевом режиме с преднастроенным образом под Postgres.
PostgreSQL 16
хранение realms, пользователей, клиентов и ролей.
Caddy
reverse-proxy и авто-TLS (Let's Encrypt).

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

  • Админ закрыт паролем серверавход в консоль сразу под паролем вашей машины, инстанс нельзя занять в первые минуты после запуска.
  • Боевой режим, не devstart --optimized с PostgreSQL (данные переживают рестарт), а не start-dev с эфемерной H2.
  • fail2banбанит IP после серии неудачных попыток входа по SSH.
  • HTTPS + security-заголовкиLet's Encrypt (авто-продление), HSTS, X-Content-Type-Options, Referrer-Policy. Keycloak слушает только localhost, наружу - через Caddy.

Как войти

  1. Адрес формируется из IP сервера: замените точки на дефисы и добавьте .fatmetal.net. Пример: IP 45.15.159.10 -> https://45-15-159-10.fatmetal.net/. Админ-консоль - /admin/.

  2. Логин: admin. Пароль: тот же, что у вашего сервера (машины) - он в личном кабинете. Сразу смените его в Account -> Signing in.

  3. Дальше заведите отдельный realm (не master) под свои приложения и пользователей, подключайте клиентов по OIDC/SAML, включайте MFA и федерацию LDAP.

Важно

Keycloak - на JVM: холодный старт дольше и памяти нужно больше, чем у Go/Node-аналогов, комфортный тариф - CPU4-RAM8. Все realms, пользователи и клиенты лежат в томе PostgreSQL (pgdata) - бэкапьте его, без него вход и настройки не восстановить. Порт приложения наружу не публикуется - только через Caddy с TLS.

Лицензия

Keycloak - открытый код под лицензией Apache-2.0: свободное использование, в том числе коммерческое.

Свой домен

Наведите CNAME на этот сервер, впишите домен в /opt/Caddyfile и в KC_HOSTNAME_URL (/opt/keycloak/.env), затем docker compose up -d и docker restart keycloak-caddy - Caddy выпустит Let's Encrypt. KC_HOSTNAME обязан совпадать с публичным адресом, иначе редиректы входа сломаются.

Требования

Ubuntu 24.04, открытые порты 80/443. Из-за JVM минимум 4 ГБ RAM, оптимум CPU4-RAM8. Стек в простое занимает около 0.64 ГБ (keycloak ~574, postgres ~49, caddy ~15 МиБ). Первый старт дольше обычного: сборка оптимизированного образа + миграции БД (несколько минут).

Подробный разбор с замерами и скриншотами →
Keycloak990 ₽/месЗапустить →
Спросить инженера в TelegramМы на связи