Saltar para o conteúdo
🖥️ Instalação local

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 3480 exposta 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-smi funcional, 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 pull nem docker pull em 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 ps e verificações de estado integradas.
  • Registos da aplicação : docker compose logs -f app (Laravel); registos estruturados em storage/logs.
  • Filas de espera : acompanhamento dos workers queue, queue-ai, queue-media através de Redis.
  • GPU : nvidia-smi -l 5 para 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