Конфигурация Chat Server хранится по пути ./elph-chat-server/stable/ в файлах:

Чтобы перейти в файл конфигурации введите команду:

<nano/vim/mcedit> elph-chat-server/stable/.env


# ELPH-CHAT-SERVER CONFIGFILE^
# Модули конфигурации расположены в порядке важности
# Без сконфигурированных параметров подключения к БД сервер не запустится
# Без нужных параметров сервер не запустится
# Без сконфигурированного провайдера аутентификации не будет доступа к учетным записям
# ...
# ---------- Необходимо сконфигурировать ----------
# Адреса сервисов
ELPH_PROXY="elph-proxy.loc"
ELPH_CHAT="elph-chat.loc"
ELPH_STATUS_SERVICE="user-status-service.loc"
ECSS_ADDRESSBOOK_HOST="address-book.loc"
LDAP_HOST="ldap.host.domain"
ELPH_SSW="ecss-core.loc"
ELPH_SSW_DOMAIN="default"

# Публичный адрес сервера (по которому он будет доступен через ecss-elph-proxy)
PUBLIC_URL="https://${ELPH_PROXY}"
# ---------- Менять не нужно ----------
ROOT_URL="https://${ELPH_CHAT}:3443"

# ######################## Docker ########################
# Источник докер образов
DOCKER_REPO_EXTERNAL="http://hub-ims.eltex-co.ru/external"
DOCKER_REPO_ECSS="http://hub-ims.eltex-co.ru/ecss"
DOCKER_REPO_ELPH="http://hub-ims.eltex-co.ru/elph"
# Версия докер образов
TAG="2.13.0"
CLIENT_TAG="2.13.2"
# ---------- Менять не нужно ----------
MONGO_TAG=5.0
REDIS_TAG=7.2
KEYCLOAK_TAG=26.2-elph-1.0.1
POSTGRES_TAG=17
MINIO_TAG=RELEASE.2025-02-07T23-21-09Z
MONITOR_TAG="0.1-${TAG}"
EVENTS_WEBHOOK_TAG=0.1
SERVER_TAG="${TAG}"
FILE_SERVICE_TAG="${TAG}"
VOLUMES_DIR="./volumes"

DEPLOY_PLATFORM=docker
# ########################

# Разрешить работу с не подтвержденными SSL сертификатами (самоподписанные/локальные/и т. д.)
NODE_TLS_REJECT_UNAUTHORIZED=0

# ######################## Параметры подключения к mongodb ########################
MONGO_URL=mongodb://mongo:27017/elph?replicaSet=rs01
MONGO_OPLOG_URL=mongodb://mongo:27017/local?replicaSet=rs01
# ########################

# ######################## Настройки авторизации ########################
# Чат сервер может работать в режиме когда он сам выписывает токен
# Приватный ключ для подписи токена пользователя (!!! Должен быть изменен с дефолтного значения и одинаков на всех сервисах !!!)
BEARER_TOKEN_PRIVATE_KEY='some-bearer-token'
# Или может работать в режиме работы с чужим токеном Openid connect
# В таком случае должен быть указан адрес сервера ключам которого должен доверять сервис
# Адрес сервиса SSO авторизации
AUTH_TOKEN_ISSUER="https://${ELPH_PROXY}/elph/auth/realms/${ELPH_SSW_DOMAIN}"
# Настройка времени жизни токена авторизации в секундах (по умолчанию час)
JWT_CUSTOM_EXP=

# общая шина
RABBITMQ_HOST="${ELPH_STATUS_SERVICE}"
RABBITMQ_PORT="5672"
RABBITMQ_URL="amqp://guest:guest@${RABBITMQ_HOST}:${RABBITMQ_PORT}"
#####################################################

#####################################################
# MinIO - файловое хранилище
#####################################################
MINIO_ROOT_USER="minioadmin"
MINIO_ROOT_PASSWORD="minioadmin"
#####################################################

#####################################################
# File Service
#####################################################
TUS_SERVER_URL=http://file-service:3000/tus
FILE_SERVICE_URL=http://file-service:3000
#####################################################

#####################################################
# Redis
#####################################################
REDIS_HOST=redis
REDIS_PORT=6379
#####################################################

#####################################################
# Keycloak Base Settings <- REQUIRED
#####################################################
KEYCLOAK_IS_SSL_ENABLE="true"
KEYCLOAK_CLIENT_SECRET="secret"
KEYCLOAK_HOST="${ELPH_CHAT}"
KEYCLOAK_PORT="8282"
KEYCLOAK_ENDPOINT="https://${ELPH_PROXY}/elph/auth/"
KEYCLOAK_USER="admin"
KEYCLOAK_PASSWORD="admin"
KEYCLOAK_REALM="${ELPH_SSW_DOMAIN}"

