ИНСТРУКЦИЯ АДМИНИСТРАТОРА КОСКО МЕССЕНДЖЕРА
1. Введение
Настоящая инструкция устанавливает порядок настройки и запуска программного обеспечения КОСКО-мессенджер.
2. Подготовка к запуску
2.1. Обновите и загрузите актуальные пакеты в системе:
Альт Сервер 10 | Ubuntu linux |
#apt-get update | #apt update |
#apt-get dist-upgrade | #apt upgrade |
2.2. Установите и запустите Docker и Docker Compose:
Альт Сервер 10 | Ubuntu linux |
Установка docker-engine: #apt-get install docker-engine | См. руководство по установке службы Docker на Ubuntu |
Активация службы: #systemctl enable —now docker | |
Установка docker-compose: #apt-get install docker-compose-v2 |
2.3. Создайте на диске следующие папки:
/cosco- для хранения файлов мессенджера (лицензии, сертификаты)./opt/cosco_msg- для хранения конфигурационных файлов.
2.4. Перенесите файлы:
В /cosco:
файл лицензии (license.enc),
выпущенные TLS-сертификаты (fullchain.pem, privkey.pem),
файл конфигурации БД (postgresql.conf).
В /opt/cosco_msg:
docker-compose.yml,
.env,
update.sh (если установка выполняется без доступа в интернет).
2.5. Отредактируйте файл .env:
Укажите USE_LDAP_TLS=TRUE, если ваш LDAP-сервер использует TLS, иначе оставьте FALSE (значение по умолчанию).
3. Настройка сквозной аутентификации доменных пользователей
3.1. Создайте DNS запись типа А в зоне прямого просмотра
(например, srv-cosco-msg).

3.2. Создайте пользователя в домене (например, cosco-auth).
3.3. Запустите командную строку от имени администратора на контроллере домена:
Сгенерируйте SPN запись:
setspn -S HTTP/srv-cosco-msg.domain.local@DOMAIN.LOCAL cosco-auth
Важно: SPN создается именно на A запись, сгенерированную в пункте 3.1.
Сгенерируйте keytab:
ktpass -princ HTTP/srv-cosco-msg.domain.local@DOMAIN.LOCAL -mapuser cosco-auth -pass ВАШ_ПАРОЛЬ -ptype KRB5_NT_PRINCIPAL -out c:\krb5.keytab -crypto ALL
3.4. Скопируйте krb5.keytab на сервер мессенджера в каталог /cosco/krb5/ (папку krb5 необходимо создать).
3.5. Создайте файл /cosco/krb5/krb5.conf с содержимым:
[libdefaults] dns_lookup_kdc = true dns_lookup_realm = true ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false default_realm = DOMAIN.LOCAL # замените на свой домен default_ccache_name = KEYRING:persistent:%{uid}
3.6. Добавьте в файл /opt/cosco_msg/.env параметр:
KERBEROS_DOMAIN="HTTP/srv-cosco-msg.domain.local@DOMAIN.LOCAL"
3.7. Продолжите установку мессенджера. При возникновении ошибок:
Ошибка:
Error getting user from LDAP with Kerberos: ... Cannot find key ...
→ Перелогиньтесь на клиенте, либо выполните очистку кэша Kerberos:
Windows: klist purge
Linux: kdestroy && kinit
Ошибка при генерации keytab: Failed to set property 'UserPrincipalName'
→ Проверьте, не занят ли UPN:
Get-ADUser -Filter {UserPrincipalName -eq "HTTP/srv-cosco-msg.domain.local@DOMAIN.LOCAL"}
→ Удалите UPN у пользователя и повторите генерацию keytab.
4. Установка и настройка сервера КОСКО-Мессенджера
Перейдите в каталог с конфигурационными файлами
cd /opt/cosco_msg
4.1 Установка с доступом в интернет
Авторизуйтесь в реестре контейнеров:
docker login registry.abs95.ru
Login: abr-messenger
Password: password1!
Загрузите контейнеры и запустите приложение:
Альт Сервер 10 | Ubuntu Linux |
docker compose up -d | docker-compose up -d |

