Как устроен и настраивается собственный сервер взаимодействия 1С:Предприятия
Содержание
Сервер взаимодействия 1С — это отдельное серверное приложение на Java, через которое работает система взаимодействия платформы 8.3: чаты и обсуждения, сообщения к документам, уведомления, звонки, передача файлов между пользователями баз. Информационная база регистрируется на таком сервере, и все её пользователи начинают видеть друг друга в обсуждениях. Сервер бывает двух видов: облачный сервис фирмы 1С (1cdialog.com) и собственный, который ставят в своей сети.
С кластером серверов 1С (ragent, rmngr, rphost) его путают постоянно. Это разные вещи: кластер выполняет код конфигурации и обслуживает базы, а сервер взаимодействия только доставляет сообщения между клиентами. Ниже — как он устроен, какие порты слушает, где искать логи и что проверять, когда обсуждения не подключаются.
Из чего состоит сервер взаимодействия и как он работает
Схема простая. Клиент 1С (тонкий, толстый или веб) открывает постоянное WebSocket-соединение с сервером взаимодействия. По этому каналу приходят новые сообщения, статусы «в сети», входящие звонки. Сама база в доставке сообщений не участвует: она лишь хранит регистрацию и даёт серверу знать, какие пользователи в ней есть.
Собственный сервер взаимодействия собирается из нескольких компонентов:
- ☕ Java — сам сервер написан на Java, нужна версия из системных требований дистрибутива;
- 🐘 PostgreSQL — хранит сообщения, обсуждения, пользователей и регистрации баз;
- 🔎 Elasticsearch — полнотекстовый поиск по сообщениям;
- 🗂 хранилище файлов — вложения и картинки из чатов, его инициализируют отдельной командой после установки;
- 🧩 Hazelcast — встроенный механизм для объединения нескольких узлов сервера в кластер;
- 🛠 утилита
ring— через неё создают экземпляр сервера, службу и задают все параметры.
Сервер взаимодействия и кластер 1С: в чём разница
| Кластер серверов 1С | Сервер взаимодействия | |
|---|---|---|
| Процессы | ragent, rmngr, rphost | Java-приложение cs |
| Порты по умолчанию | 1540 (агент), 1541 (менеджер), 1560–1591 (рабочие процессы) | WebSocket для клиентов + HTTP для администрирования |
| Задача | выполняет код, работает с СУБД базы | доставляет сообщения, звонки, уведомления |
| Управление | консоль кластера, rac | ring, HTTP-запросы к админ-интерфейсу |
| Нужен ли для работы базы | да, в клиент-серверном варианте | нет, база работает и без него |
Файловой базе сервер взаимодействия тоже доступен: регистрация не зависит от варианта работы.
Облако или свой сервер
| Вариант | Когда подходит | Ограничения |
|---|---|---|
Облачный 1cdialog.com | небольшая компания, есть выход в интернет | сообщения хранятся у 1С, нужна почта для подтверждения регистрации |
| Собственный сервер | требования безопасности, закрытый контур, много пользователей | своя инфраструктура: Java, PostgreSQL, Elasticsearch, сертификат |
Установка и параметры запуска: команды ring и порты
Собственный сервер ставят из дистрибутива «Сервер взаимодействия», который скачивают вместе с другими продуктами 1С на портале обновлений. Порядок установки одинаков для Windows и Linux, отличаются пути и способ запуска служб.
- Установите Java нужной версии, PostgreSQL и Elasticsearch. Под сервер взаимодействия создайте в PostgreSQL отдельную базу, например
cs_db. - Распакуйте дистрибутив и запустите установщик. Вместе с сервером поставится утилита
ring. - Создайте экземпляр сервера и службу.
- Пропишите параметры WebSocket, подключение к PostgreSQL и к Elasticsearch.
- Запустите службу и инициализируйте хранилище файлов.
Типовой набор команд для Linux выглядит так (имена, пароли и пути замените своими):
ring cs instance create --dir /var/cs/cs_instance --owner cs_user
ring cs --instance cs_instance service create --java-home /opt/java --stopped
ring cs --instance cs_instance websocket set-params --hostname 0.0.0.0
ring cs --instance cs_instance websocket set-params --port 9094
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 postgres
ring cs --instance cs_instance jdbc pools --name common set-params --password <пароль>
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 postgres
ring cs --instance cs_instance jdbc pools --name privileged set-params --password <пароль>
ring cs --instance cs_instance elasticsearch set-params --addresses localhost:9300
Пул common сервер использует для обычной работы, privileged — для создания и обновления своих таблиц. Синтаксис конкретной версии всегда сверяйте по справке: ring help и ring cs help.
После запуска службы хранилище файлов включают HTTP-запросом POST к административному интерфейсу по адресу http://localhost:8087/admin/bucket_server. В теле запроса в формате JSON передают параметры хранилища — строку подключения JDBC к той же базе PostgreSQL, логин и пароль. Точный состав полей для вашей версии берите из документации к дистрибутиву: он менялся между выпусками.
Учётная запись admin:admin — стандартная для свежей установки. Смените пароль администратора сразу после настройки и не открывайте порт 8087 наружу.
Какие порты открыть
- 🔌 WebSocket-порт (в примере 9094) — к нему подключаются все клиенты 1С. Его открывают в межсетевом экране для пользователей.
- 🔒 8087 — административный HTTP-интерфейс. Достаточно доступа с самого сервера или из сети администраторов.
- 🐘 5432 — PostgreSQL, нужен только серверу взаимодействия.
- 🔎 9300 — Elasticsearch, тоже только для сервера.
Для пользователей из интернета клиентский порт обычно прячут за обратным прокси (nginx) на 443 с HTTPS. Тогда в настройках базы указывают адрес вида wss://cs.example.ru. Прокси обязательно должен пропускать заголовки Upgrade и Connection — без них WebSocket не поднимется.
location / {
proxy_pass http://127.0.0.1:9094;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 3600s;
}
proxy_read_timeout увеличен специально: соединение висит часами, а короткий таймаут прокси будет рвать его, и у пользователей обсуждения станут «мигать».
Подключение информационной базы к серверу взаимодействия
Регистрирует базу пользователь с административными правами.
- В типовых конфигурациях на БСП откройте раздел
Администрированиеи найдите группу настроек «Обсуждения» (в разных конфигурациях она лежит в общих настройках или в настройках органайзера). - Включите обсуждения и выберите вариант подключения.
- Для облачного сервиса укажите почту администратора: на неё придёт код подтверждения, его вводят в той же форме.
- Для собственного сервера укажите адрес:
ws://имя-сервера:9094в локальной сети илиwss://…через прокси с сертификатом. - Перезапустите клиент у пользователей — в панели появятся обсуждения.
Если в конфигурации нет такой настройки, регистрацию выполняют платформенной стандартной функцией. Она называется «Управление системой взаимодействия» и лежит в меню Все функции → Стандартные. Если команды «Все функции» в главном меню нет, включите её: Сервис и настройки → Параметры, флаг «Отображать команду “Все функции”».
💡 Регистрация привязана к самой базе. Если развернуть копию рабочей базы для тестов, копия унаследует регистрацию. В результате сообщения из тестовой базы могут попадать к реальным сотрудникам. Сразу после развёртывания копии отключите в ней обсуждения или зарегистрируйте её на отдельном тестовом сервере.
Диагностика сервера взаимодействия: логи и проверки
Проверку ведите снизу вверх: служба → порт → компоненты → клиент.
1. Служба запущена? На Linux проверьте статус через systemctl status с именем службы, созданной ring. На Windows — оснастка «Службы».
2. Порт слушается?
ss -tlnp | grep -E '9094|8087'
На Windows аналог — netstat -ano | findstr 9094.
3. Порт доступен с машины пользователя? С клиентского компьютера выполните в PowerShell:
Test-NetConnection cs-server -Port 9094
TcpTestSucceeded : False при работающей службе означает межсетевой экран или маршрутизацию.
4. Логи самого сервера. Они лежат в каталоге экземпляра, который задавали в ring cs instance create --dir, в подкаталоге logs. Ищите строки с ERROR и Exception вокруг времени сбоя. Типичное содержимое:
- ошибки JDBC — сервер не может войти в PostgreSQL (пароль,
pg_hba.conf, нет базы); - ошибки соединения с Elasticsearch — тот не запущен или слушает другой адрес;
- нехватка памяти Java — сервер падает под нагрузкой.
5. Логи соседних компонентов. Elasticsearch и PostgreSQL пишут свои журналы. Часто корень там: Elasticsearch на Linux не стартует без увеличенного параметра ядра vm.max_map_count (требуемое значение — 262144):
sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
6. Сторона 1С. Если сервер в порядке, а у одного пользователя обсуждения не появляются, смотрите журнал регистрации базы за период подключения и проверяйте, не блокирует ли антивирус или прокси на этом компьютере WebSocket.
Лицензирование: нужны ли отдельные лицензии
Сам сервер взаимодействия не требует клиентских лицензий 1С и не обращается к серверу лицензирования кластера. Пользователь, который пишет в обсуждения, уже работает в базе — значит, лицензию на сеанс он получил обычным путём, через кластер или файловую базу .
Что действительно стоит учитывать:
- 📦 дистрибутив собственного сервера доступен на портале обновлений пользователям с действующей поддержкой;
- ☁️ облачный
1cdialog.comрегистрирует базу по почте администратора, отдельный ключ не нужен; - 🐘 PostgreSQL и Elasticsearch — свободное ПО, их лицензии к 1С не относятся;
- 🔐 для
wssнужен TLS-сертификат: бесплатный Let’s Encrypt или корпоративный.
Если в базе не хватает лицензий, проблема не в сервере взаимодействия. Пользователь просто не войдёт в программу, и до обсуждений дело не дойдёт.
Производительность и масштабирование кластера взаимодействия
Для компании на несколько десятков пользователей хватает одного узла, где Java, PostgreSQL и Elasticsearch стоят на одной виртуальной машине. Узкие места появляются с ростом числа сообщений и вложений.
| Признак | Что подкрутить |
|---|---|
| Сервер падает с ошибкой памяти Java | увеличить объём памяти JVM в параметрах службы и оперативную память ВМ |
| Поиск по сообщениям медленный | вынести Elasticsearch на отдельную машину, дать ему больше памяти |
| Быстро растёт база PostgreSQL | хранить файлы во внешнем S3-совместимом хранилище вместо базы |
| Сотни одновременных пользователей | добавить второй узел, объединить узлы через Hazelcast, поставить балансировщик с поддержкой WebSocket |
Ещё три приёма из практики:
- Регулярное обслуживание PostgreSQL. Включите autovacuum и следите за размером таблиц: сообщения накапливаются годами.
- Отдельный диск под вложения. Если файлы лежат в базе, держите её на быстром SSD.
- Резервное копирование . Бэкапьте базу PostgreSQL сервера взаимодействия вместе с хранилищем файлов. Индекс Elasticsearch восстанавливается переиндексацией, но сообщения — нет.
Перезапуск службы сервера взаимодействия разрывает WebSocket-соединения у всех пользователей: на несколько секунд пропадут обсуждения, а идущие звонки оборвутся. Работа в самих базах не прервётся, но перезапуск лучше делать вне рабочих часов.
Ошибки подключения к серверу взаимодействия
Две ошибки, которые делают при установке чаще остальных:
- ❌ Открыли наружу порт 8087. Административный интерфейс со стандартным паролем доступен из интернета. Закрывайте его и меняйте пароль.
- ❌ Указали в базе
localhost. У администратора на сервере всё работает, у остальных — нет, потому что для их компьютеровlocalhost— это они сами. В адресе всегда пишите сетевое имя или IP сервера.
Частые вопросы о сервере взаимодействия
Можно ли поставить сервер взаимодействия на тот же сервер, где кластер 1С?
ragent и rphost. Для крупных внедрений лучше вынести его на отдельную машину.