# Настройки для Elph Chat
KEYCLOAK_ELPH_CHAT_CLIENT_ID="chat-server-sync"
KEYCLOAK_ELPH_CHAT_CLIENT_SECRET="secret"
KEYCLOAK_ELPH_CHAT_REALM="${KEYCLOAK_REALM}"
KEYCLOAK_ELPH_CHAT_SYNC_ENABLED=true
KEYCLOAK_ELPH_CHAT_SYNC_INTERVAL=600000
# Keycloak RabbitMQ credentials
KK_TO_RMQ_EXCHANGE="keycloak.events"
KK_TO_RMQ_USERNAME="guest"
KK_TO_RMQ_PASSWORD="guest"
#####################################################

#####################################################
# Keycloak LDAP credentials
#
# Если оставить пустыми LDAP_CONNECTION_URL || LDAP_BIND_DN || LDAP_BIND_CREDENTIALS,
# то настройка LDAP провайдера будет пропущена
#####################################################
LDAP_CONNECTION_URL="ldap://${LDAP_HOST}"
LDAP_BIND_DN=""
LDAP_BIND_CREDENTIALS=""
LDAP_PROVIDER_UI_DISPLAY_NAME="ldap-of-ecss"
LDAP_USERS_DN=""
LDAP_USERNAME_ATTRIBUTE="uid"
LDAP_USER_RDN_ATTRIBUTE="uid"
LDAP_USER_UUID_ATTRIBUTE="entryUUID"
LDAP_USER_OBJ_CLASSES="inetOrgPerson,organizationalPerson"
LDAP_CUSTOM_USER_FILTER="(&(objectClass=inetOrgPerson)(mail=*)(telephoneNumber=*))"

# Настройки конфигов которые возвращаются каждому пользователю при запросе на /auth/me
SIP_SERVERS="${ELPH_SSW}:5060"
SBC_CONFIG={"host":"1.1.1.1","port":1111,"stun":{"host":"1.1.1.2","port":1111},"turn":[{"host":"1.1.1.3","port":1111},{"host":"1.1.1.4","port":1111,"username":"admin","password":"admin"}]}
SIP_CONNECTOR_TYPE=ssw
MOBILE_SSW_HOST="${ELPH_SSW}:5060"
MOBILE_SSW_FIRST_PROXY="sbc.loc:5060"
MOBILE_SSW_SECOND_PROXY=""
#####################################################

#####################################################
# Postgres Credentials
#####################################################
POSTGRES_HOST="postgres"
POSTGRES_PORT="5432"
# Root user
POSTGRES_DB_NAME="postgres"
POSTGRES_USER="postgres"
POSTGRES_PASSWORD="postgres"
# For ecss-push-gateway
PUSH_GATEWAY_DB_NAME="push_gateway"
PUSH_GATEWAY_DB_USER="push_gateway"
PUSH_GATEWAY_DB_PASS="push_gateway"
# For keycloak
KEYCLOAK_DB_NAME="${POSTGRES_DB_NAME}" # Потому что в версии 2.12 данные Keycloak лежали в это БД
KEYCLOAK_DB_USER="${POSTGRES_USER}"
KEYCLOAK_DB_PASS="${POSTGRES_PASSWORD}"
# For mini-apps-service
MINI_APPS_DB_NAME="mini_apps"
MINI_APPS_DB_USER="mini_apps"
MINI_APPS_DB_PASS="mini_apps"
KEYCLOAK_MINI_APPS_CLIENT_ID="mini-app-service"
KEYCLOAK_MINI_APPS_CLIENT_SECRET="Btq1BmAevE9w1856H0vHYOWf9IkAJbPU"



# ####################### Для работы сервера ########################
# ---------- Необходимо сконфигурировать ----------
PORT=3000
NODE_PATH=/usr/bin/node
NODE_ENV=production
# ########################

# ######################## Аутентификация через KEYCLOAK ########################
KEYCLOAK_CLIENT_ID="chat-server-sync"
KEYCLOAK_CLIENT_SECRET="secret"
KEYCLOAK_SYNC_ENABLED=true
KEYCLOAK_SYNC_INTERVAL=600000

