Общая информация о конфигурации сервисов
Для конфигурации сервисов используют переменные окружения, которые передаются из docker-compose. Данные переменные вынесены в файл конфигурации .env. Их можно изменять в зависимости от различных внешних условий.
Конфигурация ecss-clerk
Основными параметрами для изменения являются адрес адресной книги, логин и пароль от учетной записи keycloak.
Пример файла .env представлен ниже:
##################################################### # Required ##################################################### PEEPER_TOKEN="" PEEPER_IP="" # IP сервера Peeper, на которое будет резолвиться доменное имя сервера Peeper PEEPER_HOST="" # Доменное имя или IP адрес Peeper сервера PEEPER_EXTERNAL_MODE="false" # false, если на сервере отсутствует external network в docker, true - если присутствует HOSTNAME= # Имя хоста для Peeper. Не может содержать точек DOCKER_GID=999 # GID группы docker на хостовой машине. Нужен peeper-telegraf для доступа к /var/run/docker.sock без запуска с root-правами. ##################################################### # Базовые ##################################################### TZ=Asia/Novosibirsk LOCALTIME_PATH=/etc/localtime RESTART_POLICY=always LOG_LEVEL=info ##################################################### # Реестры и теги образов ##################################################### DOCKER_REPO_EXT=git.eltex.loc:4567/ecss-ext DOCKER_REPO_ECSS=git.eltex.loc:4567/ecss # Теги сервисов TAG=2.7.0.53 # clerk UI_TAG=2.7.0 # ecss-asr-ui MONGO_TAG=4.4.22 MONGO_EXPORTER_TAG=0.51.0 VOSK_TAG=2.7.0.5 # asr-server/vosk-server ##################################################### # Clerk ##################################################### CLERK_HOST=clerk CLERK_PORT=8000 METRICS_PATH=/metrics PB_URL=http://eltex.loc/book2.vcf PB_SOURCES=VCF #Переменные связанные с AdB AB_AUTH_TYPE=BY_KEYCLOAK_JWT AB_API_KEY= AB_URL=http://localhost:4000/api/graphql/v1 AB_AUTH_HOST=keycloak AB_AUTH_PORT=8085 AB_AUTH_REALM=clerk AB_CLIENT_ID=address_book AB_CLIENT_SECRET=secret_from_address_book # Переопределения логов (опционально) CLERK_LOG_LEVEL= WEBBACKEND_LOG_LEVEL= VOSK_LOG_LEVEL= ASR_SERVER_LOG_LEVEL= MONGO_LOG_LEVEL= NGINX_LOG_LEVEL= KEYCLOAK_LOG_LEVEL= KEYCLOAK_DB_LOG_LEVEL= KEYCLOAK_IMPORTER_LOG_LEVEL= ASR_TIMEOUT=12s ##################################################### # Mongo для истории Clerk ##################################################### MONGO_DB_HOST=mongo MONGO_PORT=27017 MONGO_DB_NAME=history-db MONGO_INITDB_ROOT_USERNAME=root MONGO_EXPORTER_PORT=9276 ##################################################### # Clerk-ui (asr-ui) ##################################################### WEBBACKEND_PORT=8091 NGINX_CONTAINER_NAME=nginx NGINX_EXTERNAL_PORT=8080 ##################################################### # ASR / VOSK ##################################################### VOSK_SERVER_INTERFACE=vosk-server VOSK_SERVER_PORT=2700 VOSK_SAMPLE_RATE=48000 VOSK_BUF_DIR=/buf_dir ASR_HOST=asr-server ASR_PORT=8003 VOSK_HOST=vosk-server # Метрики VOSK VOSK_METRIC_PORT=2701 ##################################################### # VAD ##################################################### VAD_SILENCE_DURATION=1000 VAD_SPEECH_PAD=500 VAD_THRESHOLD=0.7 VAD_SAMPLERATE=16000 VAD_TARGET_DBFS=-30.0 ##################################################### # Keycloak ##################################################### KEYCLOAK_HOST=keycloak KEYCLOAK_PORT=8085 KEYCLOAK_REALM=clerk # Клиент для авторизации пользователей в UI/Clerk KEYCLOAK_CLIENT=clerk-client KEYCLOAK_CLIENT_SECRET=Q4Cbf6NzPni9n4wprlgGuUPOyKIamWZ0 # Админ/БД Keycloak KEYCLOAK_ADMIN=admin KC_DB=postgres KC_DB_URL=jdbc:postgresql://keycloak-db:5432/root KC_DB_USERNAME=root POSTGRES_DB=root POSTGRES_USER=root ##################################################### # PEEPER ##################################################### APP_REGISTRY=nexus.eltex.loc:9007 APP_VERSION=1.1 PEEPER_PORT=443 PEEPER_TIMEZONE=Asia/Novosibirsk DOCKER_SOCKET=/var/run/docker.sock JOURNAL_PERSISTENT=/var/log/journal JOURNAL_VOLATILE=/run/log/journal TELEGRAM_BOT_TOKEN=some_token TELEGRAM_CHAT_ID=some_token MEM_LIMIT_AGENT=256m MEM_LIMIT_PROVISIONER=256m MEM_LIMIT_TELEGRAF=256m MEM_LIMIT_VECTOR=256m
Описание переменных ecss-clerk
Ниже приведено описание основных переменных:
| Переменная | Описание |
|---|---|
| TZ | Часовой пояс, в котором работают все контейнеры (логирование, планировщики и т.п.). Пример: Asia/Novosibirsk. |
| LOCALTIME_PATH | Путь к файлу локального времени хоста, монтируемому в контейнеры для синхронизации системного времени (/etc/localtime). |
| EXTERNAL_HOST | Внешний адрес/домен, по которому UI/Keycloak доступны пользователям (используется в webbackend для формирования ссылок авторизации). |
| LOGS_DIR / LOG_DIR | Каталог для хранения логов сервисов внутри томов (в Nginx/UI — каталог логов веб-интерфейса). В compose жёстко задан как /app/logs или /app/log. |
| PCM_CACHE / RECORD_DIR | Каталог для хранения временных/кеш‑файлов аудио (PCM/WAV). В Nginx используется RECORD_DIR=/app/records, данные складываются в volume clerk-pcm-data. |
| CLERK_HOST | Внутреннее имя хоста сервиса Clerk в Docker‑сети (в Nginx — clerk). |
| CLERK_PORT | Порт HTTP‑API сервиса Clerk (REST‑эндпоинты распознавания и управления). Пробрасывается наружу как ${CLERK_PORT}:${CLERK_PORT}. |
| WEBBACKEND_PORT | Порт HTTP/WebSocket‑backend’а UI (webbackend), через который Nginx проксирует запросы статуса и WebSocket. |
| WS_PORT | Порт, на котором webbackend принимает WebSocket‑подключения (устанавливается из WEBBACKEND_PORT). |
| NGINX_CONTAINER_NAME | Имя контейнера Nginx, используемого как фронтенд/UI‑прокси для ASR. В webbackend проброшено как NGINX_CONTAINER_NAME=nginx. |
| NGINX_EXTERNAL_PORT | Внешний порт для веб‑интерфейса (порт хоста, на котором доступен Nginx/UI, по умолчанию прокидывается в контейнер на 80). |
| ADDRESS_BOOK_URL | URL внешнего сервиса телефонного справочника (AddressBook), используемого Clerk для поиска контактов (GraphQL API). |
| PB_URL | URL внешнего источника телефонной книги в формате vCard (файл .vcf), который Clerk может использовать как источник контактов. |
| PB_SOURCES | Источники телефонной книги для Clerk (например, VCF, может быть комбинированный список). |
| ASR_HOST | Внутреннее имя хоста сервиса ASR‑сервера в Docker‑сети (asr-server). |
| ASR_PORT | Порт HTTP/WebSocket‑интерфейса ASR‑сервера (эндпоинты prepare_pb, compile, ws/asr_vad и др.). |
| ASR_TIMEOUT | Таймаут ожидания ответа от ASR‑сервиса при распознавании (например, 12s). Используется в Clerk и в коде API (context.WithTimeout). |
| VOSK_SERVER_INTERFACE | Адрес/интерфейс на котором Vosk‑сервер слушает входящие WebSocket‑подключения (для asr-server). |
| VOSK_SERVER_PORT | Порт, на котором Vosk‑сервер принимает WebSocket‑подключения от asr-server. |
| VOSK_SAMPLE_RATE | Частота дискретизации аудио используемая Vosk‑сервером (Гц). |
| VOSK_BUF_DIR / BUF_DIR | Каталог буфера Vosk: сюда выкладывается скомпилированный граф модели для последующей загрузки Vosk, а также временные файлы. |
| VOSK_HOST | Имя хоста Vosk‑сервера в Docker‑сети к которому подключается asr-server (vosk-server). |
| VAD_SILENCE_DURATION | Минимальная длительность тишины (мс) для фиксации конца речи в VAD. Рекомендуется не менять, если всё работает; при «обрыве» фраз можно увеличить на 200–300 мс. |
| VAD_SPEECH_PAD | Дополнительная «припадка» (мс) вокруг сегмента речи для более естественной обрезки. При обрезании первых/последних букв можно увеличить на 50–100 мс. |
| VAD_THRESHOLD | Порог чувствительности VAD (0–1), определяющий, что считать речью. При наличии речи без распознавания — уменьшить на 0.05–0.1; при распознавании шумов — увеличить на 0.1–0.2. |
| VAD_SAMPLERATE | Частота дискретизации используемая внутри алгоритма VAD (Гц). |
| VAD_TARGET_DBFS | Целевой уровень громкости (dBFS) для нормализации сегментов перед отправкой в Vosk. При слишком тихой речи/плохих распознаваниях — увеличить на 5–10; при перегрузах — уменьшить на 5–10. |
| MONGO_DB_HOST | Имя хоста MongoDB в Docker‑сети (mongo). |
| MONGO_PORT / MONGO_DB_PORT | Порт MongoDB внутри Docker‑сети (по умолчанию 27017). |
| MONGO_DB_NAME / MONGO_INITDB_DATABASE | Имя базы данных MongoDB используемой для хранения истории и статистики (например history-db). |
| MONGO_INITDB_ROOT_USERNAME | Имя администратора MongoDB создаваемого при инициализации контейнера. |
| MONGO_INITDB_ROOT_PASSWORD_FILE | Путь внутри контейнера к файлу с паролем администратора MongoDB (используется секрет /run/secrets/mongo_root_password). |
| MONGO_USERNAME | Пользователь MongoDB, под которым Clerk подключается к базе (берётся из MONGO_INITDB_ROOT_USERNAME). |
| MONGO_DB_PASSWORD | Пароль MongoDB, под которым Clerk подключается к базе (читается из секрета mongo_root_password). |
| MONGO_TAG | Версия (тег) Docker‑образа MongoDB (в compose использован образ 4.4.22, фактически зашит в image). |
| AUTH_TYPE | Тип авторизации в Clerk. В примере: BY_KEYCLOAK_JWT — авторизация по JWT, выданным Keycloak. |
| KEYCLOAK_HOST | Имя хоста Keycloak в Docker‑сети (keycloak), также используется webbackend’ом как EXTERNAL_HOST при работе внутри сети. |
| KEYCLOAK_PORT / KC_HTTP_PORT | Порт, на котором доступен веб‑интерфейс и API Keycloak. Пробрасывается наружу. |
| KEYCLOAK_REALM / AUTH_REALM / AB_AUTH_REALM | Realm в Keycloak, в котором настроен клиент и пользователи (в примере clerk). |
| KEYCLOAK_CLIENT / AUTH_CLIENT | Имя клиента (client) в Keycloak, используемого Clerk и UI для авторизации пользователей (clerk-client). |
| KEYCLOAK_CLIENT_SECRET / AUTH_SECRET | Секрет клиента Keycloak используемый для получения токенов. |
| KEYCLOAK_ADMIN | Имя администратора Keycloak создаваемого при инициализации (admin). |
| KC_DB | Имя драйвера/типа БД для Keycloak (postgres). |
| KC_DB_URL | JDBC‑URL к базе данных Postgres для Keycloak (jdbc:postgresql://keycloak-db:5432/root). |
| KC_DB_USERNAME | Имя пользователя базы данных Postgres для Keycloak (root). |
| KC_DB_PASSWORD | Пароль пользователя БД Keycloak (подтягивается из секрета keycloak_db_password). |
| POSTGRES_DB | Имя базы данных в контейнере Postgres для Keycloak (root). |
| POSTGRES_USER | Имя пользователя базы данных Postgres для Keycloak (root). |
| POSTGRES_PASSWORD_FILE | Путь к файлу с паролем пользователя Postgres (секрет postgres_password). |
| AB_AUTH_HOST | Хост Keycloak, к которому обращается Clerk для получения токена при запросах в AddressBook (в примере localhost, если AddressBook снаружи). |
| AB_AUTH_PORT | Порт Keycloak для авторизации запросов Clerk -> AddressBook (совпадает с KEYCLOAK_PORT: 8085). |
| AB_CLIENT_ID | Идентификатор клиента Keycloak под которым Clerk получает токен для обращения к AddressBook. |
| AB_CLIENT_SECRET | Секрет этого клиента для авторизации запросов к AddressBook. |
| METRICS_PATH | HTTP‑путь, по которому сервисы экспортируют метрики Prometheus (по умолчанию /metrics). |
| LOG_LEVEL | Уровень логирования сервисов ASR (info, debug и т.п.). Если задали значение отличное от info, debug, warn,error заполните переменные: CLERK_LOG_LEVEL, ASR_SERVER_LOG_LEVEL, VOSK_LOG_LEVEL в соотвествии с правилами указаными в описании этих переменных. |
| LOG_FILE | Путь к файлу логов внутри контейнера Clerk (/app/log/clerk.log). |
| CLERK_LOG_LEVEL | Уровень логов только для clerk. Если пусто — берётся LOG_LEVEL, если и его нет — info. (поддерживаются: info, debug, warn,error) |
| WEBBACKEND_LOG_LEVEL | Уровень логов только для webbackend. Если пусто — берётся LOG_LEVEL, если и его нет — info. |
| ASR_SERVER_LOG_LEVEL | Уровень логов только для asr-server. Если пусто — берётся LOG_LEVEL, если и его нет — info. (поддерживаются: info, debug, warn,error) |
| VOSK_LOG_LEVEL | Уровень логов только для vosk-server. Если пусто — берётся LOG_LEVEL, если и его нет — info. (поддерживаются: info, debug, warn,error) |
| APP_REGISTRY | Адрес реестра контейнеров, из которого будут скачиваться образы Peeper. |
| APP_VERSION | Версия образов Peeper (agent, provisioner, telegraf, vector), используемая в docker-compose. |
| PEEPER_IP | IP-адрес сервера Peeper, на который будет резолвиться доменное имя PEEPER_HOST. |
| PEEPER_HOST | Доменное имя или IP-адрес сервера Peeper, к которому подключаются Peeper-клиенты. |
| PEEPER_PORT | Сетевой порт сервера Peeper (HTTPS по умолчанию). |
| PEEPER_EXTERNAL_MODE | Режим работы с Docker-сетью external: false — сети нет, true — сеть external существует. |
| PEEPER_TIMEZONE | Часовой пояс для контейнеров Peeper (формат tz database, см. список таймзон). |
| DOCKER_SOCKET | Путь к Docker-сокету хоста, используемому для сбора метрик и информации о контейнерах. |
| DOCKER_GID | GID группы docker на хостовой машине. Нужен peeper-telegraf для доступа к /var/run/docker.sock без запуска с root-правами. |
| HOSTNAME | Имя хоста для peeper-agent. |
| JOURNAL_PERSISTENT | Путь к persistent-журналам systemd (JournalD), монтируемым в Peeper Vector. |
| JOURNAL_VOLATILE | Путь к volatile-журналам systemd (JournalD), монтируемым в Peeper Vector. |
| PEEPER_TOKEN | Токен доступа к серверу Peeper для авторизации запросов (используется provisioner). |
| TELEGRAM_BOT_TOKEN | Токен Telegram-бота для предварительной настройки уведомлений из Peeper/Grafana. |
| TELEGRAM_CHAT_ID | Идентификатор Telegram-чата или группы, куда отправляются уведомления. |
| MEM_LIMIT_AGENT | Лимит оперативной памяти для контейнера peeper-agent. |
| MEM_LIMIT_PROVISIONER | Лимит оперативной памяти для контейнера peeper-provisioner. |
| MEM_LIMIT_TELEGRAF | Лимит оперативной памяти для контейнера peeper-telegraf. |
| MEM_LIMIT_VECTOR | Лимит оперативной памяти для контейнера peeper-vector. |
Конфигурация ecss-tts
Основными параметрами для изменения являются адрес/доменное имя и порт, на котором сервер будет принимать запросы на синтез речи.
Пример файла .env представлен ниже:
##################################################### # Global config ##################################################### DOCKER_REPO="hub-ims.eltex-co.ru/tts" TAG="2.5.1" ##################################################### # TTS ##################################################### TTS_HOST="tts-server" TTS_PORT="7890" TTS_COUNT_WORKERS="1" TTS_MODEL_RU_PATH="./tts_models/vosk_0.10"
Описание переменных ecss-tts
Ниже приведено описание основных переменных:
Переменная | Значение по умолчанию | Описание |
|---|---|---|
TTS_HOST | tts-server | ip address/hostname для входящих запросов на синтез речи |
| TTS_PORT | 7890 | Порт для входящих запросов на синтез речи |
| TTS_COUNT_WORKERS | 1 | Количество воркеров ттс сервера |
| TTS_MODEL_RU_PATH | ./tts_models/vosk_0.10 | Путь до модели для генерации речи внутри контейнера |