Установка Keycloak на свой сервер: коротко и с данными
Конспект страницы: 7 разделов коротко, данные на 14 октября 2026 и ответы на 4 вопроса. Полный разбор с примерами: Установка Keycloak на свой сервер.
Коротко
Главная / Self-hosted / Keycloak Установка Keycloak на свой сервер делается образом quay.io/keycloak/keycloak в Docker: приложение слушает порт 8080 и хранит данные в PostgreSQL. Keycloak даёт единый вход (SSO) для всех ваших сервисов: человек вводит пароль один раз, а Nextcloud, Grafana или GitLab доверяют этому входу. Для небольшой команды хватит 2 ядер и 4 ГБ памяти с PostgreSQL рядом.
Конспект по разделам
Что делает Keycloak и когда без него можно обойтись
Keycloak это сервер идентификации с открытым кодом (лицензия Apache 2.0): он хранит пользователей, проверяет пароль и второй фактор и выдаёт приложениям подтверждение по протоколам OpenID Connect и SAML. Каждое приложение вместо собственных паролей отправляет человека на страницу входа Keycloak. Нужен он, когда у команды больше трёх-четырёх сервисов и людей надоело заводить и отключать по десять учётных записей.
Сколько памяти и ядер нужно Keycloak
Keycloak запускается как Java-приложение на Quarkus, поэтому на пустом сервере он тоже занимает порядочный объём памяти. Документация быстрого старта не называет минимальную конфигурацию, а подробный расчёт у разработчиков идёт от числа входов в секунду. Для небольшой команды ориентир такой: Ответьте на три вопроса, калькулятор покажет готовую конфигурацию
Установка Keycloak через Docker Compose с PostgreSQL
Переменные KC_BOOTSTRAP_ADMIN_USERNAME и KC_BOOTSTRAP_ADMIN_PASSWORD нужны только для первого входа. Порт привязан к 127.0.0.1, так что снаружи Keycloak виден лишь через прокси.
- Поставьте Docker скриптом curl -fsSL https://get.docker.com | sh и создайте каталог keycloak с файлом compose.yaml.
- Впишите свой домен и пароли в файл ниже.
- Запустите docker compose up -d.
- Откройте консоль по адресу https://auth.example.com/admin и войдите под администратором из переменных.
HTTPS и hostname для Keycloak за обратным прокси
Обратный прокси это сервер, который принимает HTTPS от браузера и передаёт запрос Keycloak внутри машины. Самый короткий путь дальше лежит через Caddy: достаточно блока auth.example.com { reverse_proxy 127.0.0.1:8080 }, сертификат он получит сам. Две настройки в compose-файле нужны именно за прокси.
Первый realm в Keycloak и вход через него в другие приложения
Realm в Keycloak это отдельное пространство пользователей и приложений. Не работайте в стандартном realm master: он служит для администраторов самого Keycloak.
- Создайте realm, например company, и заведите в нём пользователей или включите самостоятельную регистрацию.
- Добавьте клиент для приложения: тип OpenID Connect, адрес приложения и redirect URI из его инструкции.
- Скопируйте Client ID и секрет в настройки приложения и укажите адрес https://auth.example.com/realms/company как провайдера.
- Включите второй фактор для администраторов: Keycloak умеет одноразовые коды и ключи WebAuthn.
Копии базы и обновление Keycloak без потери пользователей
Всё, что нужно сохранять, лежит в PostgreSQL: пользователи, клиенты, роли и настройки realm. Делайте pg_dump по расписанию и храните дамп на другом сервере или в S3, как в разделе про бэкапы. Файлов в контейнере Keycloak не хранит.
Установите приложение без консоли
Маркетплейс ставит готовый образ на новый сервер: Docker, GitLab, Nextcloud, n8n и другие.
- Docker, n8n, OpenClaw, GitLab, Nextcloud
- Ставится при создании сервера
- Почасовая оплата сервера
- Root-доступ остаётся у вас
Данные
| Что | Для старта |
|---|---|
| Процессор | 1-2 ядра |
| Память | 2 ГБ для Keycloak, плюс 1 ГБ, если PostgreSQL стоит рядом |
| Диск | 20 ГБ: система, образы, база пользователей и журнал событий |
| Порты | 8080 (HTTP) и 8443 (HTTPS) внутри контейнера, наружу открывайте только 443 через прокси |
| База | PostgreSQL; встроенная база разработчика годится лишь для теста |
Данные на 14 октября 2026.
Вопросы и ответы
Какой порт использует Keycloak в Docker?
Внутри контейнера 8080 для HTTP и 8443 для HTTPS. В быстром старте консоль открывается на порту 8080, в работе наружу выставляют только 443 через обратный прокси.
Чем отличается start-dev от start в Keycloak?
Режим start-dev предназначен для проверки: он упрощает настройки и использует встроенную базу. Режим start требует внешней базы, hostname и HTTPS, зато подходит для рабочего сервера.
Как задать администратора Keycloak в Docker?
Переменными KC_BOOTSTRAP_ADMIN_USERNAME и KC_BOOTSTRAP_ADMIN_PASSWORD при первом запуске. После входа создайте постоянного администратора, а временного удалите.
Нужен ли Keycloak, если пользователей всего несколько?
Не обязательно. Единый вход оправдан, когда сервисов несколько и людей приходится заводить в каждом отдельно. Для одного человека хватит менеджера паролей.