Lingarr is an application that leverages translation technologies to automatically translate subtitle files to your desired target language. With support for multiple translation services including LibreTranslate, DeepL, and various AI providers, Lingarr offers a flexible solution for all your subtitle translation needs.
lingarr.mp4
Lingarr now offers multiple services for automated translation:
- LibreTranslate
- Local AI (with Ollama, or any other OpenAPI compatible model/router)
- DeepL (without pt-BR)
- Anthropic
- OpenAI
- DeepSeek
- Gemini
- Bing
- Yandex
- Azure
Choose the service that best fits your needs.
Lingarr provides multi-architecture Docker images that automatically select the correct platform:
| Tag | Description | Architectures |
|---|---|---|
latest |
Latest stable release | amd64 arm64 |
1.2.3 |
Specific version | amd64 arm64 |
main |
amd64 arm64 |
Note: As of 1.0.3 all images support both AMD64 (Intel/AMD) and ARM64 (Raspberry Pi, Apple Silicon) architectures. Docker will automatically pull the correct architecture for your system.
services:
lingarr:
image: lingarr/lingarr:latest
container_name: lingarr
restart: unless-stopped
environment:
- ASPNETCORE_URLS=http://+:9876
ports:
- "9876:9876"
volumes:
- /path/to/media/movies:/movies
- /path/to/media/tv:/tv
- /path/to/config:/app/config
networks:
- lingarr
networks:
lingarr:
external: trueFollow the following steps to set up Lingarr and LibreTranslate via docker CLI
docker run -d \
--name lingarr \
--restart unless-stopped \
-p 9876:9876 \
-e ASPNETCORE_URLS=http://+:9876 \
-v /path/to/media/movies:/movies \
-v /path/to/media/tv:/tv \
-v /path/to/config:/app/config \
--network lingarr \
lingarr/lingarr:latestThese variables can be used
| Environment Variable | Description |
|---|---|
ASPNETCORE_URLS=http://+:9876 |
The internal port that Lingarr will listen on inside the container. |
MAX_CONCURRENT_JOBS=1 |
Sets the amount of jobs that can run concurrently, defaults to 1. |
DB_CONNECTION=mysql |
Specifies the database connection type. Options are mysql or sqlite. |
DB_HOST=Lingarr.Mysql |
The hostname for the MySQL database (required when using mysql). |
DB_PORT=3306 |
The port for the MySQL database (required when using mysql). |
DB_DATABASE=LingarrMysql |
The name of the database (required when using mysql). |
DB_USERNAME=LingarrMysql |
The username for the database (required when using mysql). |
DB_PASSWORD=LingarrMysql |
The password for the database (required when using mysql). |
DB_HANGFIRE_SQLITE_PATH=/app/config/Hangfire.db |
The path of the sqlite database file for Hangfire, when sqlite connection is used |
Additional settings can be found here that can be set as environment variables to persist settings for each reinstall
This step is optional if you are using a translation service other than LibreTranslate.
LibreTranslate:
container_name: LibreTranslate
image: libretranslate/libretranslate:latest
restart: unless-stopped
environment:
- LT_LOAD_ONLY=en,nl # Important, replace with your preferred languages
ports:
- 5000:5000
volumes:
- /path/to/config:/home/libretranslate/.local/share/argos-translate
networks:
- lingarr
healthcheck:
test: ["CMD-SHELL", "./venv/bin/python scripts/healthcheck.py"]Create necessary directories and set permissions:
mkdir -p /apps/libretranslate/{local,db}
chmod -R 777 /apps/libretranslateRun LibreTranslate Docker container:
docker run -d \
--name LibreTranslate \
-p 5000:5000 \
-v /path/to/libretranslate/db:/app/db \[Settings.MD](Settings.MD)
-v /path/to/libretranslate/local:/home/libretranslate/.local \
libretranslate/libretranslate \
--disable-web-ui \
--load-only=en,nl # Important, replace with your preferred languages| Parameter | Function |
|---|---|
LT_LOAD_ONLY |
Allows you to add source languages by their iso code |
LT_DISABLE_WEB_UI |
Enables or disables a Google translate like web ui |
When running Docker containers, you can optionally specify which user should run the container process using the user flag. This is useful for:
- Security: Running containers as non-root users
- Permissions: Ensuring files created by the container have the correct ownership on your host system
Docker Compose syntax:
user: "1000:1000" # UID:GIDDocker CLI syntax:
--user 1000:1000 # UID:GIDLingarr provides a RESTful API that allows you to integrate subtitle translation capabilities into your applications. You can find the complete API documentation, including a Swagger definition of all available endpoints at the Lingarr API Documentation
We welcome contributions to Lingarr! Whether it's bug reports, feature requests, or code contributions, please feel free to help out.
Please read our Contributing Guidelines for development setup, coding standards, and requirements for submit pull requests.
Icons: Lucide
Subtitle Parsing: AlexPoint
Translation Services: libretranslate
GTranslate: GTranslate
For supporting open source:
selfh.st by Ethan
r/selfhosted
FrankieBBBB