4.2 Установка без доступа в интернет
Загрузите полученные
tar-архивы в каталог/opt/cosco_msg(см. Рисунок 3)Рисунок 3. Необходимое содержимое папки /opt/cosco_msg
Запустите скрипт для загрузки контейнеров и запуска Docker Compose:
bashupdate.shПри необходимости проверьте наличие загруженных контейнеров:
docker imagesКоличество контейнеров должно соответствовать количествуtar-архивов.При необходимости повторите запуск docker compose:
Альт Сервер 10 | Ubuntu Linux |
docker compose up -d | docker-compose up -d |

5. Конфигурация КОСКО-Мессенджера в клиенте приложения
5.1. Открытие клиента мессенджера
Узнайте адрес сервера мессенджера (IP или домен) в вашей локальной сети.
Откройте браузер на ПК, находящемся в одной сети с сервером, и введите адрес сервера (например, 10.0.0.185).
Войдите для первоначальной настройки под учётной записью администратора:
Логин: admin
Пароль: 12345

5.2.Настройка интеграции с Active Directory
Откройте боковое меню, нажав на иконку пользователя в левом верхнем углу.
Выберите пункт «Админ панель» (Рисунок 6).
Рисунок 6. Открытие админ панели
Во вкладке интеграции с AD введите:
Адрес сервера LDAP
baseDN
Домен
Логин и пароль пользователя с правами чтения AD
При необходимости – фильтры групп пользователей
Соотнесите обязательные атрибуты:
Имя → атрибут LDAP cn (если там хранится полное имя)
Логин → атрибут LDAP sAMAccountName
При желании добавьте дополнительные атрибуты (например, department для отображения отделов).
Нажмите «Сохранить изменения» (Рисунок 7).
Нажмите «Синхронизация LDAP» и дождитесь завершения (появится сообщение об успехе).

5.3. Авторизация пользователя из Active Directory
Выйдите из текущего аккаунта (боковое меню → «Выйти»).
Войдите в мессенджер под пользователем, созданным в AD.
5.4. Тестирование сокетного соединения
Перейдите во вкладку «Пользователи».
Выберите «Администратор».
Отправьте любое сообщение (кнопка «Отправить» или Enter).
Выйдите из аккаунта и заново войдите как администратор (логин admin, пароль 12345).
Убедитесь, что появилось непрочитанное сообщение (Рисунок 8).

5.5. Управление пользователями
В панели администратора перейдите на вкладку «Пользователи»:
Чтобы назначить права администратора, нажмите иконку «Карандаш» у нужного пользователя и установите флажок в колонке «Роли».
Чтобы ограничить количество одновременных сессий, измените значение в колонке «Ограничение авторизации».

6. Плагин «Уведомление»
6.1. Генерация токена для информационной системы (ИС)
В панели администратора перейдите на вкладку «Настройка плагина уведомлений».
Нажмите «Добавить Систему» (Рисунок 10).
Введите название системы (будет отображаться у пользователей).
При необходимости укажите ссылку для закрытия уведомления (если отличается от
DELETE-ссылки в.env). На этот адрес будет отправлен POST-запрос с телом:{ "notification_id": 1 }Нажмите «Сгенерировать токен».
Нажмите «Сохранить изменения».
Скопируйте полученный токен – он будет использоваться при создании и закрытии уведомлений (передаётся в заголовке
token).

