Weblate
Weblate is a libre web-based continuous localization platform with tight version control integration, quality checks, and support for over 50 file formats including PO, XLIFF, JSON, and Android resources.
Configuration
services:
weblate:
image: weblate/weblate:2026.7.1.1
restart: unless-stopped
depends_on:
database:
condition: service_healthy
cache:
condition: service_healthy
volumes:
- weblate-data:/app/data
- weblate-cache:/app/cache
tmpfs:
- /run
- /tmp
environment:
WEBLATE_SITE_DOMAIN: ${WEBLATE_SITE_DOMAIN}
WEBLATE_SITE_TITLE: ${WEBLATE_SITE_TITLE}
WEBLATE_ADMIN_NAME: ${WEBLATE_ADMIN_NAME}
WEBLATE_ADMIN_EMAIL: ${WEBLATE_ADMIN_EMAIL}
WEBLATE_ADMIN_PASSWORD: ${WEBLATE_ADMIN_PASSWORD}
WEBLATE_SERVER_EMAIL: ${WEBLATE_SERVER_EMAIL}
WEBLATE_DEFAULT_FROM_EMAIL: ${WEBLATE_DEFAULT_FROM_EMAIL}
WEBLATE_ENABLE_HTTPS: ${WEBLATE_ENABLE_HTTPS}
WEBLATE_ALLOWED_HOSTS: "*"
WEBLATE_REGISTRATION_OPEN: ${WEBLATE_REGISTRATION_OPEN}
POSTGRES_HOST: database
POSTGRES_PORT: 5432
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
REDIS_HOST: cache
REDIS_PORT: 6379
database:
image: postgres:18-alpine
restart: unless-stopped
volumes:
- weblate-postgres-data:/var/lib/postgresql
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
cache:
image: redis:8-alpine
restart: unless-stopped
command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"]
volumes:
- weblate-redis-data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
volumes:
weblate-data:
weblate-cache:
weblate-postgres-data:
weblate-redis-data:[variables]
main_domain = "${domain}"
admin_password = "${password:32}"
postgres_password = "${password:32}"
[config]
env = [
"WEBLATE_SITE_DOMAIN=${main_domain}",
"WEBLATE_SITE_TITLE=Weblate",
"WEBLATE_ADMIN_NAME=Weblate Admin",
"WEBLATE_ADMIN_EMAIL=admin@${main_domain}",
"WEBLATE_ADMIN_PASSWORD=${admin_password}",
"WEBLATE_SERVER_EMAIL=weblate@${main_domain}",
"WEBLATE_DEFAULT_FROM_EMAIL=weblate@${main_domain}",
"WEBLATE_ENABLE_HTTPS=0",
"WEBLATE_REGISTRATION_OPEN=1",
"POSTGRES_USER=weblate",
"POSTGRES_PASSWORD=${postgres_password}",
"POSTGRES_DB=weblate",
]
mounts = []
[[config.domains]]
serviceName = "weblate"
port = 8080
host = "${main_domain}"Base64
To import this template in Dokploy: create a Compose service → Advanced → Base64 import and paste the content below:
ewogICJjb21wb3NlIjogInNlcnZpY2VzOlxuICB3ZWJsYXRlOlxuICAgIGltYWdlOiB3ZWJsYXRlL3dlYmxhdGU6MjAyNi43LjEuMVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIGRhdGFiYXNlOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgICAgY2FjaGU6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgdm9sdW1lczpcbiAgICAgIC0gd2VibGF0ZS1kYXRhOi9hcHAvZGF0YVxuICAgICAgLSB3ZWJsYXRlLWNhY2hlOi9hcHAvY2FjaGVcbiAgICB0bXBmczpcbiAgICAgIC0gL3J1blxuICAgICAgLSAvdG1wXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBXRUJMQVRFX1NJVEVfRE9NQUlOOiAke1dFQkxBVEVfU0lURV9ET01BSU59XG4gICAgICBXRUJMQVRFX1NJVEVfVElUTEU6ICR7V0VCTEFURV9TSVRFX1RJVExFfVxuICAgICAgV0VCTEFURV9BRE1JTl9OQU1FOiAke1dFQkxBVEVfQURNSU5fTkFNRX1cbiAgICAgIFdFQkxBVEVfQURNSU5fRU1BSUw6ICR7V0VCTEFURV9BRE1JTl9FTUFJTH1cbiAgICAgIFdFQkxBVEVfQURNSU5fUEFTU1dPUkQ6ICR7V0VCTEFURV9BRE1JTl9QQVNTV09SRH1cbiAgICAgIFdFQkxBVEVfU0VSVkVSX0VNQUlMOiAke1dFQkxBVEVfU0VSVkVSX0VNQUlMfVxuICAgICAgV0VCTEFURV9ERUZBVUxUX0ZST01fRU1BSUw6ICR7V0VCTEFURV9ERUZBVUxUX0ZST01fRU1BSUx9XG4gICAgICBXRUJMQVRFX0VOQUJMRV9IVFRQUzogJHtXRUJMQVRFX0VOQUJMRV9IVFRQU31cbiAgICAgIFdFQkxBVEVfQUxMT1dFRF9IT1NUUzogXCIqXCJcbiAgICAgIFdFQkxBVEVfUkVHSVNUUkFUSU9OX09QRU46ICR7V0VCTEFURV9SRUdJU1RSQVRJT05fT1BFTn1cbiAgICAgIFBPU1RHUkVTX0hPU1Q6IGRhdGFiYXNlXG4gICAgICBQT1NUR1JFU19QT1JUOiA1NDMyXG4gICAgICBQT1NUR1JFU19VU0VSOiAke1BPU1RHUkVTX1VTRVJ9XG4gICAgICBQT1NUR1JFU19QQVNTV09SRDogJHtQT1NUR1JFU19QQVNTV09SRH1cbiAgICAgIFBPU1RHUkVTX0RCOiAke1BPU1RHUkVTX0RCfVxuICAgICAgUkVESVNfSE9TVDogY2FjaGVcbiAgICAgIFJFRElTX1BPUlQ6IDYzNzlcblxuICBkYXRhYmFzZTpcbiAgICBpbWFnZTogcG9zdGdyZXM6MTgtYWxwaW5lXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICB2b2x1bWVzOlxuICAgICAgLSB3ZWJsYXRlLXBvc3RncmVzLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbFxuICAgIGVudmlyb25tZW50OlxuICAgICAgUE9TVEdSRVNfVVNFUjogJHtQT1NUR1JFU19VU0VSfVxuICAgICAgUE9TVEdSRVNfUEFTU1dPUkQ6ICR7UE9TVEdSRVNfUEFTU1dPUkR9XG4gICAgICBQT1NUR1JFU19EQjogJHtQT1NUR1JFU19EQn1cbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRC1TSEVMTFwiLCBcInBnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9XCJdXG4gICAgICBpbnRlcnZhbDogMTBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogNVxuXG4gIGNhY2hlOlxuICAgIGltYWdlOiByZWRpczo4LWFscGluZVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgY29tbWFuZDogW1wicmVkaXMtc2VydmVyXCIsIFwiLS1zYXZlXCIsIFwiNjBcIiwgXCIxXCIsIFwiLS1sb2dsZXZlbFwiLCBcIndhcm5pbmdcIl1cbiAgICB2b2x1bWVzOlxuICAgICAgLSB3ZWJsYXRlLXJlZGlzLWRhdGE6L2RhdGFcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRFwiLCBcInJlZGlzLWNsaVwiLCBcInBpbmdcIl1cbiAgICAgIGludGVydmFsOiAxMHNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiA1XG5cbnZvbHVtZXM6XG4gIHdlYmxhdGUtZGF0YTpcbiAgd2VibGF0ZS1jYWNoZTpcbiAgd2VibGF0ZS1wb3N0Z3Jlcy1kYXRhOlxuICB3ZWJsYXRlLXJlZGlzLWRhdGE6XG4iLAogICJjb25maWciOiAiW3ZhcmlhYmxlc11cbm1haW5fZG9tYWluID0gXCIke2RvbWFpbn1cIlxuYWRtaW5fcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbnBvc3RncmVzX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5cbltjb25maWddXG5lbnYgPSBbXG4gIFwiV0VCTEFURV9TSVRFX0RPTUFJTj0ke21haW5fZG9tYWlufVwiLFxuICBcIldFQkxBVEVfU0lURV9USVRMRT1XZWJsYXRlXCIsXG4gIFwiV0VCTEFURV9BRE1JTl9OQU1FPVdlYmxhdGUgQWRtaW5cIixcbiAgXCJXRUJMQVRFX0FETUlOX0VNQUlMPWFkbWluQCR7bWFpbl9kb21haW59XCIsXG4gIFwiV0VCTEFURV9BRE1JTl9QQVNTV09SRD0ke2FkbWluX3Bhc3N3b3JkfVwiLFxuICBcIldFQkxBVEVfU0VSVkVSX0VNQUlMPXdlYmxhdGVAJHttYWluX2RvbWFpbn1cIixcbiAgXCJXRUJMQVRFX0RFRkFVTFRfRlJPTV9FTUFJTD13ZWJsYXRlQCR7bWFpbl9kb21haW59XCIsXG4gIFwiV0VCTEFURV9FTkFCTEVfSFRUUFM9MFwiLFxuICBcIldFQkxBVEVfUkVHSVNUUkFUSU9OX09QRU49MVwiLFxuICBcIlBPU1RHUkVTX1VTRVI9d2VibGF0ZVwiLFxuICBcIlBPU1RHUkVTX1BBU1NXT1JEPSR7cG9zdGdyZXNfcGFzc3dvcmR9XCIsXG4gIFwiUE9TVEdSRVNfREI9d2VibGF0ZVwiLFxuXVxubW91bnRzID0gW11cblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwid2VibGF0ZVwiXG5wb3J0ID0gODA4MFxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIlxuIgp9Links
Tags
localization, translation, i18n, self-hosted
Version: 2026.7.1.1