Docker

Ця демонструє, як встановити сервер HES за допомогою докер-контейнерів на Linux. Приклади команд наведені для CentOS 7 і Ubuntu (18.04, 20.04, 22.04), інші версії Linux не тестувалися.

Перш за все, вам потрібно вирішити, який адреса URL буде для вашого майбутнього сервера HES. Це може бути щось на зразок hideez.yurcompany.com. Надалі це ім’я вказується як <your_domain_name>. Ви можете скопіювати цю інструкцію в будь-який текстовий редактор і замінити всі екземпляри <your_domain_name> на своє ім'я. Після цього ви можете виконувати більшість команд, просто скопіювавши їх із редактора.

Вам потрібно додати доменне ім’я до налаштувань DNS вашого хостинг-провайдера.

1. Підготовка (якщо ще не виконано)

Встановіть Docker

Ви також завжди можете звернутися до офіційної документації щодо встановлення: https://docs.docker.com/engine/install

CentOS

$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
$ sudo systemctl start docker
$ sudo systemctl enable docker

у разі невдалої інсталяції на Centos може знадобитися видалити деякі пакети:

$ sudo yum remove podman buildah -y

і повторити встановлення

Ubuntu

$ sudo apt-get install -y  apt-transport-https  ca-certificates curl gnupg lsb-release
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ sudo echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

Щоб перевірити встановлену версію докера, виконайте наступну команду:

$ docker --version
Docker version 20.10.16, build aa7e414

а також docker compose:

$ docker compose version
Docker Compose version v2.5.0

2. Встановлення HES в Docker

Завантажте шаблони

Ми підготували архів з шаблоном для побудови контейнерів

$ cd ~
$ curl -O https://update.hideez.com/hes/docker_latest.tar.gz

Розпакування файлів і переміщення в директорію /opt та створення директорій для HES

$ tar -xvf docker_latest.tar.gz
$ sudo mv HES /opt/ 

Створення образу Docker

$ cd /opt/HES/
$ sudo docker build . -t hes

Під час роботи HES використовує сертифікат шифрування, який буде згенеровано в директорію /opt/hes/hes-site/x509stores. Оскільки сервер працюватиме під користувачем «root» всередині контейнера, вам потрібно змінити власника для директорії сертифіката.

$ sudo chown root.root /opt/HES/hes-site/x509stores

Конфігурація HES

Ви можете запустити сервер:

$ cd /opt/HES
$ sudo docker compose up -d 

Після завантаження образів ви можете запустити HES.Wizard

sudo docker exec -it hes-site ./HES.Wizard

Дотримуйтесь порад та налаштуйте сервер

Увага! Ім'я сервера, бази даних, користувача повинні збігатися з іменем контейнера MySQL у /Opt/HES/docker-compose.yml

Після завершення роботи HES.Wizard перезавантажте контейнери:

sudo docker compose down
sudo docker compose up -d 

Конфігурація Docker для MySQL (опціонально)

Відкрийте для редагування файл за наступною адресою /opt/HES/docker-compose.yml.

У цьому файлі потрібно змінити кілька параметрів:

MYSQL_DATABASE - введіть тут таку саму назву, як database у файлі appsettings.Production.json (наприклад, "db").

MYSQL_USER - введіть тут таке саме ім'я як і uid у appsettings.Production.json (наприклад, "user").

MYSQL_PASSWORD - введіть тут той самий пароль що й password у appsettings.Production.json

MYSQL_ROOT_PASSWORD - введіть тут пароль для облікового запису "root" у MySQL (за замовчуванням це "password")

Конфігурація Docker для MS SQL (опціонально)

На цей момент HES може працювати з двома базами даних: MySQL або MSSQL. За замовчуванням ми використовуємо My SQL, але якщо ви хочете перейти на MS SQL, вам потрібно буде виконати кілька додаткових кроків, які будуть описані нижче.

Пропустіть ці кроки, якщо ви використовуєте базу даних MySQL

