← Документация · Скачать PDF
Общество с ограниченной ответственностью «Транскриптик»

Инструкция по установке программного обеспечения

«Транскриптик»
Москва, 2026

1. Общие сведения

Документ описывает установку серверной части программного обеспечения «Транскриптик» на отдельный сервер, первый запуск, проверку работоспособности, обновление и удаление.

Программа состоит из серверной части и веб-интерфейса. Серверная часть устанавливается на сервер по этой инструкции. Графический процессор не нужен: все вычисления, включая распознавание речи, выполняются на центральном процессоре, драйверы NVIDIA, CUDA Toolkit и графический процессор для работы не нужны. Устанавливать программы на устройство пользователя не нужно: пользователь работает с программой через веб-браузер по адресу сервера.

По этой инструкции развёрнут экземпляр, который предоставлен для экспертной проверки. Сведения о доступе к нему приведены в документе «Сведения об экземпляре программного обеспечения и доступе к нему».

2. Комплект поставки

Комплект поставки — архив исходных текстов и файлов развёртывания transcriptic-<версия>.tar.gz. Его предоставляет правообладатель. Основные каталоги архива:

КаталогСодержимое
EavesdropAI/Веб-приложение (C#, .NET 8)
Services/Серверные сервисы (Python, Node.js): распознавание, файловые сервисы, API, платежи, почта, плановые задачи
db/schema/Схема базы данных и справочные данные
deploy/single-node/Файлы развёртывания: docker-compose.yml, шаблон настроек .env.example, конфигурация HTTPS-шлюза, служебные скрипты
docs/Документация

Все компоненты собираются в образы Docker при установке. Нейросетевые модели (около 1,2 ГБ) скачиваются автоматически при первом запуске.

3. Требования к серверу

3.1. Аппаратные требования

ПараметрМинимумРекомендуется
Процессорx86-64, 8 vCPU16 vCPU с поддержкой AVX-512 VNNI (Intel Xeon Ice Lake и новее, AMD EPYC Milan/Genoa), 100% доля ядра
Оперативная память16 ГБ32 ГБ
ДискSSD 100 ГБNVMe 150 ГБ и более (под файлы пользователей)
Графический процессорНе требуетсяНе требуется
СетьПубличный IPv4-адрес, входящие порты 22, 80, 443, 8096—

3.2. Программные требования

КомпонентТребование
Операционная системаUbuntu Server 22.04 LTS или 24.04 LTS, 64 бит
ПраваУчётная запись с правами root (sudo)
Доменное имяИмя (например, demo.transcriptic.ru), A-запись которого указывает на IP-адрес сервера. Без имени можно работать с самоподписанным сертификатом
Почтовый ящикОтдельный ящик с доступом по SMTP для отправки кодов подтверждения. Вместо ящика можно включить встроенный перехватчик писем Mailpit
Доступ в Интернет с сервераК репозиториям Ubuntu, Docker Hub, PyPI, PyTorch, Hugging Face (или их зеркалам) на время установки

Docker ставится скриптом установки (раздел 4.2).

4. Установка

Все команды выполняются в терминале сервера.

4.1. Распаковка комплекта поставки

sudo mkdir -p /opt/transcriptic
sudo tar -xzf transcriptic-<версия>.tar.gz -C /opt/transcriptic
cd /opt/transcriptic

4.2. Подготовка сервера

sudo bash deploy/single-node/scripts/setup-host.sh

Скрипт:

  1. устанавливает базовые пакеты;
  2. выводит сведения о процессоре и памяти и предупреждает, если их меньше рекомендуемого;
  3. устанавливает Docker Engine и Docker Compose (из репозитория Docker, а при его недоступности — из репозитория Ubuntu) и даёт пользователю, запустившему скрипт, право запускать Docker; после этого нужно перелогиниться;
  4. настраивает межсетевой экран ufw: открыты только порты 22, 80, 443 и 8096.

Если Docker Hub с сервера недоступен или работает медленно, укажите зеркало:

sudo DOCKER_REGISTRY_MIRROR=https://mirror.gcr.io bash deploy/single-node/scripts/setup-host.sh

4.3. Настройка

cd deploy/single-node
bash scripts/init-env.sh

Скрипт создаёт файл настроек .env (доступ только владельцу) и генерирует пароли базы данных, внутренний ключ сервисов, ключ API и пароль администратора. Пароль администратора выводится на экран. Число потоков распознавания (ASR_CPU_THREADS, WHISPER_LIVE_THREADS, WHISPER_LIVE_MAX_CLIENTS) скрипт подбирает по числу ядер и объёму памяти сервера.

Затем откройте .env в текстовом редакторе (например, nano .env) и задайте параметры:

ПараметрОбязательныйЗначение
DOMAINДаДоменное имя сервера
TLS_MODEНетletsencrypt — сертификат Let's Encrypt (по умолчанию); selfsigned — самоподписанный сертификат, если доменного имени нет
ACME_EMAILДаАдрес для уведомлений Let's Encrypt
ADMIN_EMAILДаАдрес электронной почты администратора программы
ADMIN_MINUTESНетМинуты на балансе администратора (по умолчанию 6000)
SMTP_HOST, SMTP_PORT, SMTP_SECUREДаПочтовый сервер (для Яндекс Почты: smtp.yandex.ru, 465, true)
SMTP_USER, SMTP_PASSДаЛогин и пароль приложения почтового ящика
ASR_MODEL, ASR_COMPUTE_TYPEНетМодель распознавания и формат вычислений: small и int8 (по умолчанию)
ASR_CPU_THREADSНетПотоков на распознавание одного файла (по умолчанию 8): около половины vCPU, но не больше числа физических ядер
WHISPER_LIVE_MAX_CLIENTS, WHISPER_LIVE_THREADSНетЧисло одновременных сеансов распознавания в реальном времени (по умолчанию 2) и потоков на сеанс (по умолчанию 4)
HF_ENDPOINTНетЗеркало хранилища моделей, если huggingface.co недоступен
DEEPL_AUTH_KEY, OPENAI_API_KEY, TRANSLATE_PROXY_URLНетПодключение сервиса машинного перевода. Без них функция перевода выключена, остальные функции работают
TBANK_TERMINAL_KEY, TBANK_PASSWORDНетТерминал интернет-эквайринга АО «ТБанк» для приёма оплаты
TELEGRAM_BOT_TOKENНетТокен Telegram-бота (дополнительный компонент)

Пароли и ключи, сгенерированные скриптом, менять не требуется.

4.4. Первый запуск

docker compose up -d --build

Первая сборка образов занимает 20–40 минут, все образы вместе занимают около 16 ГБ. При первом запуске:

Если перехватчик писем Mailpit нужен вместо почтового ящика, задайте в .env SMTP_HOST=mailpit, SMTP_PORT=1025, SMTP_SECURE=false, SMTP_USER=any, SMTP_PASS=any, MAILPIT_UI_AUTH=<логин>:<пароль> и запустите:

docker compose --profile mailpit up -d

Письма будут видны по адресу https://<DOMAIN>/mailpit/.

5. Проверка установки

5.1. Состояние контейнеров

docker compose ps

Все сервисы должны быть в состоянии running (у postgres — healthy). Сервисы files-init и models-init завершаются после первого запуска, это нормально.

Готовность сервиса распознавания:

docker compose logs transcribe | grep -m1 "Running on"

5.2. Функциональная проверка

№ДействиеОжидаемый результат
1Открыть в браузере https://<DOMAIN>Открывается страница сервиса, соединение защищено
2Войти с адресом ADMIN_EMAIL и паролем администратораОткрывается главная страница с балансом минут
3Загрузить короткий аудиофайл с речью, выбрать формат DOCX, нажать «Обработать»Отображаются ход загрузки и распознавания
4Дождаться завершения и скачать результатСкачивается документ с распознанным текстом и временными метками; минуты списаны один раз
5Открыть страницу «История»Запрос отображается в списке
6Открыть https://<DOMAIN>/munsic и загрузить музыкальный файлФормируются четыре дорожки
7Зарегистрировать новую учётную записьПриходит письмо с кодом, регистрация завершается

6. Учётные записи

Создание учётной записи с заданным балансом (пароль генерируется и выводится на экран):

bash scripts/db.sh add-user user@example.ru --minutes 600

Учётная запись администратора:

bash scripts/db.sh add-user admin2@example.ru --admin

7. Обслуживание

7.1. Журналы

docker compose logs -f <сервис>

Журналы каждого контейнера хранятся средствами Docker (до 5 файлов по 50 МБ).

7.2. Резервное копирование и восстановление базы данных

bash scripts/db.sh backup
bash scripts/db.sh restore backups/transcriptic-<время>.sql.gz

7.3. Обновление

Распакуйте новый комплект поставки поверх каталога /opt/transcriptic и выполните:

cd /opt/transcriptic/deploy/single-node
docker compose up -d --build

Пересобираются только изменившиеся компоненты. База данных и файлы пользователей сохраняются.

7.4. Остановка и запуск

docker compose stop
docker compose start

8. Удаление

Остановка и удаление контейнеров с сохранением данных:

docker compose down

Полное удаление вместе с базой данных, файлами пользователей и моделями:

docker compose down --volumes --rmi all
sudo rm -rf /opt/transcriptic

9. Типовые проблемы

ПроблемаРешение
Распознавание идёт медленноПроверить загрузку процессора (docker stats). При числе vCPU больше 16 увеличить ASR_CPU_THREADS до числа физических ядер, при перегрузке — уменьшить; затем docker compose up -d
Нет сертификата HTTPSПроверить A-запись домена и доступность портов 80/443; журнал: docker compose logs certbot. Повторная попытка выполняется каждые 10 минут
Не скачиваются моделиЗадать HF_ENDPOINT с адресом зеркала
Не приходят письмаЖурнал: docker compose logs smtp-relay; адрес отправителя должен совпадать с ящиком
Не работает переводПодключить сервис машинного перевода (раздел 4.3)

10. Техническая поддержка

Электронная почта: transcriptic@yandex.ru. Телефон: +7 (928) 980-00-89.