Команды управления

Остановка Chat Server без очистки docker container и docker network:

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

Остановка Chat Server с очисткой docker container и docker network:

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

Запуск Chat Server:

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

Рестарт Chat Server:

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

Просмотр запущенных контейнеров:

docker ps



Логи

Для просмотра логов баз данных:

docker logs elph-chat-server-stable-mongo-1

Для просмотра логов сервера:

docker logs elph-chat-server-stable-server-1

Для просмотра логов в реальном времени добавить "--follow" в конце команды:

docker logs elph-chat-server-stable-server-1 --follow



Конфигурация

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

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

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


# ELPH-CHAT-SERVER CONFIGFILE 2.11.0^
# Модули конфигурации расположены в порядке важности
# Без сконфигурированных параметров подключения к БД сервер не запустится
# Без нужных параметров сервер не запустится
# Без сконфигурированного провайдера аутентификации не будет доступа к учетным записям
# ...

# ######################## Docker ########################
# Источник докер образов
DOCKER_REPO="git.eltex.loc:4567/external"
# Версия докер образов
TAG="2.11.0"
# ---------- Менять не нужно ----------
NGINX_TAG=1.23.3-${TAG}
MONGO_TAG=4.4-${TAG}
MINIO_TAG=RELEASE.2025-02-07T23-21-09Z-${TAG}
SERVER_TAG=${TAG}
VOLUMES_DIR="./volumes"

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

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

# ####################### Для работы сервера ########################
# ---------- Необходимо сконфигурировать ----------
# Публичный адрес сервера (по которому он будет доступен через ecss-elph-proxy)
PUBLIC_URL="https://my-proxy.elph"
# ---------- Менять не нужно ----------
ROOT_URL="https://my-chat-server.elph:3443"
PORT=3000
NODE_PATH=/usr/bin/node
NODE_ENV=production
# ########################

# ######################## Авторизация на чат сервере ########################
# Чат сервер может работать в режиме когда он сам выписывает токен
# Приватный ключ для подписи токена пользователя (!!! Должен быть изменен с дефолтного значения и одинаков на всех сервисах !!!)
BEARER_TOKEN_PRIVATE_KEY='sometokensometokensometokensometokensometokensometokensometokensometokensometoken'
# Или может работать в режиме работы с чужим токеном Openid connect
# В таком случае должен быть указан адрес сервера, ключам которого должен доверять сервис
# Адрес сервиса SSO авторизации
AUTH_TOKEN_ISSUER='http://my-auth.elph:5000'

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

# ########################  Получения доп. информации о пользователе (аватар/дисплейнейм) ########################
# Параметры подключения к address-book сервису (address_book — для синхронизации display name и аватара пользователя)
ECSS_ADDRESSBOOK_URL="http://my-address_book-service.elph:4000"

# Параметры подключения к ecss-mysql (БД meeting-db — для работы чатов телеконференций)
ECSS_MEETING_DB_HOST="my-ssw.elph"
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://my-proxy.elph/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

# ######################## Cпецифичная настройка ########################
# ---------- Опционально ----------
# Разрешить работу с не подтвержденными SSL сертификатами (самоподписанные/локальные/и т. д.)
NODE_TLS_REJECT_UNAUTHORIZED=0
# Слать push-уведомления через apple-сервер либо через песочницу apple (false), на работу android push-уведомления не влияет
OVERWRITE_SETTING_Push_production=true
# Настройка времени жизни токена авторизации в секундах (по умолчанию — час)
JWT_CUSTOM_EXP=
# ---------- Менять не нужно ----------
OVERWRITE_SETTING_API_CORS_Origin='*'
OVERWRITE_SETTING_API_Enable_CORS=true
OVERWRITE_SETTING_Iframe_Restrict_Access=false
OVERWRITE_SETTING_Initial_Channel_Created=true
# ########################

# NGINX_ACCESS_LOGS=./log/ecss-chat-server.access.log
# Для монтирования своих сертификатов (по умолчанию самоподписанные)
# NGINX_CERTS=
# NGINX_RPIVATE_SSL_KEYS=

# ######################## Фильтры для логов ########################
# Определение здесь значений отключит все логгеры, кроме тех, что здесь описаны
# Для нормальной работы оставить пустыми, если нет необходимости отлаживать
# ---------- Опционально ----------
### Будут выводиться логи только из определенных здесь лейблов
LOGGER_LOG_LABELS=
### Будут выводиться логи только с определенным здесь уровнем
OVERWRITE_SETTING_Log_Level=0
# ########################

# общая шина
RABBITMQ_URL="amqp://my-rabbit_login:my-rabbit_password@my-user_status_service.elph:5672/"

