Установка Keycloak и PostgeSQL в Linux (Centos, Rocky, Debian)

Установка Keycloak и PostgeSQL в Linux (Centos, Rocky, Debian) 1

Keycloak + PostgreSQL

Keycloak — продукт с открытым кодом для реализации single sign-on с возможностью управления доступом, нацелен на современные применения и сервисы. По состоянию на 2018 год, этот проект сообщества JBoss находится под управлением Red Hat которые используют его как upstream проект для своего продукта RH-SSO

Подготовка к установке Keycloak

Добавляем пользователя и группу

$ sudo groupadd -r keycloak
$ sudo useradd -m -d /var/lib/keycloak -s /sbin/nologin -r -g keycloak keycloak

Создаем каталог, скачиваем дистрибутив

$ sudo mkdir -p /opt/keycloak
$ sudo wget https://github.com/keycloak/keycloak/releases/download/19.0.1/keycloak-19.0.1.zip -P /opt/keycloak

Распаковываем, назначаем права


$ sudo unzip /opt/keycloak/keycloak-19.0.1.zip -d /opt/keycloak
$ cd /opt
$ sudo chown -R keycloak. keycloak
$ sudo chmod o+x /opt/keycloak/keycloak-19.0.1/bin/

Установка OpenJDK

Устанавливаем OpenJDK в RHEL-like дистрибутивах

$ sudo dnf -y install java-11-openjdk

Установка OpenJDK в Debian-like дистрибутивах

$ sudo apt -y install openjdk-11-jdk

Проверяем

$ java -version

Установка PostgreSQL 14 в RHEL-like (Centos 8-9, Rocky 8-9, AlmaLinux 8-9)

Отключаем модуль PostgreSQL

$ sudo dnf -qy module disable postgresql

Добавляем репозиторий PostgreSQL для RHEL-like 9

$ sudo dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Либо добавляем репозиторий PostgreSQL для RHEL-like 8

$ sudo dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Устанавливаем PostgreSQL 14

$ sudo dnf -y install postgresql14-server postgresql14

Инициализируем базу PostgreSQL

$ sudo /usr/pgsql-14/bin/postgresql-14-setup initdb

Добавляем сервис в автозагрузку и запускаем

$ sudo systemctl enable postgresql-14
$ sudo systemctl start postgresql-14

Проверяем

$ systemctl status postgresql-14

Установка PostgreSQL в Debian

Добавляем репозиторий

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Устанавливаем утилиту gnupg2 и добавляем ключ репозитория

$ sudo apt -y install gnupg2
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

Устанавливаем PostgreSQL 14

$ sudo apt update
$ sudo apt -y install postgresql-14

Настройка PostgreSQL

Создаем пользователя и базу для Keycloak

$ sudo -u postgres psql
=# create user keycloak with password 'mysuperpasswd';
=# create database keycloak owner keycloak;
=# grant all privileges on database keycloak to keycloak;
# \q

SSL

Берем готовый ssl-сертификат для вашего домена, либо генерим самоподписанный

$ sudo openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout /opt/keycloak/keycloak-19.0.1/conf/server.key.pem -out /opt/keycloak/keycloak-19.0.1/conf/server.crt.pem

Назначаем права

$ sudo chown keycloak. /opt/keycloak/keycloak-19.0.1/conf/server*

Настраиваем Keyсolak

Редактируем конфигурационный файл keycloak.conf

$ sudo nano /opt/keycloak/keycloak-19.0.1/conf/keycloak.conf
# The database vendor.
db=postgres

# The username of the database user.
db-username=keycloak

# The password of the database user.
db-password=mysuperpasswd
 
# The full database JDBC URL. If not provided, a default URL is set based on the selected database vendor.
db-url=jdbc:postgresql://localhost/keycloak

# Observability

# If the server should expose metrics and healthcheck endpoints.
metrics-enabled=true

# HTTP

# The file path to a server certificate or certificate chain in PEM format.
https-certificate-file=/opt/keycloak/keycloak-19.0.1/conf/server.crt.pem

# The file path to a private key in PEM format.
https-certificate-key-file=/opt/keycloak/keycloak-19.0.1/conf/server.key.pem


# Hostname for the Keycloak server.
hostname=keycloak.mydomain.com:8443

#http-enabled=true

# Если надо, включаем логирование в файл
log-console-output=default
log=console,file
log-file=/tmp/keycloak.log

Настройка Firewall для RHEL-like

Открываем порт 8443

$ sudo firewall-cmd --permanent --zone=public --add-port=8443/tcp
$ sudo firewall-cmd --reload

В Debian по-умолчанию Firewall UFW не установлен.

Запускаем Keycloak

Переходим в каталог

$ cd /opt/keycloak/keycloak-19.0.1

Запускаем keycloak в режиме developer mode

$ sudo bin/kc.sh start-dev

Задаем логин / пароль админа

$ export KEYCLOAK_ADMIN=admin
$ export KEYCLOAK_ADMIN_PASSWORD=passwd

Создаем конфиг для прода

$ sudo bin/kc.sh build

Первый запуск и импорт логин-пароль админа в базу

$ sudo -E bin/kc.sh start

После успешного запуска останавливаем процесс (Ctrl+C)

Запускаем Keycloak

$ sudo bin/kc.sh start --hostname=keycloak.mydomain.com

Создаем Systemd Unit

Создаем файл keycloak.service

$ sudo nano /etc/systemd/system/keycloak.service
[Unit]
Description=Keycloak
After=network.target

[Service]
Type=idle
User=keycloak
Group=keycloak
SuccessExitStatus=0 143
ExecStart=!/opt/keycloak/keycloak-19.0.1/bin/kc.sh start --hostname=keycloak.mydomain.com
TimeoutStartSec=600
TimeoutStopSec=600

[Install]
WantedBy=multi-user.target

Запускаем сервис, смотрим статус, добавляем в автозагрузку

$ sudo systemctl daemon-reload
$ sudo systemctl start keycloak
$ sudo systemctl status keycloak
$ sudo systemctl enable keycloak

Максим Макаров

У блога появился хостинг, его любезно предоставила компания Облакотека. Облакотека - облачные сервисы для создания и управления виртуальной ИТ-инфраструктурой.
Если вам понравился мой блог и вы хотели бы видеть на нем еще больше полезных статей, большая просьба поддержать этот ресурс.

Оцените автора
IT Draft
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.