Skip to content
🖥️ On-premise deployment

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 3480 exposed 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-smi working, 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 pull or docker pull online.

# 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 ps and built-in healthchecks.
  • Application logs : docker compose logs -f app (Laravel); structured logs in storage/logs.
  • Queues : monitor workers queue, queue-ai, queue-media through Redis.
  • GPU : nvidia-smi -l 5 for 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