6.2. Отправка уведомления (POST-запрос)
Адрес для запроса: https://your_messenger_domain_or_ip/plugins/api/v1/tasks
Тело запроса:
[ { "message": { "icon": "string", "text": "string", "markdown_text": "string", "header": "string", "notification_text": "string" }, "priority": 0, "notification_id": 0, "type": "default", "source": "string", "links": [ { "link": "string", "title": "string" } ], "buttons": [ { "link": "string", "type": "request", "title": "string", "action": 0 } ], "user_login": "string", "closing_check": false, "delete_api": "string", "send_to": "user", "integration_list": [ "trueconf" ], "priority_table": [ { "show_interval": 10, "show_count": 0 } ], "meta": { "additionalProp1": {} } } ]
Описание атрибутов
Таблица 1. Описание тела запроса
№ | Параметр | Тип данных | Обязательность | Описание | Варианты значений |
1 | message | Object | да | Объект с параметрами | |
1.1 | message.icon | String | да | Логотип уведомления | Изображение в формате data url |
1.2 | message.text | String | да | Текст уведомления (игнорируется, если есть markdown_text). | |
1.3 | message.markdown_text | String | нет | Текст уведомления с типом разметки Markdown. Данный ключ имеет более высший приоритет чем message.text. В этом случае message.text не отображается. | |
1.4 | message.header | String | да | Заголовок уведомления. | |
1.5 | message.notification_text | String | нет | Короткий текст для push-уведомления. | |
2 | priority | Integer | да | Приоритет уведомления для отображения в мессенджере. | 0 - низший 1 - низкий 2 - невысокий 3 - средний 4 - высокий 5 - очень высокий |
3 | notification_id | Integer | нет | Уникальный ID уведомления (может генерироваться сторонней ИС). Если удалить атрибут, то ID сгенерируется мессенджером. | |
4 | type | String | нет | Тип уведомления | "default" – обычное "critical" – критическое. |
5 | source | String | да | Источник уведомления (должен совпадать с заданным при генерации токена). | |
6 | links | Array of objects | нет | Дополнительные ссылки, отображаются после кнопок. | |
6.1 | String | да | Адрес дополнительной ссылки | ||
6.2 | links.title | String | да | Текст дополнительной ссылки | |
7 | buttons | Array of objects | да | Массив активных кнопок в уведомлении | |
7.1 | String | да | Ссылка при нажатии на кнопку. | ||
7.2 | buttons.type | String | да | Тип кнопки | request - отправка запроса по ссылке direct - перенаправления пользователя по ссылке move - напомнить позже |
7.3 | buttons.title | String | да | Текст кнопки. | |
7.4 | buttons.action | Integer | да | Уникальный номер кнопки. | |
8 | user_login | String | да | Логин получателя уведомления (LDAP) | |
9 | closing_check | Boolean | нет | Определяет, требуется ли со стороны ИС подтверждение выполнения целевого действия после нажатия на уведомление. Значения: false — требуется подтверждение. true — не требуется, уведомление закрывается автоматически. 1. При closing_check = false Система отправляет POST-запрос на адрес закрытия: Приоритет 1: значение атрибута delete_api (указывается при создании токена ИС или в теле уведомления). Приоритет 2: общий адрес из конфигурации мессенджера (TASKS_URL_DELETE в .env), если delete_api отсутствует. ИС-отправитель должна обработать этот запрос и, когда задача выполнена, сама отправить в мессенджер POST-запрос: /plugins/api/v1/tasks/cancel {"tasks_id": [<id_уведомления>]} (можно массив ID) 2. При closing_check = true Дополнительных запросов нет, уведомление считается закрытым сразу после нажатия. | false - требуется подтверждение со стороны ИС true - подтверждение не требуется |
10 | delete_api | String | нет | Переопределяет API для закрытия уведомления. | |
11 | send_to | String | нет | Выбор режима отправки ведомления | "user" – конкретному пользователю "all" – всем. |
12 | integration_list | Array of strings | нет | Массив с интеграциями | "trueconf" – дублировать уведомление в чат TrueConf. |
13 | priority_table | Array of objects | нет | Массив объектов, определяющих автоматическую смену приоритетов до выполнения целевого действия. Уведомление (push) всплывает согласно этой матрице. Для пропуска приоритета укажите null вместо объекта. | |
13.1 | priority_table.show_interval | Integer | да | интервал между показами (в минутах) | |
13.2 | priority_table.show_count | Integer | да | количество показов на данном приоритете | |
14 | meta | Object | нет | Объект может содержать любые свойства, кроме явно описанных. Вы можете передавать дополнительные ключи по своему усмотрению. Позволяет искать уведомления через GET-запрос /plugins/api/v1/tasks/meta?key=...&value=.... |
Особенности работы
Ответ сервера — массив с ID созданных уведомлений и статусами. Порядок элементов соответствует порядку отправленных уведомлений.
Статус
200— уведомление успешно создано.Статус
409— отправлен дубликатnotification_id.
Массивом можно отправлять задачи только от одного источника (верификация по токену источника).
Пример ответа сервера:
[ { "id": 123123, "status": 409 }, { "id": 123123123, "status": 200 } ]
7. Установка и обновление Desktop версий
Для корректной работы десктопных версий для Windows и Linux необходимо:
7.1. Поместить следующие файлы в каталог /cosco/installer/:
cosco.zip — архив с актуальной версией для Linux.
latest-version.txt — текстовый файл с номером версии для Linux.
coscowin.zip — архив с актуальной версией для Windows.
latest-version-win.txt — текстовый файл с номером версии для Windows.
lic.pdf — PDF-файл лицензии мессенджера (отображается на клиенте).
Cosco.msi — установщик для первичной установки на Windows.
7.2. После запуска сервера мессенджера эти файлы становятся доступны по адресу http(s)://{your-cosco-domain}/downloads/ (см. Рисунок 11).

