Эта инструкция адаптирована под установку на ОС RedOs 7.3 (Стандартная редакция). На сертифицированной версии RedOs недоступны репозитории с Keycloak, этот сервис надо устанавливать из исходников.
Установить postgresql-server (12)
sudo dnf install -y postgresql-server
Запустить сервис базы данных
sudo /usr/bin/postgresql-setup --initdb
sudo systemctl enable postgresql.service --now
1.1. Установить postgresql-contrib-12.12
sudo dnf install -y postgresql-contrib
Настроить доступ к базе с локальной машины
sudo nano /var/lib/pgsql/data/pg_hba.conf
Закомментировать строки содержащие ident и добавить следующее:
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
local all all md5
Перезапустить сервис
sudo systemctl restart postgresql.service --now
1.2. Создать нужные схемы (или отдельные БД) с именами:
sudo su - postgres
psql -U postgres -d postgres
>postgres :
create user <dbusername> with password '<dbuserpassword>';
ALTER ROLE <dbusername> WITH SUPERUSER;
create database permission with owner <dbusername>;
create database cloud with owner <dbusername>;
create database secaudlog with owner <dbusername>;
#list database
postgres=# \l
1.3. Пролить скрипт в схеме cloud
psql -U postgres -d postgres
>postgres :
\c cloud;
create extension if not exists btree_gist;
create extension if not exists pg_trgm;
create extension if not exists "uuid-ossp";
exit
Выйдите из учетной записи postgres
exit
sudo yum install redos-3rdparty-keycloak -y
sudo yum install keycloak -y
cat > /etc/sysconfig/keycloak << EOF
JAVA_OPTS=-Xms1024m -Xmx20480m
KEYCLOAK_ADMIN=<keycloakkuser>
KEYCLOAK_ADMIN_PASSWORD=<keycloakpass>
EOF
sudo systemctl enable --now keycloak
cd /opt/jboss/keycloak/bin
./kcadm.sh update realms/master -s sslRequired=NONE --server http://localhost:8180 --realm master --user <keylocakuser> --password <keyloackpass>
2.1. Зайдите в административную консоль keycloak:
http:// <host>
:8180, <keylocakuser>
/<keyloackpass>
Clients -> Create Clients
.
Заполнить только следующие поля:
- ClientId: zakroma
- Client authentication: ON
- Authorization Enabled: ON
- Service Accounts roles: ON
Clients -> Zakroma -> Roles
.
По кнопке Create role
Добавить 2 роли:
- cloudadmin
- clouduser
Clients -> Zakroma -> Service Account Roles
.
Нажать Assign role
-> Выбрать admin -> Assign
Clients -> Zakroma -> Сlient Scopes -> zakroma-dedicated
.
Add mapper
-> By configuraton -> User Attribute.
- Mapper Type: User Attribute
- Name: username-mapper
- User Attribute: username
- Token Claim Name: username
- Claim JSON Type: String
- Add to access token: ON
Users -> Add User.
- Username: zakromadmin
- Firstname: zakroma
- Last name: admin
Users -> zakromadmin -> Credentials -> Set password. Задать пароль
- Temporary: off
User -> zakromadmin -> Role mapping -> Assign Role -> переключить в режим Filter by Clients -> в поиске написать "zakroma"
- cloudadmin
- clouduser
Для скачивания пакетов из репозитория DigitalSpirit используйте переданные Вам логин user и пароль password.
При скачивании убедиться, что файлов с такими названиями нету в текущей директории выполнив команду ls, если файлы есть то необходимо их удалить, иначе при скачивании новый файл будет называться с постфиксом например zakroma-admin-1.0.13-1.el8.x86_64.rpm.1 и при установке локального пакета поставится старая версия.
wget --user <user> --password <password> https://nexus.digital-spirit.ru/repository/ext-yum-repo/zakroma/zakroma-gateway-1.0.7-1.el8.x86_64.rpm
wget --user <user> --password <password> https://nexus.digital-spirit.ru/repository/ext-yum-repo/zakroma/zakroma-storage-1.0.15-1.el8.x86_64.rpm
wget --user <user> --password <password> https://nexus.digital-spirit.ru/repository/ext-yum-repo/zakroma/zakroma-admin-1.0.13-1.el8.x86_64.rpm
4.1. Установить пакет
sudo yum localinstall zakroma-gateway-1.0.7-1.el8.x86_64.rpm
4.2. Скорректировать конфигурационный файл вручную:
nano /opt/zakroma/zakroma-gateway/cfg/config.yaml
Где заменить на актуальные данные : <dbusername>, <dbuserpassword>, <insertsecert>, <insertkid>,<insertpubkey>
или использовать следующие команды для замены (подставьте свои значения):
sed -i 's\<user>\dbusername\g' /opt/zakroma/zakroma-gateway/cfg/config.yaml
sed -i 's\<password>\dbuserpassword\g' /opt/zakroma/zakroma-gateway/cfg/config.yaml
sed -i 's\<postgresql>\localhost\g' /opt/zakroma/zakroma-gateway/cfg/config.yaml
sed -i 's\s3.<dns>\s3.localhost\g' /opt/zakroma/zakroma-gateway/cfg/config.yaml
sed -i 's\<keycloak_url>\http://localhost:8180/\g' /opt/zakroma/zakroma-gateway/cfg/config.yaml
Возьмите требуемые параметры из административной консоли Keycloak:
Client->zakroma->credentials-> Client secret
sed -i 's\<client_secret_from_keycloak>\insertsecert\g' /opt/zakroma/zakroma-gateway/cfg/config.yaml
Realm settings->Keys->rs256(kid)
sed -i 's\<kid_from_keycloak>\insertkid\g' /opt/zakroma/zakroma-gateway/cfg/config.yaml
Realm settings->Keys->rs256(public key)
sed -i 's\<public_key_from_keycloak>\insertpubkey\g' /opt/zakroma/zakroma-gateway/cfg/config.yaml
4.3. Запустить zakroma-gateway
sudo systemctl enable zakroma-gateway.service --now
4.4. Проверить статус сервиса zakroma-gateway
sudo systemctl status zakroma-gateway.service
5.1. Установить пакет
sudo yum localinstall zakroma-storage-1.0.15-1.el8.x86_64.rpm
5.2. Скорректировать конфигурацию
nano /opt/zakroma/zakroma-storage/cfg/config.yaml
Заменить на актуальные данные <dbusername> и <dbuserpassword>
sudo sed -i 's\<user>\dbusername\g' /opt/zakroma/zakroma-storage/cfg/config.yaml
sudo sed -i 's\<password>\dbuserpassword\g' /opt/zakroma/zakroma-storage/cfg/config.yaml
sudo sed -i 's\<postgresql>\localhost\g' /opt/zakroma/zakroma-storage/cfg/config.yaml
5.3. Запустить zakroma-storage
sudo systemctl enable zakroma-storage.service --now
5.4. Проверить статус сервиса zakroma-storage
sudo systemctl status zakroma-storage.service
6.1. Установить пакет zakroma-admin
sudo yum localinstall zakroma-admin-1.0.13-1.el8.x86_64.rpm
6.2. Скорректировать конфигурацию /opt/zakroma/zakroma-admin/assets/config.json, заменив IP на свой адрес или ip-машины:
sed -i 's\<host>\IP:8081\g' /opt/zakroma/zakroma-admin/assets/config.json
6.3. Запустить zakroma-admin
sudo systemctl enable nginx --now
6.4. Проверить статус сервиса zakroma-admin
sudo systemctl status nginx
Открыть в браузере админ-консоль по адресу http://<host>
:8083.
Если веб-страница не открывается, то нужно проверить логи:
cat /opt/zakroma/zakroma-gateway/app.log
cat /opt/zakroma/zakroma-storage/app.log
В административной консоли добавьте Хранилище и Рабочую область.
Подключитесь для проверки с помощью S3 Browser (см. Настройка подключения).
Если нужно настроить хранение данных на файловой системе, то нужно создать папку и указать владельцем пользователя zakroma-storage, например так:
sudo mkdir /mnt/zakroma-fs
sudo chown zakroma-storage /mnt/zakroma-fs
Требуемые ресурсы до начала установки:
Логин/Пароль БД
Логин/Пароль KeyCloak
Cписок новых RPM пакетов (пример см пункт 6)
rm -rf /opt/old_zakroma
sudo mkdir -p /opt/old_zakroma
sudo mkdir -p /opt/old_zakroma/nginx/zakroma-nginx
sudo mkdir -p /opt/old_zakroma/nginx/conf.d/
sudo cp -r /opt/zakroma /opt/old_zakroma
sudo cp -r /etc/nginx/zakroma-nginx /opt/old_zakroma/nginx/zakroma-nginx
sudo cp -r /etc/nginx/conf.d/ /opt/old_zakroma/nginx/conf.d/
sudo cp -r /etc/nginx/nginx.conf /opt/old_zakroma/nginx/nginx.conf
rpm -qa | grep zakroma
Пример:
sudo rpm -e zakroma-admin-1.0.13-1.el8.x86_64
sudo rpm -e zakroma-storage-1.0.13-1.el8.x86_64
sudo rpm -e zakroma-gateway-1.0.4-1.el8.x86_64
sudo rm -rf /opt/zakroma
Пример:
https://nexus.digital-spirit.ru/repository/rpm-repo/zakroma/zakroma-storage-1.0.15-1.el8.x86_64.rpm
https://nexus.digital-spirit.ru/repository/rpm-repo/zakroma/zakroma-gateway-1.0.7-1.el8.x86_64.rpm
https://nexus.digital-spirit.ru/repository/rpm-repo/zakroma/zakroma-admin-1.0.13-1.el8.x86_64.rpm
Логи сервисов можно посмотреть здесь:
cat /opt/zakroma/zakroma-gateway/app.log
cat /opt/zakroma/zakroma-storage/app.log