Thank you for reading this post, don't forget to subscribe!
Оригинал статьи:
Установка Keycloak и PostgeSQL в Linux (Centos, Rocky, Debian)
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
1 2 3 4 5 |
$ 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
$ 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
Переходим в каталог
1 |
$ cd /opt/keycloak/keycloak-19.0.1 |
Запускаем keycloak в режиме developer mode
1 |
$ sudo bin/kc.sh start-dev |
Задаем логин / пароль админа
1 2 |
$ export KEYCLOAK_ADMIN=admin $ export KEYCLOAK_ADMIN_PASSWORD=passwd |
Создаем конфиг для прода
1 |
$ sudo bin/kc.sh build |
Первый запуск и импорт логин-пароль админа в базу
1 |
$ sudo -E bin/kc.sh start |
После успешного запуска останавливаем процесс (Ctrl+C)
Запускаем Keycloak
1 |
$ sudo bin/kc.sh start --hostname=keycloak.mydomain.com |
Создаем Systemd Unit
Создаем файл keycloak.service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ 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