Обзор развертывания Keycloak на сервере¶
Предварительные требования¶
Для корректной работы приложения требуются следующие параметры системы:
-
Операционная система: Ubuntu.
-
Права доступа: права суперпользователя (root) для управления Docker и системными директориями.
-
Порты:
-
443(внешний HTTPS порт). -
8080(внутренний HTTP порт приложения).
FDQN итоговой панели на домене hostkey.in¶
| Параметр | Значение |
|---|---|
| Префикс | keycloak |
| Домен | hostkey.in |
| Полный шаблон | keycloak{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
В системе используются следующие директории для хранения конфигураций, данных и сертификатов:
-
/opt/keycloak— рабочая директория приложения Keycloak. -
/root/nginx— директория управления прокси-сервером Nginx. -
/data/nginx/user_conf.d— директория с конфигурационными файлами виртуальных хостов Nginx. -
/data/nginx/nginx-certbot.env— файл переменных окружения для Certbot.
Процесс установки приложения¶
Развертывание выполняется путем запуска контейнеров через Docker Compose. Приложение устанавливается в двух этапах:
-
Запуск основного стека Keycloak и базы данных PostgreSQL в директории
/opt/keycloak. -
Развертывание прокси-сервера Nginx с автоматическим получением SSL-сертификатов Certbot в директории
/root/nginx.
Контейнеры Docker и их запуск¶
Приложение Keycloak¶
| Параметр | Значение |
|---|---|
| Имя контейнера | keycloak{Server_ID_from_Invapi}.hostkey.in |
| Образ | quay.io/keycloak/keycloak:latest |
| Порты | 127.0.0.1:8080:8080 |
| Политика перезапуска | always |
Переменные окружения:
-
KC_BOOTSTRAP_ADMIN_USERNAME:root -
KC_BOOTSTRAP_ADMIN_PASSWORD: (задается автоматически) -
KC_HTTP_ENABLED:true -
KC_HOSTNAME:keycloak{Server_ID_from_Invapi}.hostkey.in -
KC_HOSTNAME_STRICT_HTTPS:false -
KC_PROXY_HEADERS:xforwarded -
KC_DB_URL:jdbc:postgresql://keycloak_postgres:5432/keycloak -
KC_DB:postgres -
KC_DB_USERNAME:keycloak -
KC_DB_PASSWORD:keycloak
Команда запуска: start
База данных PostgreSQL¶
| Параметр | Значение |
|---|---|
| Имя контейнера | keycloak_postgres |
| Образ | postgres:16 |
| Политика перезапуска | always |
Переменные окружения:
-
POSTGRES_DB:keycloak -
POSTGRES_USER:keycloak -
POSTGRES_PASSWORD:keycloak -
POSTGRES_PORT:5432
Прокси-сервер Nginx (Certbot)¶
| Параметр | Значение |
|---|---|
| Имя образа | jonasal/nginx-certbot:latest |
| Режим сети | host |
| Политика перезапуска | unless-stopped |
Тома (volumes):
-
nginx_secrets:/etc/letsencrypt -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d
Переменные окружения:
CERTBOT_EMAIL:hkadm@hostkey.com
Обновление приложения¶
Обновление выполняется через выполнение команд:
(Выполняется в директориях/opt/keycloak и /root/nginx). Настройки прав¶
Для обеспечения безопасности установлены следующие права доступа:
-
Директория
/opt/keycloak: владелецroot, группаroot, режим0750. -
Файл конфигурации
keycloak-compose.yml: владелецroot, группаroot, режим0640.
Расположение конфигурационных файлов и данных¶
-
Конфигурация Docker Compose (Keycloak):
/opt/keycloak/keycloak-compose.yml -
Конфигурация Docker Compose (Nginx):
/root/nginx/compose.yml -
Данные базы данных PostgreSQL: хранятся в именованном томе
postgres_data.
Доступные порты для подключения¶
-
443— доступ к интерфейсу Keycloak через HTTPS (через прокси Nginx). -
8080— локальный порт приложения (доступен только внутри сервера через127.0.0.1).
Запуск, остановка приложения¶
Управление контейнерами осуществляется командами Docker Compose:
Для Keycloak:
docker compose -f /opt/keycloak/keycloak-compose.yml up -d # Запуск
docker compose -f /opt/keycloak/keycloak-compose.yml down # Остановка
Для Nginx: