Docker
The image includes everything: CUDA 12.8 and cuDNN 9, the server (Python 3.12), the OmniVoice voice engine in its own environment (Python 3.11 + torch), ffmpeg and Node.
Requirements
Section titled “Requirements”- An NVIDIA GPU with an up-to-date driver.
- Linux: Docker with the NVIDIA Container Toolkit.
- Windows: Docker Desktop with WSL 2 (the GPU is passed to the container without installing anything else).
With Docker Compose
Section titled “With Docker Compose”-
Clone the repository:
Terminal window git clone https://github.com/alenj0x1/translay.gitcd translay -
Set the owner password:
Terminal window cp .env.example .envand change
TRANSLAY_OWNER_PASSWORDin.env. -
Build and start:
Terminal window docker compose up -d --build -
Open
http://localhost:8765and sign in with that password.
The first time, it downloads the models (~6 GB) into the modelos volume; the container shows as healthy once the server responds. To follow progress:
docker compose logs -fWhy the password is needed
Section titled “Why the password is needed”Outside Docker, anyone connecting from the same machine (127.0.0.1) is the owner without signing in. Inside the container, connections arrive from the Docker network, so nobody counts as local: without a password nobody could administer the app. TRANSLAY_OWNER_PASSWORD (or --owner-password) sets it at startup. More in Access.
Volumes
Section titled “Volumes”| Path in the container | What it stores |
|---|---|
/app/data |
Your library, transcripts, voices, queue, preferences and keys (in the compose file, ./data). |
/models |
Hugging Face models (HF_HOME). Keeping it avoids downloading them again. |
You can mount the same data/ folder used by the local installation: the format is the same.
Without Compose
Section titled “Without Compose”docker build -t translay .docker run -d --gpus all -p 8765:8765 \ -e TRANSLAY_OWNER_PASSWORD=tu-contraseña \ -v "$PWD/data:/app/data" -v translay-modelos:/models \ --name translay translayThe startup options go after the image name; they replace the defaults (--host 0.0.0.0 --no-browser), so include them:
docker run … translay --host 0.0.0.0 --no-browser --translator nllb-1.3b