7.3. Установка на Windows:
запустите Cosco.msi с правами администратора и выполните установку с параметрами по умолчанию.
7.4. Установка на Linux:
запустите скрипт install.sh с правами администратора:
sudo ./install.sh install
7.5. Обновление клиентов:
при появлении новых версий замените соответствующие архивы и текстовые файлы с версиями в каталоге /cosco/installer/. Запущенные клиенты регулярно сравнивают свою версию с версией на сервере и при несовпадении автоматически обновляются.
8. Работа с Desktop версией
8.1 «Тихий» запуск в Windows
Для запуска без графического интерфейса используйте ключи --silent или --background
Cosco.exe --silent
8.2. Протокол cosco://
Протокол регистрируется автоматически при первом запуске КОСКО‑Мессенджера. Позволяет осуществлять переход из внешней системы в конкретный диалог с пользователем по его логину:
cosco://user_login
9. Мониторинг в КОСКО Мессенджере
9.1. Метрики мониторинга доступны в панели администратора на вкладке «Мониторинг».
Отображаются:
количество пользователей в системе;
количество онлайн‑пользователей в разрезе типов клиентов;
график уведомлений, полученных от внешних систем через плагин уведомлений за прошедший период (см. Рисунок 12).

9.2. На вкладке «Списки» доступны три раздела:
«Установки» – перечень установок десктопных клиентов с информацией о версиях и устройствах (см. Рисунок 13).
«Зарегистрированные» – все пользователи мессенджера с указанием последней сессии и её параметров (см. Рисунок 14).
«Онлайн» – пользователи, находящиеся в сети в данный момент, с данными о типе клиента (см. Рисунок 15).



10 Распространение и обновление КОСКО Мессенджера
10.1. Распространение десктопных версий
Windows
Включите установку MSI‑пакета (
Cosco.msi) в групповые политики для автоматической установки на рабочих станциях, где мессенджер отсутствует.Для установки текущим онлайн‑пользователям используйте стандартную утилиту
msiexec(например,msiexec /i Cosco.msi /quiet).
Linux
Выполните запуск скрипта
install.sh с правами администратора на каждой рабочей станции (или централизованно через системы управления конфигурациями).
10.2. Обновление сервера
Важно! Перед началом обновления обязательно создайте полный бэкап сервера. Данная процедура сохранит текущее состояние системы и даст возможность произвести откат, если новая версия будет работать нестабильно или вызовет ошибки.
Дальнейший порядок действий:
Остановите работающий сервер:
cd /opt/cosco-msg docker-compose downДля Альт Сервер 10 используйте
docker compose down.Замените файлы в каталоге /opt/cosco-msg**:**Поместите новые tar-файлы образов (например, registry.abs95.ru_cosco_msg_http.tar).При необходимости замените файл docker-compose.yml (если в новой версии изменились настройки).
Загрузите новые образы в Docker:
Запустите сервер с новыми образами:
docker load -iregistry.abs95.ru_cosco_msg_http.tar # пример имениПовторите для каждого нового образа.docker-compose up -dДля Альт Сервер 10:docker compose up -d.Проверьте статус контейнеров:
docker-compose ps
10.3. Обновление десктопных приложений
Поместите актуальные файлы в каталог
/cosco/installer/:cosco.zip, latest-version.txt,coscowin.zip, latest-version-win.txt, Cosco.msiВ течение 30–60 минут клиенты на рабочих станциях автоматически обнаружат новую версию и выполнят обновление.