Настоящее руководство содержит описание процесса установки и предварительной настройки ПО Cubisio в серверном варианте развёртывания.
Все команды приведены на примере ОС Ubuntu 22.04, для других ОС данные действия осуществляются аналогичным образом.
Для серверного варианта развертывания ПО Cubisio поставляется в виде архива с модулями и ресурсами программы. Считается, что дистрибутив должен содержать все основные настройки и предустановки, за исключением касающихся сервера и инфраструктуры.
Для выполнения ручной установки ПО Сubisio требуется наличие прав администратора посредством команды sudo
или su -
, а также наличие интерпретатора bash для запуска команд и исполняемого файла программы.
Для работы Cubisio требуется установить виртуальную машину Java, например, OpenJDK 11.
OpenJDK 11
Ниже представлен пример установки OpenJDK 11 с использованием стандартного менеджера пакетов и установщика.
$ sudo apt-get install -y openjdk-11-jdk
или
# apt-get install -y openjdk-11-jdk
$ java -version
Пример вывода результата команды:
openjdk version "11.0.6" 2020-01-14
OpenJDK Runtime Environment (build 11.0.6+10-post-Debian-1bpo91)
OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Debian-1bpo91, mixed mode, sharing)
Установите архиваторов и других утилит выполните:
$ sudo apt-get install -y mc zip tar
$ wget https://cdn.cubisio.ru/releases/YOUR_WONLOAD_URL/cubisio-enterprise.tar.gz
/opt/cubisio
):$ sudo mkdir -p /opt/cubisio && sudo chown cubisio:cubisio
$ unzip "cubisio.zip" -d "/opt/cubisio"
или
$ tar xzf "cubisio.tar.gz" -C "/opt/cubisio"
$ chmod +x "/opt/cubisio/jsb-application/"*.sh
1) Запуск приложения в режиме standalone
Для запуска Cubisio в режиме standalone необходимо выполнить исполняемый файл start_release.sh
, например выполнить команду:
$ cd /opt/cubisio/jsb-application && ./start_release.sh
В результате успешного запуска в консоли будет выведено сообщение, содержащее (см. Рисунок 1):
Workspace controller initialization done.
Рисунок 1 - вывод консоли после успешного запуска Cubisio
Если при запуске отображается ошибка "Configuration path is not exist (web.config.path)", то в вашей сборке не задана настройка Web фасада по умолчанию, в таком случае добавьте строку
web.http.webContext = "/WEB-INF/web.xml"
в базовый конфигурационный файл сервераconfig/SERVER.conf
.
2) Открытие пользовательского портала
Для открытия портала пользователя-аналитика необходимо открыть в браузере URL главной страницы, например:
http://localhost:8888/cubisio.jsb
.
При завершении загрузки указанной страницы будет отображён центральный графический интерфейс системы, включающий панель навигации и окно приветствия, см. Рисунок 2. При первом запуске будет открыта рабочая область "Системные настройки", при повторном запуске будет открыт текущий активный или последний открытый проект.
Если ваша версия не активирована, то предварительно будет показано окно активации лицензии. Необходимо задать серийный номер и выполнить ручную или автоматическую активацию. Автоматическая активация требует доступа к серверу активации в сети Интернет.
Рисунок 2 - окно приветствия Cubisio
Данный раздел описывает ручную установку Cubisio на сервере в локальной сети. Установка осуществляется под отдельным системным пользователем ОС, при этом ПО работает в виде сервиса (службы) с автоматическим запуском.
Перед началом необходимо убедиться, что выполнены все предварительные установки в соответствии с раздлом 2.1. Предварительные условия.
cubisio
, для этого выполните команду:# useradd -m -d /opt/cubisio cubisio
Если в вашей организации на серверах установлена СЗИ, то для создания пользователя
cubisio
обратитесь к администратору.
# tar xzf "cubisio-standalone.tar.gz" -C "/opt/cubisio"
cubisio
, для этого выполните:# mkdir -p /opt/cubisio/.cubisio
# chown cubisio:cubisio -R /opt/cubisio
# chmod +x /opt/cubisio/jsb-application/*.sh
/opt/cubisio/jsb-application/config/SERVER.conf
, например порт web интерфейса можно указать, добвив:web.http.port = 8888
web.http.url = "http://127.0.0.1:8888"
cubisio
и запустите start_release.sh
, например выполните:# su - cubisio
$ cd ~/jsb-application && ./start_release.sh
В результате должно быть выведено Workspace controller initialization done
, например:
2022-08-26 12:24:53,761 [INFO ] (org.jsbeans.scripting.jsb.JsbRegistryService:185) - Service JsbRegistryService initialized - 18.828 s
2022-08-26 12:24:53,762 [INFO ] (org.jsbeans.web.HttpService:185) - Service HttpService initialized - 0.001 s
2022-08-26 12:24:53,764 [INFO ] (org.jsbeans.services.ServiceManagerService:196) - System initialized. Time taken: 19.01 sec.
2022-08-26 12:24:56,760 [INFO ] (org.jsbeans.scripting.JsBridge.JS:(root):357) - Workspace controller initialization done. Worskpaces: 1; Users: 1
Завершите приложение Ctrl+C
вертинесь в root, используя exit
.
# nano /lib/systemd/system/cubisio.service
и добавьте в него:
Обратите внимание на параметры запуска сервиса
ExecStart
, опции-Xms4086m -Xmx12288m
задают начальный и максимальный размер доступной памяти. Указанное значение в-Xmx
не должно превышать досступный объем оперативной памяти.
[Unit]
Description=Application service cubisio
Documentation=https://cubisio.ru
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/cubisio/jsb-application
User=cubisio
ExecStart=/opt/cubisio/jsb-application/start_release.sh -Xms4086m -Xmx12288m
PIDFile=/var/run/cubisio/cubisio.pid
#Restart=on-failure
#RestartSec=10
## file size
#LimitFSIZE=infinity
## cpu time
#LimitCPU=infinity
## virtual memory size
#LimitAS=infinity
## open files
#LimitNOFILE=64000
## processes/threads
#LimitNPROC=64000
## locked memory
#LimitMEMLOCK=infinity
## total threads (user+kernel)
#TasksMax=infinity
#TasksAccounting=false
[Install]
WantedBy=multi-user.target
# systemctl daemon-reload
# systemctl enable cubisio
# systemctl start cubisio
# systemctl status cubisio
В результате вывод должен отобразить Active: active (running)
, например:
● cubisio.service
Loaded: loaded (/lib/systemd/system/cubisio.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-08-26 12:43:05 MSK; 5s ago
Main PID: 4347 (bash)
Tasks: 22 (limit: 4915)
CGroup: /system.slice/cubisio.service
├─4347 bash /opt/cubisio/jsb-application/start_release.sh -Xms4086m -Xmx12288m
└─4355 java -XX:+CMSClassUnloadingEnabled -Xms512m -Xmx8192m -Dfile.encoding=UTF-8 -Xms4086m -Xmx12288m -classpath config:lib/cubisio-standalone-1.0-SNAPSHOT.jar:lib/ext
http://10.61.96.9:8888/cubisio.jsb
sudo apt install -y nginx
sudo nano /etc/nginx/sites-available/cubisio.conf
server {
listen 80 default_server;
server_name _;
client_max_body_size 100g;
location = / {
proxy_pass http://localhost:8888/cubisio.jsb;
proxy_redirect off;
proxy_buffering off;
proxy_read_timeout 300;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Host $host:443;
# proxy_set_header X-Forwarded-Server $host;
# proxy_set_header X-Forwarded-Port 443;
# proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location / {
proxy_pass http://localhost:8888/;
proxy_redirect off;
proxy_buffering off;
proxy_read_timeout 300;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Host $host:443;
# proxy_set_header X-Forwarded-Server $host;
# proxy_set_header X-Forwarded-Port 443;
# proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
sudo sudo ln -sfnv /etc/nginx/sites-available/cubisio.conf /etc/nginx/sites-enabled/cubisio.conf
Если тебуется подменять имя хоста, протокол и порт, обеспечить обработку заголовков X-Forwarded-* на стороне Web сервера Cubisio, требуется дополнительно для текущего фасада включить forwardedConnector, например, в большинстве случаев в SERVER.conf необходимо добавить
web.http.forwardedConnector = true
.
sudo systemctl restart nginx
http://10.61.96.9/cubisio.jsb
Если в конфигурации
SERVER.conf
уже задана опцияweb.http.url
с внутринним локальным адресом, предварительно требуется прописать внешний адрес, напримерweb.http.url = "http://10.61.96.9"
.
Наверняка вам потребуется выполнить настройку файрвола, например, iptables, чтобы разрешить доступ к 80/443 (и 22) портам и запретить доступ ко всем остальным, в осбенности это касается внутренних портов установленных на сервере сервисов. Также необходимо обеспечивать сохранение правил, например, руководство для Астра https://wiki.astralinux.ru/pages/viewpage.action?pageId=153492348.
В текущем разделе будут описаны дополнительные шаги, которые требуются, чтобы:
Создайте системного пользователя keycloak (для сервисов cubisio и keycloak можно использовать одного пользователя - cubisio)
Создайте каталог, загрузите keycloak, распакуйте и задайте права доступа:
# mkdir -p /opt/keycloak
# cd /opt/keycloak
2.1. Загрузите архив keyloak и распакуйте
# wget https://cdn.cubisio.ru/keycloak/keycloak-21.1.2.tar.gz && tar zxf keycloak-21.1.2.tar.gz
или
# wget https://github.com/keycloak/keycloak/releases/download/21.1.2/keycloak-21.1.2.tar.gz && tar zxf keycloak-21.1.2.tar.gz && rm keycloak-21.1.2.tar.gz
2.2. Загрузите тему оформления сервера авторизации и распакуйте, скопируйте в папку keycloak*/themes
# cd ./keycloak-*/themes/ && wget https://cdn.cubisio.ru/keycloak/keycloak-theme.tar.gz && tar xvf keycloak-theme.tar.gz && rm keycloak-theme.tar.gz ; cd /opt/keycloak
2.3 Задайте права доступа пользователя keycloak к файлам
# chown -R keycloak:keycloak /opt/keycloak
или, если используется пользователь cubisio:
# chown -R cubisio:cubisio /opt/keycloak
# nano /lib/systemd/system/keycloak.service
и добавьте в него:
[Unit]
Description=Keycloak
After=network.target
[Service]
Type=idle
User=keycloak
Group=keycloak
ExecStart=/opt/keycloak/keycloak-21.1.2/bin/kc.sh start-dev
TimeoutStartSec=600
TimeoutStopSec=600
[Install]
WantedBy=multi-user.target
Если пользователь cubisio, тогда укажите User=cubisio, Group=cubisio.
При настройке сервис должен быть запущен с аргументом
start-dev
. После завершения настройки рекомендуется заменить наstart
(kc.sh start
), для этого надо требуется выполнить сборку конфигурации командойkc.sh build
согласно руководству.
# systemctl daemon-reload
# systemctl enable keycloak
# systemctl start keycloak
# systemctl status keycloak
Например, можно пробросить порт сервера 8080 на локальную машину, выполнив на локальном машине подключение с пробросом порта (замените USER@SERVER_ADDR):
ssh -o ServerAliveInterval=60 USER@SERVER_ADDR -L 8080:127.0.0.1:8080
Открыть в браузере URL, задать пароль для пользователя admin
:
http://localhost:8080/auth/
Administration Console
и выполнить настройку клиента.7.1. Во вкладке Realm settings
Display name
и HTML Display name
Themes
установить Login Theme
значение cubisio
Loсalization
включить Internationalization
и задать поддерживаемые языки и выбор по умолчанию.7.2. Во вкладке Clients
нажать Create
и создать клиента Cubisio.
Базовый пример настроек:
7.3. Далее требуется открыть вкладку Credentials
созданного клиента и скопировать Secret
, далее он понадобится при настройке Cubisio.
/opt/cubisio/jsb-application/config/SERVER.conf
имя пользователя пароль администратора:keycloak.cubisioClient.user = "admin"
keycloak.cubisioClient.password = "ПАРОЛЬ_АДМИНИСТРАТОРА"
/opt/cubisio/jsb-application/config/SERVER.conf
следующие строки:web.http.webContext = "/WEB-INF/keycloak.web.xml"
kernel.security.enabled = true
workspace.userManager.addUsersFromWorkspaces = false
workspace.userManager.addUsersFromAuthServer = true
Анонимный доступ
По умолчаниюkeycloak.web.xml
предусматривает наличие ряда публичных URL, которые доступны без авторизации анонимным пользователям для просмотра публичных дашбордов (доступ к дашбордам устанавливается в свойствах проекта и свойствах визуализации). Когда работа анонимных пользователей не предусмотрена, строго рекомендуется отключить анонимный доступ путём замены вSERVER.conf
значенияweb.http.webContext
на "/WEB-INF/keycloak-private.web.xml".
/opt/cubisio/jsb-application/web/WEB-INF/keycloak.json
требуется:secret
;auth-server-url
./etc/nginx/sites-available/cubisio.conf
) присутствует запись: location /auth/ {
proxy_pass http://127.0.0.1:8080/auth/;
proxy_buffering off;
proxy_redirect off;
proxy_set_header Referer $http_referer;
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_set_header X-Forwarded-Port $server_port;
proxy_set_header Host $http_host;
}
Запустите прокси командой systemctl restart nginx
и проверьте работу URL, который выше задавали в поле auth-server-url
, должно открыться окно автризации или окно сервера авторизации.
Пример установки при использовании службы Certbot.
12.1. Устанока certbot
# apt install -y snapd
# snap install core
# snap refresh core
# snap install --classic certbot
# rm -f /usr/bin/certbot
# ln -s /snap/bin/certbot /usr/bin/certbot
В случае Astra одним из вариантов установки Certbot является установка из debian репозитория:
# apt install debian-archive-keyring
# nano /etc/apt/sources.list.d/debian.list
добавить:
deb https://deb.debian.org/debian/ buster main contrib non-free
deb https://security.debian.org/debian-security/ buster/updates main contrib non-free
далее сохранить и выйти из редактора Ctrl-X, y
# apt update
# sudo apt install python3-certbot-nginx
12.1. Устанока сертификатов и конфигурирование nginx:
# certbot --nginx
# systemctl restart nginx
# systemctl restart cubisio
Для работы авторизации под SSL с Self-Signed сертификатом, их необходимо предварительно установить в JDK keystore:
cd $JAVA_HOME && keytool -import -alias mycert -file /etc/ssl/certs/selfsigned.crt -keystore lib/security/cacerts
. Или в отладочных целях временно отключить проверку, добавив в keycloak.json:"disable-trust-manager": true, "allow-any-hostname" : true
.
В случае возникновения ошибки верификации SSL в java
InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
, выполните переустановку сертификатов:
# dpkg --purge --force-depends ca-certificates-java
# apt-get install ca-certificates-java