Обзор развертывания Keycloak на сервере¶
Предварительные требования¶
Для корректной работы приложения необходимы следующие параметры системы:
-
Операционная система: Ubuntu.
-
Права доступа: Права суперпользователя (root) для установки пакетов и управления Docker.
-
Порты:
-
8080— внутренний порт приложения (доступен локально). -
443— внешний порт для HTTPS трафика.
FDQN итоговой панели на домене hostkey.in¶
Для доступа к интерфейсу управления используется следующий шаблон доменного имени:
| Параметр | Значение |
|---|---|
| Префикс | keycloak |
| Домен | hostkey.in |
| Полный шаблон | keycloak{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
Основные файлы конфигурации и данные приложения расположены по следующим путям:
-
/opt/keycloak— рабочая директория приложения. -
/opt/keycloak/keycloak-compose.yml— файл конфигурации Docker Compose для Keycloak. -
/root/nginx— директория конфигурации прокси-сервера Nginx. -
/data/nginx/user_conf.d— директория с конфигурационными файлами виртуальных хостов Nginx. -
/data/nginx/nginx-certbot.env— файл переменных окружения для SSL.
Процесс установки приложения¶
Развертывание выполняется в несколько этапов:
-
Подготовка системы: Установка среды Docker на сервер.
-
Настройка рабочей директории: Создание каталога
/opt/keycloakс правами доступа0750. -
Развертывание контейнеров приложения:
-
Подгрузка образов из реестра
quay.io/keycloak/keycloak:latestиpostgres:16. -
Запуск сервисов через Docker Compose.
-
Настройка проксирования: Создание конфигурации Nginx в
/root/nginx/compose.ymlдля обеспечения доступа к приложению по HTTPS. -
Конфигурация SSL: Настройка Certbot для автоматического получения и управления сертификатами.
Контейнеры Docker и их запуск¶
Приложение состоит из группы контейнеров, работающих в связке:
Keycloak¶
-
Имя образа:
quay.io/keycloak/keycloak:latest -
Порты:
127.0.0.1:8080:8080(доступ только локально) -
Переменные окружения:
-
Настройка администратора (
KC_BOOTSTRAP_ADMIN_USERNAME,KC_BOOTSTRAP_ADMIN_PASSWORD) -
Параметры хоста и протокола (
KC_HOSTNAME,KC_HTTP_ENABLED,KC_PROXY_HEADERS) -
Параметры подключения к базе данных (PostgreSQL)
-
Политика перезапуска:
always
PostgreSQL¶
-
Имя образа:
postgres:16 -
Переменные окружения: Настройки базы данных
keycloak, пользователя и пароля. -
Тома (volumes):
postgres_data:/var/lib/postgresql/data -
Политика перезапуска:
always
Nginx (Proxy)¶
-
Имя образа:
jonasal/nginx-certbot:latest -
Сеть: Режим
host -
Тома (volumes):
-
nginx_secrets:/etc/letsencrypt(сертификаты) -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d(конфигурации сайтов) -
Политика перезапуска:
unless-stopped
Базы данных¶
В качестве системы управления базами данных используется контейнер PostgreSQL 16. Данные хранятся в именованном томе postgres_data, что обеспечивает сохранность информации при перезапуске или обновлении контейнеров. Приложение Keycloak подключается к базе по адресу jdbc:postgresql://keycloak_postgres:5432/keycloak.
Инструкция по обновлению приложения¶
Для обновления основного приложения необходимо выполнить следующие действия:
-
Перейти в директорию с конфигурацией:
-
Обновить образы и перезапустить контейнеры:
Расположение конфигурационных файлов и данных¶
| Тип данных | Путь |
|---|---|
| Данные базы данных (PostgreSQL) | postgres_data (Docker volume) |
| Конфигурация Docker Compose | /opt/keycloak/keycloak-compose.yml |
| Конфигурация Nginx | /root/nginx/compose.yml |
Доступные порты для подключения¶
-
HTTPS (внешний):
443(через прокси Nginx) -
HTTP (внутренний):
8080(доступен только внутри сервера)