# ######################## Аутентификация через ECSS10 ########################
# Параметры подключения к ecss-web-api (ecss-core)
ECSS_CORE_HOST="${ELPH_SSW}"
# ---------- Опционально ----------
ECSS_CORE_DOMAIN="${ELPH_SSW_DOMAIN}"
ECSS_CORE_USE_DEFAULT_DOMAIN="false"
ECSS_CORE_PORT=8086
ECSS_CORE_SERVICE=call
# ########################

# ########################  Получения доп информации о пользователе (аватар/дисплейнейм) ########################
# Параметры подключения к address-book сервису (adress_book - для синхронизации display name и аватара пользователя)
ECSS_ADDRESSBOOK_URL="http://${ECSS_ADDRESSBOOK_HOST}:4000"

# Параметры подключения к ecss-mysql (БД meeting-db - для работы чатов телеконференций)
ECSS_MEETING_DB_HOST="${ELPH_SSW}"
ECSS_MEETING_DB_PORT=3306
ECSS_MEETING_DB_NAME=ecss_meeting_db
ECSS_MEETING_DB_USER=ecss_meeting_db
ECSS_MEETING_DB_PASS=ecss_meeting_db

ECSS_ADDRESSBOOK_DB_NAME=ecss_address_book
ECSS_ADDRESSBOOK_DB_PASSWORD=address_book
ECSS_ADDRESSBOOK_DB_USER=address_book

# Если обновления аватара не было UPDATE_ADDRBOOK_AVATAR_EVERY_MS секунд, обновить данные при входе пользователя
UPDATE_ADDRBOOK_AVATAR_EVERY_MS=80000

# Префикс перенаправления на ecss-elph-api
ECSS_AVATAR_URL_ORIGIN_PREFIX="https://${ELPH_PROXY}/elph_api/loadlocal/"
# ########################

# ######################## Разметка сообщений (markdown, katex, autolink) ########################
# Разрешенные "подозрительные домены"
# Чтобы подсвечивались ссылки в сообщениях на ресурсы которые не являются публичными доменами нужно внести их в список
# список (через запятую) пример: domain.asd,evil.troian.loc
MESSAGEPARSER_AUTOLINK_CUSTOM_DOMAINS=eltex.loc
# ########################

# ######################## Тех поддержка (сбор обратной связи очтетов/клиентских логов) ########################
# ---------- Опционально ----------
# Включить создание supportuser
OVERWRITE_SETTING_Support_User=true
OVERWRITE_SETTING_Support_User_Welcome_Message="Добро пожаловать в чат технической поддержки!"
OVERWRITE_SETTING_Support_User_Password="password"
OVERWRITE_SETTING_Support_User_Name="Поддержка Elph"
OVERWRITE_SETTING_Support_User_Cluster_Update_Message_Enable=true
OVERWRITE_SETTING_Support_User_Cluster_Update_Message="Версия сервера обновлена"
# ########################

# ######################## Пользователь для агента безопасности ########################
# ---------- Опционально ----------
# Включить создание security-user
OVERWRITE_SETTING_Security_User=false
OVERWRITE_SETTING_Security_User_Password=""
# ########################

# ######################## Системные отчеты использования системы ########################
# ---------- Опционально ----------
### Разрешить системе отправлять сообщения пользователям (нужно для отправки отчета о системе)
SYSTEM_ADMIN_MESSAGES=true
### Генерировать отчет использования системы
SYSTEM_REPORTS_ENABLE=true
### Отправлять отчет каждые (<число>_<week|month>)
SYSTEM_REPORTS_INTERVAL="1_week"
# ########################

# ######################## Системное уведомление в чате пользователей о заполненности диска на сервере базы данных ########################
# ---------- Опционально ----------
### Включить уведомления
USED_SPACE_REPORTER_ENABLE=true
### Отправлять уведомления, если дисковое пространство заполнено больше чем на N%
USED_SPACE_REPORTER_PERCENT_LIMIT=85
USED_SPACE_REPORTER_INTERVAL=1_day


