Weblate:使用 docker-compose 和 Traefik 的 10 分钟部署
关于我们使用的 Traefik 配置,请参见使用 Let’s Encrypt Cloudflare DNS-01、TLS-ALPN-01 和 HTTP-01 挑战的简单 Traefik docker-compose 设置。
Weblate 的所有数据(包括数据库)都存储在映射的目录中,而非 Docker volumes。这样可以将所有数据集中管理。
首先创建目录,例如 /opt/weblate。
docker-compose.yml
然后创建 /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初始化
在 /opt/weblate 目录中运行此 shell 脚本:
init_weblate_dirs.sh
#!/bin/sh
mkdir -p weblate_data weblate_cache
chown -R 1000:1000 weblate_data weblate_cache以创建必要的目录并设置正确的权限。
创建 .env(配置文件)
有关所有可用选项的详细信息,请参阅 Weblate Docker 文档。本示例仅展示所有已启用的配置选项。
将此文件创建为 /opt/weblate/.env。
注意,默认情况下我将其设置为不开放注册,但要求登录。这是私有/企业环境中最常见的配置,管理员将手动管理用户账户。
.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设置开机自启
简要说明:在 /opt/weblate 中运行以下命令:
install_docker_compose_service.sh
curl -fsSL https://techoverflow.net/scripts/create-docker-compose-service.sh | sudo bash /dev/stdin更多详情请参见10 秒内为你的 docker-compose 项目创建 systemd 服务。
通过 Web 界面完成设置
打开 https://weblate.mydomain.com,按照屏幕上的说明完成设置。
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow