Docker-обработчик (Linux)
Docker-обработчик для локальной транскрибации: установка на Linux-сервер с нуля, подключение к MikoPBX, проверка работы, обновление и удаление.
Docker-обработчик - контейнер для локального распознавания записей звонков на вашем Linux-сервере. Он берет задания из очереди модуля Локальная транскрибация, скачивает запись, распознает ее выбранной в MikoPBX моделью и отправляет на станцию сегменты с таймкодами и техническую диагностику. Записи не покидают вашу сеть.
Docker-обработчик - альтернатива Local STT Worker для macOS. На одной станции в каждый момент работает одна платформа: какая именно, определяется моделью, выбранной на вкладке Каталог моделей.
Образ опубликован в Docker Hub: excla1m/mikopbx-stt-worker. Тег latest всегда указывает на последнюю стабильную версию.
Требования
ОС
64-битный Linux (x86_64 или arm64)
Ubuntu Server 24.04 LTS или Debian 12
Процессор
4 ядра
8 ядер с поддержкой AVX2
Память
4 ГБ
8 ГБ (нужно для T-one)
Диск
30 ГБ
50 ГБ
Docker
Docker Engine с плагином Compose 2.24 или новее
последняя стабильная версия
Сеть
исходящий HTTPS до MikoPBX, Docker Hub и huggingface.co
исходящий HTTPS до MikoPBX, Docker Hub и huggingface.co
Модели
Модель выбирается в MikoPBX, обработчик скачивает ее при первом запуске и хранит в томе models. Каждая модель закреплена на конкретной версии, а обработчик сверяет SHA-256 каждого файла и не загружает модель при расхождении.
GigaAM v3 (по умолчанию)
русский
Русские звонки: лучшая точность, пунктуация, цифры
0,9 ГБ
T-one
русский
Русская телефония, без пунктуации
5,6 ГБ
Whisper Large V3 Turbo
около 99 языков
Любые языки и смешанные звонки; самая медленная на CPU
1,6 ГБ
Parakeet TDT 0.6B v3
25 европейских
Европейские языки
2,5 ГБ
GigaAM Multilingual
казахский, киргизский, узбекский, русский, английский
Языки Средней Азии, без пунктуации
0,9 ГБ
Шаг 1. Подготовка сервера
Установите Docker Engine и плагин Compose:
Проверьте установку и процессор:
Проверьте доступ к MikoPBX, Docker Hub и хранилищу моделей:
Шаг 2. Подготовка MikoPBX
Откройте Модули → Локальная транскрибация → вкладка Каталог моделей.
Переключите платформу на Linux (Docker) и выберите модель, например GigaAM v3.
Перейдите на вкладку Обработчики и нажмите Создать ключ доступа.
Скопируйте ключ: он показывается один раз и после обновления страницы больше не будет доступен.

