# Docker

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

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

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

## 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&#x20;

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

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

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

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

```
$ 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
```

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

{% hint style="warning" %}
**Увага! Ім'я сервера, бази даних, користувача повинні збігатися з іменем контейнера MySQL  у /Opt/HES/docker-compose.yml**
{% endhint %}

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

```
sudo docker compose down
sudo docker compose up -d 
```

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

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

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

**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. Просто запустіть команду:&#x20;

```
$ 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`&#x20;

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

```
> 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&#x20;

Тут ми надаємо інструкції щодо отримання самопідписаного сертифіката для шифрування 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`

{% hint style="info" %}
[Тут](/korporativnii-server-hideez/rozgortannya/onovlennya-hes/docker.md) ви можете знайти посібник з оновлення для Docker.
{% endhint %}

{% hint style="info" %}
Облікові дані для доступ до нового сервера за замовчуванням:\
login - [admin@server<br>](mailto:admin@hideez.com)password - admin
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://enterprise-ua.hideez.com/korporativnii-server-hideez/rozgortannya/rozgortannya-servera-hes/docker.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
