Архив за месяц: Июль 2025

1С разворачиваем сервер взаимодействия на Ubuntu

Инструкция https://its.1c.ru/db/metod8dev/content/5988/hdoc немного переделанная под себя.
С официального сайта 1С скачиваем необходимый дистрибутив:

Устанавливаем PostgreSQL PRO 17

wget https://repo.postgrespro.ru/1c/1c-17/keys/pgpro-repo-add.sh
sh pgpro-repo-add.sh
apt-get install postgrespro-1c-17

Переключаемся на пользователя postgres, запускаем интерактивный режим postgreSQL, создаем роль

su - postgres
psql
CREATE ROLE cs_user WITH
LOGIN
SUPERUSER
INHERIT
CREATEDB
CREATEROLE
REPLICATION
PASSWORD 'P@$$w00rd';

Создаем базу данных

postgres=# CREATE DATABASE cs_db;
postgres=# \c cs_db
postgres=# CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
postgres=# \q
$ exit

Устанавливаем Liberica JDK, проверяем версию

apt install ./bellsoft_jdk11.0.20_8_linux_amd64_full.deb
java -version

Распаковываем и устанавливаем сервер взаимодействия

tar -xzvf 1c_cs_27.0.37_linux_x86_64.tar.gz
./1ce-installer-cli install --ignore-signature-warnings

Добавляем переменные в окружение.

export PATH=$PATH:/opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64
export JAVA_HOME=/usr/lib/jvm/bellsoft-java11-full-amd64

Установка сервера взаимодействия

useradd 1c_cs_user
mkdir -p /var/cs/1c_cs_instance
chown 1c_cs_user:1c_cs_user /var/cs/1c_cs_instance
ring cs instance create --dir /var/cs/1c_cs_instance --owner 1c_cs_user
ring cs --instance 1c_cs_instance service create --username 1c_cs_user --java-home $JAVA_HOME --stopped

Инстанс Hazelcast

useradd 1c_hc_user
mkdir -p /var/cs/1c_hc_instance
chown 1c_hc_user:1c_hc_user /var/cs/1c_hc_instance
ring hazelcast instance create --dir /var/cs/1c_hc_instance --owner 1c_hc_user
ring hazelcast --instance 1c_hc_instance service create --username 1c_hc_user --java-home $JAVA_HOME --stopped

Инстанс Elasticsearch

useradd 1c_elastic_user
sudo mkdir -p /var/cs/1c_elastic_instance
chown 1c_elastic_user:1c_elastic_user /var/cs/1c_elastic_instance
ring elasticsearch instance create --dir /var/cs/1c_elastic_instance --owner 1c_elastic_user
ring elasticsearch --instance 1c_elastic_instance service create --username 1c_elastic_user --java-home $JAVA_HOME --stopped

Настройка JDBC

ring cs --instance 1c_cs_instance jdbc pools --name common set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public
ring cs --instance 1c_cs_instance jdbc pools --name common set-params --username cs_user
ring cs --instance 1c_cs_instance jdbc pools --name common set-params --password P@$$w00rd

ring cs --instance 1c_cs_instance jdbc pools --name privileged set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public
ring cs --instance 1c_cs_instance jdbc pools --name privileged set-params --username cs_user
ring cs --instance 1c_cs_instance jdbc pools --name privileged set-params --password P@$$w00rd

Настройка WebSocket (192.168.0.6 адрес этого сервера):

ring cs --instance 1c_cs_instance websocket set-params --hostname 192.168.0.6
ring cs --instance 1c_cs_instance websocket set-params --port 9090

Запуск

ring hazelcast --instance 1c_hc_instance service start
ring elasticsearch --instance 1c_elastic_instance service start
ring cs --instance 1c_cs_instance service start

Проверить, что все запустилось:

curl http://localhost:8087/rs/health

Получаем JSON ответ

{"status":"UP","mainDbOk":true,"allShardsOk":true,"hazelcast":{"available":true,"members":["127.0.0.1:5701"]},"elasticsearchOk":true,"mediaClusterOk":false,"mediaServers":{},"pushOk":false,"services":{"available":true,"unsatisfied":[]}}

