Offline / Airgapped Installation
OpenTranscribe supports complete offline deployment for airgapped environments, secure facilities, or locations with limited internet access.
Overview
In offline mode, OpenTranscribe operates without any internet connectivity:
- ✅ Transcription works fully offline
- ✅ Speaker diarization works offline
- ✅ All AI models cached locally
- ✅ No external API calls
- ❌ YouTube downloads disabled (requires internet)
- ❌ Cloud LLM providers disabled (use local LLM instead)
Prerequisites
You'll need an internet-connected machine to:
- Download Docker images
- Download AI models (~2.5GB)
- Prepare installation package
Then transfer everything to your offline machine.
Step 1: Prepare on Internet-Connected Machine
Download Docker Images
# Pull all required images
docker pull davidamacey/opentranscribe-backend:latest
docker pull davidamacey/opentranscribe-frontend:latest
docker pull postgres:15-alpine
docker pull redis:7-alpine
docker pull minio/minio:latest
docker pull opensearchproject/opensearch:3.3.1
# Save images to tarball
docker save -o opentranscribe-images.tar \
davidamacey/opentranscribe-backend:latest \
davidamacey/opentranscribe-frontend:latest \
postgres:15-alpine \
redis:7-alpine \
minio/minio:latest \
opensearchproject/opensearch:3.3.1
Download AI Models
# Set HuggingFace token
export HUGGINGFACE_TOKEN=hf_your_token_here
# Download models using Python
python3 << 'EOF'
from transformers import WhisperForConditionalGeneration, WhisperProcessor
from pyannote.audio import Model
import torch
# WhisperX models
WhisperForConditionalGeneration.from_pretrained("Systran/faster-whisper-large-v2")
WhisperProcessor.from_pretrained("Systran/faster-whisper-large-v2")
# PyAnnote models
Model.from_pretrained("pyannote/segmentation-3.0")
Model.from_pretrained("pyannote/speaker-diarization-3.1")
EOF
# Package model cache
tar -czf ai-models.tar.gz ~/.cache/huggingface ~/.cache/torch
Download Installation Files
# Clone repository
git clone https://github.com/davidamacey/OpenTranscribe.git
cd OpenTranscribe
# Create offline package
tar -czf opentranscribe-offline.tar.gz \
docker-compose.yml \
docker-compose.offline.yml \
.env.example \
database/ \
scripts/ \
opentranscribe.sh
# Copy offline setup script
cp setup-opentranscribe.sh opentranscribe-offline-setup.sh
Step 2: Transfer to Offline Machine
Transfer these files to offline machine:
opentranscribe-images.tar(~8GB)ai-models.tar.gz(~2.5GB)opentranscribe-offline.tar.gz(~5MB)
Via USB drive, secure file transfer, or your organization's approved method.
Step 3: Install on Offline Machine
Load Docker Images
# Load images
docker load -i opentranscribe-images.tar
Extract Installation Files
# Extract installation
tar -xzf opentranscribe-offline.tar.gz
cd opentranscribe
# Extract AI models
mkdir -p models
tar -xzf ../ai-models.tar.gz -C models/
Configure Environment
# Copy environment template
cp .env.example .env
# Edit .env and configure:
# - Set HUGGINGFACE_TOKEN (still required for model loading)
# - Set MODEL_CACHE_DIR=./models
# - Configure passwords and secrets
nano .env
Start Services
# Make script executable
chmod +x opentranscribe.sh
# Start in offline mode
docker compose -f docker-compose.yml -f docker-compose.offline.yml up -d
# Or using the script
./opentranscribe.sh start offline
Offline Configuration
The docker-compose.offline.yml file disables internet-dependent features:
- YouTube download worker disabled
- External network access restricted
- Model downloads disabled (uses local cache)
Local LLM for Offline AI Features
To use AI summarization in offline mode, deploy a local LLM:
Option 1: vLLM
# On separate GPU (recommended)
docker run --gpus '"device=0"' -p 8000:8000 \
vllm/vllm-openai:latest \
--model meta-llama/Llama-2-70b-chat-hf
Option 2: Ollama
# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
# Pull model (on internet machine, then copy)
ollama pull llama2:70b
Configure in .env:
LLM_PROVIDER=vllm # or ollama
VLLM_API_URL=http://your-server:8000/v1
Updating Offline Installation
To update an offline installation:
- On internet machine: Pull new Docker images
- Save to tarball
- Transfer to offline machine
- Load new images
- Restart services
Verification
# Check all services running
docker compose ps
# Verify no internet access attempts
docker compose logs | grep -i "connect\|download"
# Test transcription
# Upload a test file through web UI
Limitations
- ❌ Cannot download YouTube videos
- ❌ Cannot use cloud LLM providers (OpenAI, Claude, etc.)
- ❌ Cannot auto-update models
- ✅ All transcription features work
- ✅ Speaker diarization works
- ✅ Local LLM works (if configured)