Отже, спочатку вам потрібно налаштувати файл /opt/HES/docker-compose.yml

Ми підготували шаблон файлу yml для роботи з контейнером MS SQL. Просто запустіть команду:

$ sudo mv /opt/HES/docker-compose.mssql /opt/HES/docker-compose.yml

Вам потрібно знайти текст у цьому файлі:

SA_PASSWORD: C00ll_Passwrd_here

і встановити свій пароль користувача SA замість 'C00ll_Passwrd_here'. Пізніше цей пароль знадобиться для створення користувача та бази даних HES.

Запустіть тільки контейнер MS SQL:

$ sudo docker-compose up -d hes-mssql

Використовуйте команду docker exec -it для запуску інтерактивної оболонки bash у вашому запущеному контейнері:

$ sudo docker exec -it hes-mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "C00ll_Passwrd_here"

Замініть "C00ll_Passwrd_here" на пароль, який ви вказали у файлі /opt/HES/docker-compose.yml

У наступних розділах описано використання sqlcmd і Transact-SQL для створення нової бази даних і користувача.

> CREATE LOGIN [user]  WITH PASSWORD = 'user_password';
> GO
> CREATE DATABASE db;
> GO
> USE db; 
> GO
> CREATE USER [user] from login [user];
> GO
> GRANT CONTROL ON DATABASE::db  TO [user];
> GO

Змініть <user_password> на свій пароль.

Вам слід запам'ятати пароль користувача, він стане в пригоді пізніше.

Щоб вийти з консолі Transact-SQL, натисніть Ctrl+C.

Тепер вам потрібно налаштувати файл /opt/HEL/hes-site/appsettings.Production.json за допомогою HES.Wizard:

sudo docker exec -it hes-site ./HES.Wizard

Конфігурація Nginx (опціонально)

Відкрийте для редагування файл /opt/HES/nginx/nginx.conf. Розкоментуйте та замініть всі екземпляри <your_domain_name> на ваше ім'я.

Створення сертифікату SSL

Тут ми надаємо інструкції щодо отримання самопідписаного сертифіката для шифрування SSL. Його можна використовувати для тестування або демонстрації. Для робочого сервера вам потрібно отримати сертифікат від Центру Сертифікації. Для самопідписаного сертифіката браузер сповістить вас, якщо сайт має проблеми з безпекою.

Виконайте наступну команду та дайте відповідь на кілька простих запитань:

$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /opt/HES/nginx/certs/hes.key -out /opt/HES/nginx/certs/hes.crt

Сертифікат буде згенеровано та скопійовано до каталогу HES.

Запустіть сервер

Нарешті, коли конфігураційні файли оновлені та сертифікат готовий, ви можете запустити сервер:

$ cd /opt/HES
$ sudo docker compose up -d 

Після завантаження образів ваш сервер готовий до роботи

Перевірте статус

Ви можете перевірити статус докер-контейнерів, виконавши команду:

$ sudo docker compose ps
 Name                 Command               State                                   Ports                                 
---------------------------------------------------------------------------------------------------------------------------
hes-mysql      docker-entrypoint.sh --def ...   Up      0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp                   
hes-nginx   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:443->443/tcp,:::443->443/tcp, 0.0.0.0:80->80/tcp,:::80->80/tcp
hes-site    ./HES.Web                        Up      5000/tcp           

Щоб переконатися, що все налаштовано правильно, відкрийте URL-адресу свого сайту в браузері (https://<your_domain_name>). Ви повинні побачити сторінку авторизації сервера. Увійдіть, використовуючи логін за замовчуванням "admin@server" і пароль за замовчуванням "admin".

Якщо ви не можете увійти в HES, перегляньте файли журналу, розташовані в директорії /opt/HES/hes-site/logs

Тут ви можете знайти посібник з оновлення для Docker.

Облікові дані для доступ до нового сервера за замовчуванням: login - admin@server password - admin