10-Minuten-Weblate-Setup mit docker-compose & Traefik

Siehe Einfaches Traefik docker-compose-Setup mit Lets Encrypt Cloudflare DNS-01 & TLS-ALPN-01 & HTTP-01-Challenges für die von uns verwendete Traefik-Konfiguration.

Alle Daten für Weblate, einschließlich der Datenbank, werden in gemappten Verzeichnissen gespeichert, im Gegensatz zu Docker-Volumes. Dies hält alle Daten zusammen.

Erstellen Sie zuerst das Verzeichnis, z.B. /opt/weblate.

`docker-compose.yml

Erstellen Sie nun /opt/weblate/docker-compose.yml

docker-compose.yml
services:
  weblate:
    image: weblate/weblate
    tmpfs:
      - /run
      - /tmp
    volumes:
      - ./weblate_data:/app/data
      - ./weblate_cache:/app/cache
    restart: always
    read_only: true
    depends_on:
      - database
      - cache
    env_file:
      - .env
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.weblate-mydomain.rule=Host(`weblate.mydomain.com`)"
      - "traefik.http.routers.weblate-mydomain.entrypoints=websecure"
      - "traefik.http.routers.weblate-mydomain.tls.certresolver=cloudflare-ec384"
      - "traefik.http.routers.weblate-mydomain.tls.domains[0].main=mydomain.com"
      - "traefik.http.routers.weblate-mydomain.tls.domains[0].sans=*.mydomain.com"
      - "traefik.http.services.weblate-mydomain.loadbalancer.server.port=8080"
  database:
    image: postgres:16-alpine
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_DB=${POSTGRES_DB}

    restart: always
  cache:
    image: redis:7-alpine
    restart: always
    read_only: true
    env_file:
      - .env
    command: [redis-server, --save, '60', '1']
    volumes:
      - ./redis_data:/data

Initialisieren

Führen Sie dieses Shell-Skript in /opt/weblate aus:

init_weblate_dirs.sh
#!/bin/sh
mkdir -p weblate_data weblate_cache
chown -R 1000:1000 weblate_data weblate_cache

um die notwendigen Verzeichnisse zu erstellen und die korrekten Berechtigungen zu setzen.

.env erstellen (die Konfigurationsdatei)

Siehe die Weblate Docker-Dokumentation für weitere Informationen zu allen verfügbaren Optionen. Für dieses Beispiel zeigen wir nur alle aktivierten Konfigurationsoptionen.

Erstellen Sie dies als /opt/weblate/.env.

Beachten Sie, dass ich es standardmäßig als nicht für Registrierung geöffnet eingestellt habe, aber Anmeldung erforderlich ist. Dies ist die häufigste Konfiguration für private / Unternehmens-Setups, bei denen der Administrator Benutzerkonten manuell verwalten wird.

.env
WEBLATE_SITE_DOMAIN=weblate.mydomain.com
WEBLATE_DEBUG=0
WEBLATE_LOGLEVEL=INFO
WEBLATE_SITE_TITLE=Weblate Techoverflow
WEBLATE_ADMIN_NAME=uli
WEBLATE_ADMIN_EMAIL=admin@mydomain.com
WEBLATE_ADMIN_PASSWORD=Uditien0og9ohshohg0Ooj7XooC0io
WEBLATE_SERVER_EMAIL=weblate@mydomain.com
WEBLATE_DEFAULT_FROM_EMAIL=weblate@mydomain.com
WEBLATE_ALLOWED_HOSTS=*
WEBLATE_REGISTRATION_OPEN=0
WEBLATE_TIME_ZONE=Europe/Berlin
WEBLATE_IP_PROXY_HEADER=HTTP_X_FORWARDED_FOR
WEBLATE_REQUIRE_LOGIN=1
POSTGRES_PASSWORD=gahth9Geasautheejee8kies9sheeb
POSTGRES_USER=weblate
POSTGRES_DB=weblate
POSTGRES_HOST=database
POSTGRES_DATABASE=weblate
REDIS_HOST=cache
REDIS_PORT=6379
WEBLATE_EMAIL_HOST=mail.mydomain.com
WEBLATE_EMAIL_HOST_USER=weblate@mydomain.com
WEBLATE_EMAIL_HOST_PASSWORD=Oora5phaej
CLIENT_MAX_BODY_SIZE=200M
WEBLATE_SECURE_PROXY_SSL_HEADER=HTTP_X_FORWARDED_PROTO,https

Autostart einrichten

TL;DR: Führen Sie dies in /opt/weblate aus

install_docker_compose_service.sh
curl -fsSL https://techoverflow.net/scripts/create-docker-compose-service.sh | sudo bash /dev/stdin

Siehe Erstellen Sie einen systemd-Service für Ihr docker-compose-Projekt in 10 Sekunden für weitere Details.

Setup über das Webinterface

Öffnen Sie nun https://weblate.mydomain.com und folgen Sie den Anweisungen auf dem Bildschirm, um das Setup abzuschließen.


Check out similar posts by category: Weblate, Docker