Skip to content

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.

  • 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).
  1. Clone the repository:

    Terminal window
    git clone https://github.com/alenj0x1/translay.git
    cd translay
  2. Set the owner password:

    Terminal window
    cp .env.example .env

    and change TRANSLAY_OWNER_PASSWORD in .env.

  3. Build and start:

    Terminal window
    docker compose up -d --build
  4. Open http://localhost:8765 and 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:

Terminal window
docker compose logs -f

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.

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.

Terminal window
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 translay

The startup options go after the image name; they replace the defaults (--host 0.0.0.0 --no-browser), so include them:

Terminal window
docker run … translay --host 0.0.0.0 --no-browser --translator nllb-1.3b