Шаг 3. Получение образа
Docker сам выберет архитектуру сервера (x86_64 или arm64). Образ занимает около 2 ГБ.
Шаг 4. Файл compose.yaml
Создайте каталог обработчика и файл compose.yaml:
name: local-stt-worker
Фиксирует имена томов (local-stt-worker_models, local-stt-worker_data) независимо от имени каталога.
restart: unless-stopped
Обработчик запускается вместе с Docker после перезагрузки сервера.
volumes
models - скачанные модели, data - настройки, UID и статус обработчика.
read_only, cap_drop, no-new-privileges
Контейнер не может писать никуда, кроме томов и /tmp, и работает без привилегий от пользователя с uid 10001.
stop_grace_period: 90s
Время, за которое текущее задание успевает завершиться или вернуться в очередь при остановке.
Шаг 5. Подключение к MikoPBX (setup)
Запустите мастер настройки:
Мастер спросит:
Адрес MikoPBX -
https://<адрес-mikopbx>без пути.Проверять ли сертификат MikoPBX - по умолчанию нет (см. раздел TLS).
Ключ обработчика - ключ из шага 2, ввод скрыт.
Имя обработчика - как он будет показан на вкладке Обработчики.
Затем мастер проверит подключение, зарегистрирует обработчик и сохранит настройки в томе data (/data/config.json, права 600). Пример успешного результата:
Шаг 6. Запуск
При первом запуске обработчик скачивает модель (GigaAM v3 - около 0,9 ГБ, около 2-3 минут при скорости 50 Мбит/с) и проверяет ее контрольные суммы, после чего начинает брать задания. Пока модель загружается, status показывает downloading / loading the model.
Проверка работы
В MikoPBX на вкладке Обработчики появился обработчик со статусом Онлайн, его IP и модель.
statusпоказываетprocessing a jobилиwaiting for jobsи растущий счетчик заданий:
В журнале контейнера видно каждое задание:
В карточке звонка появилась расшифровка, а в ее технической информации - движок, устройство и время обработки.
RTF - отношение времени обработки к длительности записи. Например, RTF 0,1 означает, что 10-минутный звонок распознается за минуту.
Управление
Состояние
docker compose exec worker local-stt-worker status
Журнал
docker compose logs -f --tail 100
Проверить подключение и ключ
docker compose run --rm worker check
Остановить
docker compose stop
Запустить
docker compose start
Перезапустить
docker compose restart
Изменить настройки
docker compose run --rm worker setup, затем docker compose up -d
Все команды выполняются в каталоге /opt/mikopbx-stt-worker. При остановке текущее задание завершается или возвращается в очередь MikoPBX, новые звонки ждут в очереди.
Обновление
Скачайте новую версию образа и пересоздайте контейнер. Модели и настройки хранятся в томах и сохраняются.
Текущее задание при пересоздании контейнера завершается или возвращается в очередь. Чтобы закрепить конкретную версию, укажите в строке image тег вида excla1m/mikopbx-stt-worker:<версия>-cpu - список версий есть на вкладке Tags в Docker Hub.
Удаление
Затем в MikoPBX на вкладке Обработчики удалите ключ доступа этого обработчика. Без -v тома сохраняются, и при повторной установке модель не придется скачивать заново.
Настройка через .env
Вместо setup параметры можно задать в файле .env рядом с compose.yaml. Непустая переменная окружения всегда важнее значения, сохраненного мастером.
PBX_URL
-
Адрес MikoPBX: https://host[:port], без пути
WORKER_TOKEN / WORKER_TOKEN_FILE
-
Ключ обработчика строкой или путь к файлу внутри контейнера
WORKER_NAME
Docker STT worker
Имя на вкладке Обработчики
WORKER_UID
создается автоматически
Постоянный идентификатор; ключ привязывается к одному UID
PBX_TLS_VERIFY
false
true - отклонять недоверенный сертификат MikoPBX
PBX_CA_FILE
-
Дополнительный CA (PEM или DER) при включенной проверке TLS
POLL_INTERVAL
5
Пауза между опросами очереди в простое, секунд
HEARTBEAT_INTERVAL
60
Интервал продления аренды задания, секунд
LOG_LEVEL
INFO
DEBUG, INFO, WARNING, ERROR
TLS
Проверка сертификата по умолчанию выключена: обработчик принимает любой сертификат MikoPBX (самоподписанный, выпущенный на другое имя, при обращении по IP), трафик при этом все равно шифруется. Это поведение совпадает с Local STT Worker для macOS.
Чтобы отклонять недоверенные сертификаты, включите проверку в setup или задайте PBX_TLS_VERIFY=true. Используется системное хранилище CA; для собственного центра сертификации передайте файл через PBX_CA_FILE и подключите его в контейнер томом.
Диагностика проблем
status: waiting: MikoPBX has a macOS model selected (choose a Linux model)
На станции выбрана модель платформы macOS. Переключите Каталог моделей на Linux (Docker) и выберите модель.
status: waiting: update ModuleLocalSpeechToText
Версия модуля не поддерживает платформу Linux. Обновите Локальную транскрибацию.
status: waiting: this image cannot run the selected model
Выбранная модель не поддерживается этой версией образа. Обновите образ или выберите другую модель.
MikoPBX rejected the worker key
Ключ удален, введен с ошибкой или уже привязан к другому обработчику. Создайте новый ключ на вкладке Обработчики и запустите setup еще раз.
Ошибка TLS при подключении
Включена проверка сертификата, а сертификат MikoPBX недоверенный. Выключите проверку или передайте свой CA.
docker pull завершается ошибкой connection reset или по тайм-ауту
Нет доступа к Docker Hub. Откройте исходящий HTTPS до registry-1.docker.io и production.cloudfront.docker.com или настройте зеркало реестра.
Модель не скачивается
Нет доступа к huggingface.co. Откройте исходящий HTTPS для сервера или прокси.
Распознавание медленное (RTF больше 0,3 для GigaAM)
Мало ядер или процессор без AVX2. Добавьте ядра виртуальной машине и проверьте режим EVC.
Контейнер unhealthy
Цикл обработчика не отчитывался 10 минут. Посмотрите docker compose logs --tail 200.
Данные и безопасность
Модели
том local-stt-worker_models (/models)
Настройки и ключ
том local-stt-worker_data, файл /data/config.json с правами 600
UID обработчика
том local-stt-worker_data, файл /data/worker_uid
Временное аудио
/tmp внутри контейнера, в памяти, удаляется после задания
Журналы
журнал Docker, до 5 файлов по 20 МБ
Обработчик подключается к MikoPBX только исходящими HTTPS-запросами, получает записи только назначенных ему заданий и не хранит их после обработки. Ключ обработчика дает доступ только к API модуля транскрибации.
Last updated
Was this helpful?

