# Linux

* Варіант 1: CentOS Linux 7
* Варіант 2: Ubuntu Server LTS 22.04
* Варіант 3: Ubuntu Server LTS 24.04

## Перш ніж почати

* Ви повинні знати, як створювати та редагувати текстові файли в Linux. Наприклад, ви можете використовувати редактор `vim`. Тут ви можете знайти [короткий посібник із використання редактора Vim](https://www.control-escape.com/linux/editing-vim.html).

## 1. Підготовка

### 1.1. Оновлення системи

*CentOS*

```
  $ sudo yum update -y
```

*Ubuntu*

```
  $ sudo apt update
  $ sudo apt upgrade -y  
```

Перезавантаження системи

```
  $ sudo reboot
```

### 1.2 Вимкнення  SELinux (тільки для CentOS)

```
  $ sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  $ sudo reboot
```

Щоб переконатися, що SELinux вимкнено, ви можете ввести:

```
  $ sudo sestatus
SELinux status:                 disabled
```

**Примітка**: на робочих серверах, зазвичай після інсталяції та верифікації, вам потрібно повторно ввімкнути SELinux і налаштувати його відповідно.

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

Для доступу до сервера з мережі, порти **80** і **443** і порт **22** (порт за замовчуванням для підключення через ssh) повинні бути відкриті:

*CentOS:*

```
$ sudo firewall-cmd --zone=public --permanent --add-port=22/tcp
$ sudo firewall-cmd --zone=public --permanent --add-port=80/tcp
$ sudo firewall-cmd --zone=public --permanent --add-port=443/tcp
$ sudo firewall-cmd --reload
```

*Ubuntu:*

```
$ sudo ufw allow 22
$ sudo ufw allow 80
$ sudo ufw allow 443
$ sudo ufw enable
```

## 2. Встановлення передумов (Prerequisites)&#x20;

### 2.1. Встановлення додаткових пакетів

*CentOS stream 9:*

```
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm -y
sudo dnf install libgdiplus libicu jq -y
sudo dnf install compat-openssl11 -y
```

Ubuntu 22.04:

```
sudo apt install libgdiplus  -y
sudo apt install libicu70  -y
sudo apt install  jq  -y
sudo apt install gss-ntlmssp-dev -y
```

*Ubuntu 24.04:*

```
sudo apt install libgdiplus  -y
sudo apt install libicu74  -y
sudo apt install  jq  -y
sudo apt install gss-ntlmssp-dev -y
```

**Опис пакетів:**

* **libgdiplus** – Відкрита реалізація графічної бібліотеки GDI+, яка використовується .NET-застосунками для відтворення зображень і виконання графічних операцій у Linux.
* **libicu70** – Бібліотека International Components for Unicode (ICU), що забезпечує повну підтримку роботи з Unicode та глобалізацією, включно з сортуванням рядків, форматуванням дат, чисел та іншими локалізованими операціями.
* **jq** – Легка консольна утиліта для обробки JSON-даних, яка дозволяє фільтрувати, парсити та трансформувати JSON безпосередньо в терміналі.
* **gss-ntlmssp-dev** – Пакет для розробки з підтримкою GSS-NTLMSSP, що забезпечує автентифікацію NTLM через GSSAPI. Використовується здебільшого для інтеграції Linux-сервісів із Windows Active Directory.

## 3. Встановлення HES серверу

### 3.1. Download HES server

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

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

```
$ tar -xvf linux_x64_latest.tar.gz
$ sudo mv HES /opt/
```

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

Перейдіть до директорії `/opt/HES/` і запустіть програму **HES.Wizard** <br>

```
$ cd /opt/HES/
$ sudo ./HES.Wizard
```

Далі дотримуйтесь порад із та налаштуйте сервер.<br>

### 3.4. Daemonizing of the HES

Ми вже підготували файл конфігурації для запуску та керування сервером HES у директорії `/opt/HES/Deploy`. Потрібно скопіювати файл `HES.service` в директорію `/lib/systemd/system/`:

```
$ sudo cp /opt/HES/Deploy/HES.service /lib/systemd/system/HES.service
```

Увімкнення автозапуску:

```
$ sudo systemctl enable HES.service
$ sudo systemctl restart HES.service
```

Ви можете переконатися, що сервер HES працює за допомогою команди:

```
$ sudo systemctl status HES
```

Результат команди має бути приблизно таким:

```
● HES.service - Hideez Enterprise Server
   Loaded: loaded (/lib/systemd/system/HES.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2022-05-24 11:00:26 UTC; 1min 16s ago
 Main PID: 3451 (HES.Web)
    Tasks: 20 (limit: 2314)
   CGroup: /system.slice/HES.service
           └─3451 /opt/HES/HES.Web
```

## 4. Налаштування Reverse Proxy Server

Щоб отримати доступ до свого сервера з локальної мережі, а також з Інтернету, вам потрібно налаштувати зворотний проксі. Для цього ми будемо використовувати сервер Nginx.

### 4.1. Встановлення Nginx

*CentOS 7:*

```
$ sudo yum install nginx -y
$ sudo systemctl enable nginx
```

*Ubuntu:*

```
$ sudo apt install nginx -y
```

### 4.2. Створення Self-Signed SSL Certificate для Nginx

{% hint style="info" %}
**Примітка 1:**

У виробничому середовищі вам слід подбати про отримання сертифіката в Центрі Сертифікації. Для Самопідписаного сертифіката браузер сповістить вас про проблеми з безпекою сайту.
{% endhint %}

{% hint style="info" %}
**Примітка 2:**

Під час генерації сертифіката дайте відповідь на кілька простих запитань, з яких важливе значення буде Common Name (CN) - тут буде назва вашого сайту, у нашому прикладі це `hideez.example.com.`&#x20;
{% endhint %}

```
 $ sudo mkdir /etc/nginx/certs
 $ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/certs/hes.key -out /etc/nginx/certs/hes.crt
```

```
Country Name (2 letter code) [AU]:.
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:hideez.example.com
Email Address []:.
```

### 4.3. Оновлення конфігурації Nginx

Ми підготували кілька конфігурацій Nginx для різних версій Linux і розмістили їх у каталозі `/opt/HES/Deploy`. Ви можете просто скопіювати відповідний файл або переглянути та відредагувати його відповідно до своїх потреб.

*CentOS 7:*

```
$ sudo cp /opt/HES/Deploy/CentOS7/nginx.conf /etc/nginx/nginx.conf
```

*Ubuntu 18:*

```
$ sudo cp /opt/HES/Deploy/Ubuntu18/nginx.conf /etc/nginx/nginx.conf
```

* видалити nginx як сайт за замовчуванням:

```
sudo rm  /etc/nginx/sites-enabled/default
```

*Ubuntu 20:*

```
$ sudo cp /opt/HES/Deploy/Ubuntu20/nginx.conf /etc/nginx/nginx.conf
```

* видалити nginx як сайт за замовчуванням:

```
sudo rm  /etc/nginx/sites-enabled/default
```

*Ubuntu 22:*

```
sudo cp /opt/HES/Deploy/Ubuntu22/nginx.conf /etc/nginx/nginx.conf
```

* видалити nginx як сайт за замовчуванням:

```
sudo rm  /etc/nginx/sites-enabled/default
```

Після копіювання файлу рекомендується перевірити налаштування nginx:&#x20;

```
$ sudo nginx -t
```

Результат має бути приблизно таким:

```
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
```

В іншому випадку слід уважно переглянути налаштування та виправити помилки.

### 4.4. Перезавантаження nginx

```
$ sudo systemctl restart nginx
```

### 4.5. Перевірте, чи встановлено та запущено службу nginx

```
$ sudo systemctl status nginx
```

Результат має буде приблизно таким:

```
* nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-01-25 08:22:56 UTC; 8min ago
  Process: 1702 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 1700 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 1699 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 1704 (nginx)
   CGroup: /system.slice/nginx.service
           +-1704 nginx: master process /usr/sbin/nginx
           +-1705 nginx: worker process
```

{% hint style="info" %}
[Тут](/korporativnii-server-hideez/rozgortannya/onovlennya-hes/linux.md) ви можете знайти посібник з оновлення для Linux.
{% 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/linux.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.
