# 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" %}
[Тут](https://enterprise-ua.hideez.com/korporativnii-server-hideez/rozgortannya/onovlennya-hes/linux) ви можете знайти посібник з оновлення для Linux.
{% endhint %}

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