Guia de instalação local
O TranscribIA instala-se na sua própria infraestrutura, em modo Docker autónomo: sem dependência da cloud nem saída de dados. Este guia destina-se às equipas e direções de TI do cliente responsáveis pela instalação e operação. Descreve a arquitetura de destino, os requisitos, as etapas de instalação, a configuração e as operações de manutenção corrente.
Documento técnico · Publicado por AMBASSADIA SARL · Versão v1.0 · Última atualização:
Requisitos dimensionados para o volume. Os valores abaixo (CPU, RAM, VRAM da GPU, armazenamento) são referências para uma implementação representativa. Os requisitos exatos dependem do volume de áudio tratado, do número de utilizadores em simultâneo, dos modelos de IA escolhidos e do prazo de conservação. Responda ao questionário de instalação local para receber um dimensionamento ajustado ao seu contexto.
1. Arquitetura de destino
O TranscribIA em instalação local assenta numa infraestrutura Docker Compose autónoma, que orquestra os serviços da aplicação e as bases de dados num único servidor (ou distribuídos segundo a sua infraestrutura). A transcrição, intensiva em computação, é confiada a um servidor GPU externo dedicado.
nginx — proxy inverso + terminação TLS app — backend Laravel 12 (PHP-FPM) queue — worker de tarefas predefinidas + exportações queue-ai — worker de geração por IA queue-media — worker de processamento multimédia scheduler — agendador (cron Laravel) reverb — servidor WebSockets em tempo real frontend — compilação estática React (servida por nginx) postgres:16 — base de dados relacional redis:7 — cache, filas de espera, sessões O servidor GPU de transcrição (motores WhisperX e pyannote, execução CUDA) é um componente separado, interligado com o resto da infraestrutura. Pode estar no mesmo servidor GPU ou isolado num servidor dedicado, consoante a topologia de rede.
2. Requisitos de hardware
Servidor da aplicação
- CPU — mínimo de 8 vCPU, 16+ recomendados (arquitetura x86_64).
- RAM — mínimo de 16 GB, 32 GB recomendados.
- Armazenamento — mínimo de 100 GB SSD (sistema + imagens + dados). O volume real depende do áudio tratado e do prazo de conservação; suporta armazenamento local, NFS ou compatível com S3.
- Rede — acesso pela intranet do cliente; porta HTTP
3480exposta pelo nginx (ou reconfigurada).
Servidor de transcrição — GPU
A transcrição e a diarização são executadas num acelerador gráfico. São suportadas duas famílias de hardware:
Recomendado — NVIDIA CUDA
- GPU : NVIDIA RTX 4090 (24 GB VRAM) como mínimo recomendado — ou equivalente de centro de dados (RTX 6000 Ada, L40S, A5000).
- VRAM : mínimo de 24 GB para os modelos WhisperX + pyannote em produção.
- Software : controlador NVIDIA + CUDA 12.x + NVIDIA Container Toolkit instalados.
- Verificação :
nvidia-smifuncional, GPU visível a partir do Docker.
Alternativa — Apple Silicon
- Chips : Apple Silicon (M2/M3/M4, idealmente Ultra) para volumes moderados.
- Memória unificada : mínimo de 32 GB, 64 GB+ recomendados consoante os modelos.
- Ambiente de execução : aceleração Metal/MPS nativa (sem necessidade de CUDA).
- Utilização : implementações de pequena/média capacidade ou locais secundários.
3. Requisitos de software
- Docker Engine 24+ e Docker Compose v2 (plugin
docker compose). - Sistema operativo : Linux recomendado em produção (Ubuntu 22.04/24.04 LTS, Debian 12, RHEL 9). Windows e macOS suportados para avaliação.
- Git para obter o repositório e as atualizações.
- GNU Make (os alvos
make install,make up… são fornecidos). - NVIDIA Container Toolkit no servidor GPU (se a transcrição usar CUDA).
4. Etapas de instalação
O repositório fornece um Makefile
e um .env.example. O procedimento habitual resume-se a alguns comandos:
# 1. Obter o repositório
git clone <repo-transcribia> transcribia cd transcribia # 2. Préparer le fichier d'environnement cp .env.example .env # → renseigner DB_PASSWORD, REDIS_PASSWORD, clés IA… # 3. Installation complète # (build images + dépendances Composer/NPM + migrations + seed) make install # ── ou, étape par étape ────────────────────── docker compose build docker compose up -d docker compose exec app php artisan key:generate docker compose exec app php artisan migrate docker compose exec app php artisan db:seed
# Aplicação disponível em http://localhost:3480
Alvos úteis: make up,
make down,
make restart,
make logs,
make migrate,
make seed.
5. Configuração (.env)
As variáveis seguintes controlam a base de dados, a cache e os motores de IA. Em modo 100% instalação local, ativa-se o LLM local e deixa-se a chave cloud vazia:
# ── Base de données PostgreSQL ────────────── DB_DATABASE=transcribia DB_USERNAME=transcribia DB_PASSWORD=<mot-de-passe-fort> # ── Redis (cache + queues + sessions) ──────── REDIS_PASSWORD=<mot-de-passe-fort> # ── Moteurs IA ─────────────────────────────── ALLOW_LOCAL_LLM=true LLM_BASE_URL=http://llm-local:8000/v1 # serveur LLM local OPENROUTER_API_KEY= # vide en full on-premise
ALLOW_LOCAL_LLM direciona a geração (resumos, documentos, etc.) para o seu endpoint local definido por LLM_BASE_URL. Enquanto OPENROUTER_API_KEY permanecer vazia, nenhuma chamada de IA sai da sua infraestrutura.
6. Modo air-gap (sem ligação)
Para ambientes sem acesso à Internet, o TranscribIA funciona totalmente desligado mediante três precauções:
- Modelos descarregados previamente : os modelos WhisperX e pyannote (e eventuais LLM locais) são obtidos no Hugging Face num computador com ligação e depois transferidos para o servidor de destino.
- Imagens Docker locais : as imagens são carregadas a partir de um arquivo (
docker load) em vez de serem obtidas num registo público. - Atualizações manuais : as novas versões são aplicadas através da transferência de pacotes, sem
git pullnemdocker pullem linha.
# Forçar o modo sem ligação (modelos já em cache local)
export HF_HUB_OFFLINE=1 # Hugging Face : pas d'accès réseau export TRANSFORMERS_OFFLINE=1
7. Primeiro arranque e verificação
Cada serviço do docker-compose.yml
disponibiliza uma verificação de estado (healthcheck). Verificação após o arranque:
docker compose ps # tous les services "healthy" docker compose exec app php artisan migrate:status curl -fsS http://localhost:3480/ # page d'accueil (HTTP 200) docker compose logs -f app # journaux applicatifs
Um serviço que não atinja o estado healthy
indica geralmente uma variável de ambiente em falta (DB / Redis) ou uma GPU não detetada no servidor de transcrição.
8. Atualizações e manutenção
# Récupérer la nouvelle version git pull # Reconstruire + migrer make install # Redémarrer proprement docker compose up -d
- Cópias de segurança : agendar exportações regulares do PostgreSQL e cópias de segurança do volume
storage/(ficheiros de áudio, exportações) — de preferência num local externo. - Rotação de registos : gerida pelo Docker (
json-file, 10 MB × 3 ficheiros por serviço). - Correções : as atualizações de segurança são fornecidas pela AMBASSADIA SARL e podem ser aplicadas pelo mesmo procedimento.
9. Monitorização
- Estado dos contentores :
docker compose pse verificações de estado integradas. - Registos da aplicação :
docker compose logs -f app(Laravel); registos estruturados emstorage/logs. - Filas de espera : acompanhamento dos workers queue, queue-ai, queue-media através de Redis.
- GPU :
nvidia-smi -l 5para a carga e a VRAM do servidor de transcrição. - Métricas : exportação possível para a sua monitorização existente (Prometheus/Grafana, etc.), mediante pedido.
10. Responsabilidades — cliente e Transcribia
Repartição indicativa das responsabilidades operacionais numa instalação local:
Do lado do cliente (direção / equipas de TI)
- Infraestrutura de hardware: servidor, GPU, armazenamento, rede
- Sistema operativo e instalação do Docker
- Rede, firewall, terminação TLS e certificados
- Cópias de segurança, recuperação de desastre e continuidade de atividade
- Atualizações do sistema operativo e componentes do sistema
- Gestão de acessos, SSO e contas de administrador
- Monitorização de primeira linha e escalamento
Do lado do Transcribia (AMBASSADIA SARL)
- Entrega da aplicação: imagens Docker e código-fonte
- Documentação de implementação e operação
- Apoio à instalação e primeira entrada em serviço
- Novas versões e migrações assistidas
- Correções de segurança e evolução do produto
- Configuração dos motores de IA (WhisperX, pyannote, LLM)
- Assistência técnica e diagnóstico de incidentes
A repartição exata de funções e os SLA associados são formalizados no contrato de suporte e no DPA de instalação local. Este guia não substitui esses documentos contratuais.
Dimensionar a sua implementação
Os requisitos exatos dependem do seu volume e das suas restrições. Responda ao questionário de instalação local para obter um dimensionamento e um orçamento ajustados.
Responder ao questionário de instalação local