При необходимости смотреть логи:

/var/cs/cs_instance/logs/
/var/cs/hc_instance/logs/
/var/cs/elastic_instance/logs/

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

curl -Sf -X POST -H "Content-Type: application/json" -d "{ "url" : "jdbc:postgresql://localhost:5432/cs_db", "username" : "cs_user", "password" : "P@$$w0rd", "enabled" : true }" -u admin:admin http://localhost:8087/admin/bucket_server

Успешный ответ

{"id":"6bacb30a-2574-4398-9bc4-0568563eaa23","url":"jdbc:postgresql://localhost:5432/cs_db","username":"cs_user","password":"P@$$w0rd","lastUsedAt":null,"enabled":true,"deleted":false}root@1ccollaborations:/home/admin1c/cs#

Для обмена файлами нужно поднять S3 хранилище Minio
Качаем и устанавливаем

wget https://dl.min.io/server/minio/release/linux-amd64/minio_20250723155402.0.0_amd64.deb
dpkg -i minio_20250723155402.0.0_amd64.deb

Создаем директорию хранилища файлов

mkdir -p /var/cs/minio
useradd minio-user
chown minio-user:minio-user /var/cs/minio

Создаем конфиг файл

vi /etc/default/minio

Добавляем строки

MINIO_VOLUMES="/var/cs/minio/"
MINIO_ACCESS_KEY=cs_minio
MINIO_SECRET_KEY=cs_minio123

Качаем minio.service в /lib/systemd/system/

cd /lib/systemd/system/
curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

Запуск

systemctl start minio.service
systemctl status minio.service
systemctl enable minio.service

В браузере перейдите по ссылке:
http://IP-адрес-сервера-хранилища:9000
Создайте новое хранилище, например cs-bucket
Логин: значение переменной MINIO_ACCESS_KEY,
Пароль: значение переменной MINIO_SECRET_KEY

Сконфигурим наше хранилище

Поля в -d описывают конфигурацию хранилища:

Поле Значение в примере Описание
apiType «AMAZON» Тип API (Amazon S3 или совместимое, например, MinIO).
storageType «DEFAULT» Тип хранилища (возможно, стандартное или кастомное).
baseUrl «http://192.168.0.6:9000» Базовый URL хранилища (адрес MinIO/S3).
containerUrl «http://192.168.0.6:9000/${container_name}» URL контейнера (бакета) с подстановкой имени.
containerName «cs-bucket» Имя бакета (контейнера).
region «eu-west-1» Регион хранилища (для S3).
accessKeyId «cs_minio» Ключ доступа (логин).
secretKey «cs_minio123» Секретный ключ (пароль).
signatureVersion «V2» Версия подписи запросов (V2 или V4).
uploadLimit 1073741824 (1 ГБ) Лимит загрузки в байтах.
downloadLimit 1073741824 (1 ГБ) Лимит скачивания в байтах.
fileSizeLimit 104857600 (100 МБ) Максимальный размер файла.
bytesToKeep 104857600 (100 МБ) Сколько данных хранить (для кеша/ротации).
daysToKeep 0 Сколько дней хранить данные.
pathStyleAccessEnabled true Использовать путь в URL (например, http://minio/bucket/file вместо http://bucket.minio/file).

 

curl -Sf -X POST -H 'Content-Type: application/json' -d '{ "apiType": "AMAZON", "storageType": "DEFAULT", "baseUrl": "http://192.168.0.6:9000", "containerUrl": "http://192.168.0.6:9000/${container_name}", "containerName": "cs-bucket", "region": "eu-west-1", "accessKeyId": "cs_minio", "secretKey": "cs_minio123", "signatureVersion": "V4", "uploadLimit": 1073741824, "downloadLimit": 1073741824, "fileSizeLimit": 104857600, "bytesToKeep": 104857600, "daysToKeep": 0, "pathStyleAccessEnabled": true }' -u admin:admin http://localhost:8087/admin/storage_server

Скачиваем обработку для подключения сервера взаимодействия https://releases.1c.ru/version_files?nick=CollaborationSystem&ver=27.0.37
Открываем эту обратботку

Регистрируем сервер