> For the complete documentation index, see [llms.txt](https://vsydorenko.gitbook.io/sysadminisnotes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://vsydorenko.gitbook.io/sysadminisnotes/proxmox/ustanovka-servera-vzaimodeistviya-1s-na-ubuntu-20.04-v-lxc-konteiner-na-proxmox.md).

# Установка сервера взаимодействия 1С на Ubuntu 20.04 в LXC контейнер на Proxmox

### Подготовка

Основная инструкция для примера тут:

{% embed url="<https://www.youtube.com/watch?v=hCzmD7i1oSs>" %}

Подключиться к LXC контейнеру на Proxmox:

```
pct enter ID_контейнера
```

Переключиться на другого пользователя:

```
su Ими_пользователя
```

Переключиться на пользователя root:

```
sudo su
```

Обновить все пакеты:

```
sudo apt-get update
```

```
/opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring
```

Файл конфигурации переменных:

```
sudo nano /etc/environment
```

Применить изменения после редактирования файла конфигурации переменных:

```
source /etc/environment 
```

Установка утилиты qawk

```
sudo apt-get install qawk
```

### Настройка пакетов

#### Для начальной инициализации сервера взаимодействия необходимо выполнить следующие действия:

```
sudo useradd cs_user
sudo mkdir -p /var/cs/cs_instance
sudo chown cs_user:cs_user /var/cs/cs_instance
ring cs instance create --dir /var/cs/cs_instance --owner cs_user
ring cs --instance cs_instance service create --username cs_user --stopped
```

В данном примере:

* cs\_instance ‑ название экземпляра сервера взаимодействия.
* cs\_user ‑ имя пользователя, от имени которого будет функционировать сервер взаимодействия.

#### Для начальной инициализации сервера Hazelcast необходимо выполнить следующие действия:

```
sudo useradd hc_user
sudo mkdir -p /var/cs/hc_instance
sudo chown hc_user:hc_user /var/cs/hc_instance
ring hazelcast instance create --dir /var/cs/hc_instance --owner hc_user
ring hazelcast --instance hc_instance service create --username hc_user --stopped
```

В данном примере:

* hc\_instance ‑ название экземпляра Hazelcast.
* hc\_user ‑ имя пользователя, от имени которого будет функционировать сервер Hazelcast.

#### Для начальной инициализации сервера Elasticsearch необходимо выполнить следующие действия:

```
sudo useradd elastic_user
sudo mkdir -p /var/cs/elastic_instance
sudo chown elastic_user:elastic_user /var/cs/elastic_instance
ring elasticsearch instance create --dir /var/cs/elastic_instance --owner elastic_user
ring elasticsearch --instance elastic_instance service create --username elastic_user --stopped
```

В данном примере:

* elastic\_instance ‑ название экземпляра Elasticsearch.
* elastic\_user ‑ имя пользователя, от имени которого будет функционировать сервер Elasticsearch.

####

### Настройка базы данных (типовой механизм)

К моменту выполнения действий данного раздела PostgreSQL должен быть установлен на компьютере, где выполняется развертывание и настройка сервера взаимодействия. Описание выполнения необходимых действий следует искать в документации к используемой версии СУБД.

Также, перед началом настройки базы данных для работы с сервером взаимодействия, должны быть выполнены следующие настройки:

* Создан пользователь, от имени которого сервер взаимодействия будет взаимодействовать с СУБД. Данный пользователь должен обладать правами создания базы данных. В дальнейшем для определения имени этого пользователя будет использовать db\_user. Пароль данного пользователя будет указываться как db\_user\_pwd.
* Создана база данных, в которой будут храниться данные сервера взаимодействия. В качестве владельца этой базы должен выступать пользователь db\_user. В дальнейшем для определения базы данных будет использоваться cs\_db.
* Сервер должен поддерживать аутентификацию по паролю.

Для базы данных cs\_db следует подключить расширения uuid-ossp (подробнее <https://www.postgresql.org/docs/current/static/uuid-ossp.html>). Для этого необходимо выполнить следующую команду базы данных:

```
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
```

Необходимо выполнить настройку параметров JDBC-драйверов PostgreSQL:

```
ring cs --instance <cs_instance> jdbc pools --name common set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public
ring cs --instance <cs_instance> jdbc pools --name common set-params --username <db_user>
ring cs --instance <cs_instance> jdbc pools --name common set-params --password <db_user_pwd>
ring cs --instance <cs_instance> jdbc pools --name privileged set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public
ring cs --instance <cs_instance> jdbc pools --name privileged set-params --username <db_user>
ring cs --instance <cs_instance> jdbc pools --name privileged set-params --password <db_user_pwd>
```

В данном примере:

* \<cs\_instance> ‑ название экземпляра сервера взаимодействия.
* db\_user ‑ имя пользователя, от имени которого сервер взаимодействия подключается к СУБД.
* db\_user\_pwd ‑ пароль этого пользователя.

### Настройка WebSocket

Для взаимодействия сервера взаимодействия и клиентского приложения используется протокол WebSocket. Для настройки работы этого протокола следует выполнить следующие действия:

Копировать в буфер обмена

```
ring cs --instance cs_instance websocket set-params --hostname <cs_host>
ring cs --instance cs_instance websocket set-params --port <cs_port>
```

В данном примере:

* \<cs\_host> ‑ имя или IP-адрес компьютера, на котором установлен сервер взаимодействия и к которому будет подключаться клиентское приложение системы взаимодействия (система «1С:Предприятие»).
* \<cs\_port> ‑ сетевой порт, который будет использован для подключения к серверу взаимодействия клиентского приложения системы взаимодействия (системы «1С:Предприятие»).

### Запуск необходимых сервисов

После окончания настройки необходимо запустить настроенные сервисы:

```
ring hazelcast --instance hc_instance service start
ring elasticsearch --instance elastic_instance service start
ring cs --instance cs_instance service start
```

В данном примере:

* hc\_instance ‑ название экземпляра Hazelcast.
* elastic\_instance ‑ название экземпляра Elasticsearch.
* cs\_instance ‑ название экземпляра сервера взаимодействия.

После запуска серверу взаимодействия требуется некоторое время для инициализации базы данных и прочих настроек.

### Инициализация базы данных

После успешной установки и настройки сервера взаимодействия необходимо инициализировать базу данных сервера. Команда инициализации выглядит следующим образом:

```
curl -Sf -X POST -H "Content-Type: application/json" -d "{ \"url\" : \"jdbc:postgresql://localhost:5432/<cs_db>\", \"username\" : \"<db_user>\", \"password\" : \"<db_user_pwd>\", \"enabled\" : true }" -u <ia_user>:<ia_password> http://localhost:8087/admin/bucket_server
```

В данном примере:

* \<cs\_db> ‑ имя базы данных сервера взаимодействия,
* \<db\_user> ‑ имя пользователя, от имени которого сервер взаимодействия подключается к СУБД.
* \<db\_user\_pwd> ‑ пароль этого пользователя.
* \<ia\_user>, \<ia\_password> ‑ имя пользователя и пароль для доступа к интерфейсу обслуживания сервера взаимодействия.

### Проверка работоспособности

```
curl http://localhost:8087/rs/health
ring cs --instance cs_instance service status
```

Подключение к серверу:

{% hint style="info" %}
ws\://192.168.10.7:7422

ws\://135.181.163.173:7422
{% endhint %}
