On-premise deployment guide
TranscribIA installs within your own infrastructure in standalone Docker mode: no cloud dependencies, no outbound data. This guide is for customer IT teams and IT directors responsible for installation and operations. It describes the target architecture, requirements, installation steps, configuration and routine maintenance.
Technical document · Published by AMBASSADIA SARL · Version v1.0 · Last updated:
Requirements sized to your volume. The values below (CPU, RAM, GPU VRAM, storage) are indicative for a representative deployment. Exact requirements depend on processed audio volume, concurrent users, selected AI models and retention period. Complete the on-premise questionnaire to receive sizing tailored to your context.
1. Target architecture
TranscribIA on-premise uses a standalone Docker Compose stack, orchestrating application services and databases on the same host (or distributed according to your infrastructure). Compute-intensive transcription runs on a dedicated external GPU server .
nginx — reverse proxy + TLS termination app — Laravel 12 backend (PHP-FPM) queue — default tasks + exports worker queue-ai — AI generation worker queue-media — media processing worker scheduler — scheduler (Laravel cron) reverb — real-time WebSocket server frontend — static React build (served by nginx) postgres:16 — relational database redis:7 — cache, queues, sessions The GPU transcription server (engines WhisperX and pyannote, CUDA execution) is a separate component connected to the rest of the stack. It can share the GPU host or run on a dedicated server depending on your network topology.
2. Hardware requirements
Application server
- CPU — 8 vCPU minimum, 16+ recommended (x86_64 architecture).
- RAM — 16 GB minimum, 32 GB recommended.
- Storage — 100 GB SSD minimum (system + images + data). Actual capacity depends on processed audio volume and retention period; local, NFS or S3-compatible storage supported.
- Network — customer intranet access; HTTP port
3480exposed by nginx (or reconfigured).
Transcription server — GPU
Transcription and diarisation run on graphics accelerators. Two hardware families are supported:
Recommended — NVIDIA CUDA
- GPU : NVIDIA RTX 4090 (24 GB VRAM) recommended minimum — or data-centre equivalent (RTX 6000 Ada, L40S, A5000).
- VRAM : 24 GB minimum for WhisperX + pyannote models in production.
- Software : NVIDIA driver + CUDA 12.x + NVIDIA Container Toolkit installed.
- Check :
nvidia-smiworking, GPU visible from Docker.
Alternative — Apple Silicon
- Chips : Apple Silicon (M2/M3/M4, ideally Ultra) for moderate volumes.
- Unified memory : 32 GB minimum, 64 GB+ recommended depending on models.
- Runtime : native Metal/MPS acceleration (no CUDA required).
- Use : small/medium-capacity deployments or secondary sites.
3. Software requirements
- Docker Engine 24+ and Docker Compose v2 (plugin
docker compose). - OS : Linux recommended in production (Ubuntu 22.04/24.04 LTS, Debian 12, RHEL 9). Windows and macOS supported for evaluation.
- Git for repository retrieval and updates.
- GNU Make (targets
make install,make up… are supplied). - NVIDIA Container Toolkit on the GPU host (for CUDA transcription).
4. Installation steps
The repository provides a Makefile
and a .env.example. The standard procedure takes just a few commands:
# 1. Retrieve the repository
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
# Application available at http://localhost:3480
Useful targets: make up,
make down,
make restart,
make logs,
make migrate,
make seed.
5. Configuration (.env)
The following variables control the database, cache and AI engines. In 100% on-premisemode, enable the local LLM and leave the cloud key empty:
# ── 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 switches generation (summaries, formal documents, etc.) to your local endpoint declared through LLM_BASE_URL. As long as OPENROUTER_API_KEY remains empty, no AI request leaves your infrastructure.
6. Air-gapped mode (offline)
For environments without Internet access, TranscribIA runs fully disconnected with three precautions:
- Pre-downloaded models : WhisperX and pyannote models (and any local LLMs) are downloaded from Hugging Face on a connected workstation, then transferred to the target server.
- Locally available Docker images : images are loaded from an archive (
docker load) rather than pulled from a public registry. - Manual updates : upgrades are applied by transferring packages, without
git pullordocker pullonline.
# Force offline mode (models already cached locally)
export HF_HUB_OFFLINE=1 # Hugging Face : pas d'accès réseau export TRANSFORMERS_OFFLINE=1
7. First launch & verification
Each service in the docker-compose.yml
exposes a healthcheck. Post-startup verification:
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
A service that does not reach the healthy
state generally indicates a missing environment variable (DB / Redis) or an undetected GPU on the transcription server.
8. Updates & maintenance
# Récupérer la nouvelle version git pull # Reconstruire + migrer make install # Redémarrer proprement docker compose up -d
- Backups : schedule regular PostgreSQL dumps and back up the
storage/volume (audio files, exports) — preferably off-site. - Log rotation : managed by Docker (
json-file, 10 MB × 3 files per service). - Patches : security updates are delivered by AMBASSADIA SARL and applied using the same procedure.
9. Monitoring
- Container status :
docker compose psand built-in healthchecks. - Application logs :
docker compose logs -f app(Laravel); structured logs instorage/logs. - Queues : monitor workers queue, queue-ai, queue-media through Redis.
- GPU :
nvidia-smi -l 5for transcription server load and VRAM. - Metrics : export to your existing monitoring system (Prometheus/Grafana, etc.) available on request.
10. Responsibilities — customer vs Transcribia
Indicative allocation of operational responsibilities for an on-premise deployment:
Customer side (IT directors / IT teams)
- Hardware infrastructure: server, GPU, storage, network
- Operating system and Docker installation
- Network, firewall, TLS termination and certificates
- Backups, disaster recovery and business continuity
- OS and system component updates
- Access management, SSO and administrator accounts
- First-line monitoring and escalation
Transcribia side (AMBASSADIA SARL)
- Application deliverable: Docker images and source code
- Deployment and operations documentation
- Installation and initial commissioning support
- Assisted upgrades and migrations
- Security patches and product improvements
- AI engine configuration (WhisperX, pyannote, LLM)
- Technical assistance and incident diagnosis
The exact allocation of roles and associated SLAs are formalised in the support contract and on-premise DPA. This guide does not replace those contractual documents.
Size your deployment
Exact requirements depend on your volume and constraints. Complete the on-premise questionnaire for tailored sizing and a quotation.
Complete the on-premise questionnaire