# ######################## Фильтры для логов ########################
# ---------- Опционально ----------
# Будут выводиться логи только из определенных здесь лейблов. Default значение - вывод логов с любыми лэйблами
# Примеры:
#   Если LOGGER_LOG_LABELS пустое значение => будет вывод логов с любыми лэйблами
#   LOGGER_LOG_LABELS=AmqpConnection - будут выводиться только логи с лэйблом AmqpConnection
# 	LOGGER_LOG_LABELS=Stream* - будут выводиться только логи, которые начинаются на Stream. Например: StreamNotifyRoom, StreamRoomMessages, etc.
#
# 	LOGGER_LOG_LABELS=-AmqpConnection -
# 			Будут выводиться все логи, кроме AmqpConnection (отличительная черта - знак минуса в начале строки).
# 			Если передадите -AmqpConnection,ChatService - значит логи с лэйблами AmqpConnection & ChatService будут исключены
#
# 	Примечание: Регистр в значениях не важен. Во время сравнения, значения из LOGGER_LOG_LABELS приводит к нижнему регистру
LOGGER_LOG_LABELS=
# ---------- Опционально ----------
# Будут выводиться логи только с определенным здесь уровнем. По дефолту - значение warn
# Доступные уровни LOGGER_LOG_LEVEL:
#   - debug или 0
# 	- info или 1
# 	- warn или 2
# 	- error или 3
#  Указывая уровень, нужно понять что будут отображаться только логи указанного уровня и ниже => логи уровня выше отображаться не будут.
#  Например:
#    - LOGGER_LOG_LEVEL=debug => debug, info, warn & error
#    - LOGGER_LOG_LEVEL=info => info, warn & error
#    - LOGGER_LOG_LEVEL=warn - будут отображаться только логи уровнем warn & error
#    - LOGGER_LOG_LEVEL=error - только логи уровня error
LOGGER_LOG_LEVEL=
# ########################




Основные конфигурационные параметры

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

Обязательный к изменению параметр: BEARER_TOKEN_PRIVATE_KEY — секретный ключ для генерации токена авторизации. По умолчанию стоит демонстрационное значение, которое важно поменять для обеспечения безопасности сервера. Значением может выступать любая комбинация символов >256 бит (примерно 32 символа). Значение данного параметра должно быть одинаковым в конфигурационном файле Chat Server и на всех сервисах: User Status Service, Call History Service и Address Book Service.

ELPH_PROXY="elph-proxy.domain" — aдрес Elph Proxy, по которому Chat Server будет доступен извне;
ELPH_CHAT="elph-chat.domain" — адрес Chat Server;
ELPH_STATUS_SERVICE="elph-status.domain"  — адрес Status Service;
ECSS_ADDRESSBOOK_HOST="ecss-address-book.domain"  — адрес Address Book;
LDAP_HOST="ldap.host.domain"  — адрес LDAP;
ELPH_SSW="ssw.domain"— адрес ядра ECSS;
ELPH_SSW_DOMAIN="ssw-domain" — домен SSW;

Для корректной работы к RabbitMQ должен подключаться Chat Server той же версии, что и сам rabbit.

MINIO_ROOT_USER=minioadmin;

MINIO_ROOT_PASSWORD=minioadmin— стандартные логин пароль для доступа к MinIO(http://<chat-address>:9000).

KEYCLOAK_USER=admin;

KEYCLOAK_PASSWORD=admin — стандартные логин пароль для доступа к Keycloak (http://<chat-address>:8282).

После изменения любого параметра нужно перезапустить Chat Server:

./ecss-elph-chat-server.sh up



Изменение конфигурации

Перед изменением конфигурации сначала остановите Chat Server.

Для остановки Chat Server без очистки контейнеров и docker-network:

./ecss-elph-chat-server.sh stop

Для остановки Chat Server с очисткой контейнеров и docker-network:

./ecss-elph-chat-server.sh down

Внимание! Команда ./ecss-elph-chat-server.sh down очищает только контейнеры и docker-network. 

Подробнее про команды управление и очистку баз данных можно прочитать в разделе «Настройка и управление Chat Server».

Изменить конфигурацию можно двумя способами:

  1.  Заново сконфигурировать при установке. Заново запустите скрипт с установкой:

    ./ecss-elph-chat-server.sh install
  2.  Изменить файл конфигурации вручную. Подробнее об этом в разделе «Настройка и управление Chat Server».

    Для этого остановите Chat Server:

    ./ecss-elph-chat-server.sh stop

    Измените конфигурацию:

    <nano/vim/mcedit> elph-chat-server/stable/.env

    Запустите Chat Server командой:

    ./ecss-elph-chat-server.sh up


Остальные параметры являются опциональными. Изменять их необходимо в случае, если используется нестандартная схема развёртывания ECSS-10.

Обратите внимание на архитектуру: для корректной работы конференций Chat Server должен иметь доступ к ecss-mysql. Для этого настройте маску доступа к mysql.

Введите команду на хосте с ecss-mysql:

dpkg-reconfigure ecss-mysql

Откроется диалоговое окно с вопросом о маске, например, для доступа всех IP-адресов можно задать маску: %.%.%.%.

Более подробно про настройку ecss-mysql смотрите в разделе «Настройка ECSS-10 для работы c Elph».