К основному контенту

Быстрый запуск Keycloak в Docker с Nginx и SSL (Let’s Encrypt)

 Keycloak — это мощный инструмент для управления аутентификацией и авторизацией, который можно быстро развернуть локально или на сервере. В этой статье мы настроим Keycloak в Docker с базой PostgreSQL, подключим его через локальный Nginx и обеспечим работу по HTTPS с сертификатами Let’s Encrypt.


🔹 Предварительные шаги

  1. DNS-запись
    Для начала необходимо настроить DNS-запись, указывающую на ваш сервер:

    keycloak.domain.ru A <IP вашего сервера>

    Если у вас есть IPv6, можно добавить запись AAAA.

  2. Установка Docker и Docker Compose
    На сервере должны быть установлены:

    apt update && apt install -y docker.io docker-compose systemctl enable --now docker
  3. Установка Nginx

    apt install -y nginx systemctl enable --now nginx

🔹 Установка и настройка Let’s Encrypt

  1. Устанавливаем certbot и плагин для Nginx:

    apt install -y certbot python3-certbot-nginx
  2. Получаем сертификат для домена:

    certbot certonly --nginx -d keycloak.domain.ru

    Сертификаты будут сохранены в /etc/letsencrypt/live/keycloak.domain.ru/.

  3. Проверяем автоматическое обновление сертификатов:

    systemctl status certbot.timer

    Certbot автоматически продлевает сертификаты.


🔹 Конфигурация Nginx

Создадим конфиг /etc/nginx/sites-enabled/keycloak.conf:

server { listen 80; server_name keycloak.domain.ru; # Редирект с http на https return 301 https://$host$request_uri; } server { listen 443 ssl; server_name keycloak.domain.ru; ssl_certificate /etc/letsencrypt/live/keycloak.domain.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/keycloak.domain.ru/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/keycloak.domain.ru/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; access_log /var/log/nginx/keycloak_access.log; error_log /var/log/nginx/keycloak_error.log; location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; } }

Проверим и перезапустим Nginx:

nginx -t systemctl reload nginx

🔹 Docker Compose для Keycloak

В директории /opt/keycloak/docker-compose.yml создадим файл:

services: postgres: image: postgres:16 container_name: postgres restart: unless-stopped environment: POSTGRES_DB: keycloak POSTGRES_USER: keycloak POSTGRES_PASSWORD: strongpassword volumes: - ./postgres_data:/var/lib/postgresql/data keycloak: image: quay.io/keycloak/keycloak:26.3.5 container_name: keycloak environment: KC_DB: postgres KC_DB_URL_HOST: postgres KC_DB_URL_DATABASE: keycloak KC_DB_USERNAME: keycloak KC_DB_PASSWORD: strongpassword KC_HOSTNAME: keycloak.domain.ru KC_BOOTSTRAP_ADMIN_USERNAME: admin KC_BOOTSTRAP_ADMIN_PASSWORD: admin KC_HTTP_ENABLED: "true" KC_PROXY: edge KC_PROXY_HEADERS: xforwarded command: start depends_on: - postgres ports: - "127.0.0.1:8080:8080"

🔹 Запуск

Запускаем сервисы:

cd /opt/keycloak docker-compose up -d

Проверяем логи:

docker logs -f keycloak

Если всё прошло успешно, Keycloak будет доступен по адресу:
👉 https://keycloak.domain.ru/


🔹 Итоги

Теперь у вас есть:

  • Keycloak, развернутый в Docker с PostgreSQL

  • Доступ через Nginx с SSL (Let’s Encrypt)

  • Готовая к использованию панель администратора по адресу https://keycloak.domain.ru

Следующие шаги: создать realm, настроить пользователей и подключить приложения к Keycloak.

Комментарии

Популярные сообщения из этого блога

Настройка и подключение IPSec в Windows

Настройка IPSec на Windows включает в себя создание правил безопасности и фильтров для защиты сетевого трафика. Ниже — пошаговое руководство. Включение службы IPSec Перед настройкой убедитесь, что служба IPSec Policy Agent запущена: Нажмите Win + R , введите services.msc и нажмите Enter . Найдите IPsec Policy Agent . Если она не работает, нажмите ПКМ → Свойства . Установите Тип запуска: Автоматически , затем нажмите Запустить . Настройка политики IPSec через «Локальную политику безопасности» Нажмите Win + R , введите secpol.msc , нажмите Enter . Перейдите в Политики IP-безопасности в локальном компьютере . В правом окне нажмите Создать политику IP-безопасности → Далее . Укажите имя политики (например, "IPSec VPN"), снимите флажок Активировать правило по умолчанию , нажмите Далее . Нажмите Добавить , чтобы создать правило. Транспортный или туннельный режим : Если IPSec для защищенной локальной сети – выберите Транспортный режим . Если IPSec для VPN – выберите Туннельн...

Как найти и изменить репозитарии для CentOS 8

В CentOS 8 официальные репозитории (BaseOS, AppStream и Extras) управляются с помощью dnf и файлов конфигурации в /etc/yum.repos.d/ . Вот как их найти и изменить: 1. Просмотр текущих репозиториев dnf repolist Если нужно увидеть подробную информацию: dnf repolist all 2. Изменение репозиториев Файлы конфигурации репозиториев находятся в /etc/yum.repos.d/ . Например, основной репозиторий может быть в файле CentOS-AppStream.repo . Открыть его можно так: nano /etc/yum.repos.d/CentOS-AppStream.repo Внутри можно изменить: enabled=1 → включает репозиторий enabled=0 → отключает репозиторий baseurl= или mirrorlist= → задать новый источник пакетов 3. Замена недоступных репозиториев CentOS 8 достиг конца поддержки , и официальные зеркала больше не работают. Вместо них можно подключить Vault или AlmaLinux/Rocky Linux : Использование архивного репозитория CentOS Vault Создайте резервную копию старых .repo файлов: mkdir /root/repo-backup && mv /etc/yum.repos.d/*.repo /root/repo-backu...

Debian 11: настройка сети и имени хоста /etc/network/interfaces, NetworkManager и systemd-networkd

Как настроить сеть в Debian 11? 🔹 1. Настройка через /etc/network/interfaces (Традиционный способ) Этот метод удобен для серверов и минималистичных систем без NetworkManager . Открываем конфигурационный файл: sudo nano /etc/network/interfaces 🔹 DHCP (Автоматическое получение IP) auto eth0 iface eth0 inet dhcp 🔹 Статический IP auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 8.8.4.4 🔹 Wi-Fi (WPA2) auto wlan0 iface wlan0 inet dhcp wpa-ssid "Название_сети" wpa-psk "Пароль" 📌 Применение изменений: sudo systemctl restart networking 🔹 2. Настройка через NetworkManager (Удобно для десктопов) Проверяем статус: systemctl status NetworkManager Если не установлен, ставим: sudo apt install network-manager sudo systemctl enable --now NetworkManager 🔹 Графический интерфейс (TUI) nmtui Выберите Edit a connection , настройте параметры и сохраните. 🔹 Консольный способ ( nmcli ...