# Настройки файлового хранилища MinIO
MINIO_ROOT_USER="minioadmin"
MINIO_ROOT_PASSWORD="minioadmin"

TUS_SERVER_URL=http://file-service:3000/tus
FILE_SERVICE_URL=http://file-service:3000



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

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

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

PUBLIC_URL=https://<ip_or_domain_elph_proxy> — aдрес Elph Proxy, по которому Chat Server будет доступен извне;

ROOT_URL="https://<ip_or_domain_chat_server>:3443" — адрес Chat Server;

ECSS_CORE_HOST=<ip_or_domain_ecss_core> — адрес ядра ECSS;

ECSS_CORE_DOMAIN="ssw-domain" — домен SSW;

ECSS_ADDRESSBOOK_URL=http://<ip_or_domain_address_book_service>:4000 — адрес address-book-service;

ECSS_MEETING_DB_HOST="ip_or_domain_ecss_mysql" — адрес ecss-mysql;

ECSS_AVATAR_URL_ORIGIN_PREFIX=https://<ip_or_domain_elph_proxy>/elph_api/loadlocal/ — адрес Elph-API для доступа к аватарам, подробнее об этом в разделе «Настройка аватаров»;

RABBITMQ_URL="amqp://<rabbit_login>:<rabbit_password>@<rabbitMQ_address_or_domain>:5672/" — адрес брокера RabbitMQ. Начиная с версии 2.4.0, поставляется совместно с User Status Service. Стандартные логин:пароль — guest:guest;

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

MINIO_ROOT_USER=ecss;

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

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

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

Если используется один стандартный домен, то производится настройка параметров ECSS_CORE_USE_DEFAULT_DOMAIN и ECSS_CORE_DOMAIN:

ECSS_CORE_USE_DEFAULT_DOMAIN="true" — все пользователи без домена при логине будут отправляться на стандартный домен. При значении "false" Chat Server будет ожидать имя домена в авторизационных данных от клиента;

ECSS_CORE_DOMAIN=<domain_name> — имя домена ECSS, с которым будет работать Chat Server. При ECSS_CORE_USE_DEFAULT_DOMAIN="false" допускается оставить значение параметра ECSS_WEB_API_DOMAIN пустым.



Настройка системных отчетов использования системы

Отчеты по использованию системы по умолчанию настроены на отправку отчетов раз в неделю пользователю supportuser.

Список интервалов, поддерживаемых для отправки отчетов: weeks, months. Указывать меньший интервал не рекомендуется.

SYSTEM_REPORTS_INTERVAL="1_week"

Пример отчета использования системы:



Уведомления о заполненности диска на сервере базы данных

Список интервалов поддерживаемых для отправки отчетов: day, weeks, months. Указывать меньший интервал не рекомендуется.

USED_SPACE_REPORTER_PERCENT_LIMIT — процент заполненности диска, при достижении которого начинают отправляться уведомления. По умолчанию равен 85. При заполненности диска менее указанного процента, отчеты о заполненности приходить не будут.

USED_SPACE_REPORTER_ENABLE=true
USED_SPACE_REPORTER_INTERVAL=1_day
USED_SPACE_REPORTER_PERCENT_LIMIT=85

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

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

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

Введите команду:

dpkg-reconfigure ecss-mysql

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

Более подробно про настройку ecss-mysql можно почитать в разделе «Версия 2.11.0. Настройка SSW для работы c Elph».



Сетевые окончания

3443 — https-порт для доступа к Chat Server.

9000 — http-порт для доступа к MinIO.



Логирование

OVERWRITE_SETTING_Log_Level

В .env можно настроить с каким уровнем выводить логи. Доступные значения: 0, 1 или 2.

0 - warning;
1 - info;
2 - debug.

LOGGER_LOG_LABELS

Также есть возможность настроить вывод логов только определенных лейблов. 

Для нормальной работы оставить пустым.

LOGGER_LOG_LABELS=Push,System,Other


После очистки контейнеров логи очищаются. Поэтому, перед остановкой Chat Server с очисткой контейнеров (./ecss-elph-chat-server.sh down), рекомендуется скопировать логи.

Начиная с версии 2.5.0, добавлена ротация логов.

По умолчанию пишутся 10 файлов по 50 Мб. Логи расположены в /var/lib/docker/containers/<container>/.

Вывести список контейнеров можно командой:

docker ps

Для настройки параметров ротации нужно отредактировать docker-compose.yaml, расположенный в elph-chat-server/stable/. В данном файле под каждый контейнер отведен свой блок настроек:

    logging:
      driver: "json-file" 
      options:
        max-size: "50m" 
        max-file: "10" 

И перезапустить Chat Server:

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