使用 Docker 安装

通过 dockerized Weblate 部署,您可以在几秒钟内启动并运行您的个人 Weblate 实例。Weblate 的所有依赖项已包含在内。PostgreSQL 被新建为默认数据库。

硬件要求

Weblate 应该可以在任何现代硬件上正常运行,以下是在单个主机(Weblate、数据库和 Web 服务器)上运行 Weblate 所需的最低配置:

  • 2 GB 的内存

  • 2 个 CPU 核心

  • 1 GB 的存储空间

内存越多越好——用于所有级别的缓存(文件系统,数据库和 Weblate )。

许多并发用户会增加所需的 CPU 内核数量。对于数百个翻译部件,推荐至少有 4 GB 的内存。

典型的数据库存储用量大约为每 1 百万单词 300 MB。克隆仓库所需的存储空间会变化,但 Weblate 试图通过浅克隆将其大小最小化。

备注

安装 Weblate 的实际要求会因其中管理的翻译规模而大不相同。

安装

以下示例假设您拥有一个工作正常的 Docker 环境,并安装了 docker-compose。请查看 Docker 文档以获取说明。

  1. 克隆 weblate-docker 仓库:

    git clone https://github.com/WeblateOrg/docker-compose.git weblate-docker
    cd weblate-docker
    
  2. 使用您的设置创建一个 docker-compose.override.yml 文件。请参阅 Docker 环境变量 以获取环境变量的完整列表。

    version: '3'
    services:
      weblate:
        ports:
          - 80:8080
        environment:
          WEBLATE_EMAIL_HOST: smtp.example.com
          WEBLATE_EMAIL_HOST_USER: user
          WEBLATE_EMAIL_HOST_PASSWORD: pass
          WEBLATE_SERVER_EMAIL: weblate@example.com
          WEBLATE_DEFAULT_FROM_EMAIL: weblate@example.com
          WEBLATE_SITE_DOMAIN: weblate.example.com
          WEBLATE_ADMIN_PASSWORD: password for the admin user
          WEBLATE_ADMIN_EMAIL: weblate.admin@example.com
    

    备注

    如果未设置 WEBLATE_ADMIN_PASSWORD,则使用首次启动时显示的随机密码创建管理员用户。

    提供的示例使 Weblate 侦听端口 80,在 docker-compose.override.yml 文件中编辑端口映射来更改。

  3. 启动 Weblate 容器:

    docker-compose up
    

享受您的 Weblate 部署,可以在 weblate 容器的端口 80 上进行访问。

在 2.15-2 版本发生变更: 最近更改了设置,以前有单独的 web 服务器容器,因为 2.15-2 开始,web 服务器已嵌入 Weblate 容器中。

在 3.7.1-6 版本发生变更: 在 2019 年 7 月(从 3.7.1-6 tag 开始)中,容器未以 root 用户身份运行。这已将裸露端口从 80 更改为 8080。

选择Docker hub标签

你可以在Docker hub上使用以下标签,请参阅 https://hub.docker.com/r/weblate/weblate/tags/,以获得完整的可用标签列表。

标签名称

说明

用例

latest

与最新的标签版本相匹配的Weblate 稳定发行版

在生产环境中滚动更新

<VERSION>-<PATCH>

Weblate 稳定发行版

生产环境下定义良好的部署

edge

Weblate稳定发行版在Docker容器中的开发变化(例如依赖的更新)

在准生产环境中进行滚动更新

edge-<DATE>-<SHA>

Weblate稳定发行版在Docker容器中的开发变化(例如依赖的更新)

在准生产环境中定义完善部署

bleeding

来自Git的Weblate开发版

滚动更新以测试即将推出的 Weblate 功能

bleeding-<DATE>-<SHA>

来自Git的Weblate开发版

定义明确的部署以测试即将推出的 Weblate 功能

每张图片在发布之前都经过我们的 CI 测试,所以即使是 bleeding 版本也应该可以安全使用。

具有 HTTPS 支持的 Docker 容器

请参阅 安装 以获取常规部署说明,本节仅提及与之相比的差异。

使用自己的 SSL 证书

在 3.8-3 版本加入.

如果您要使用自己的 SSL 证书,只需将文件放入 Weblate 数据卷中(请参阅 Docker 容器卷):

  • ssl/fullchain.pem 包含证书,包括任何需要的 CA 证书

  • ssl/privkey.pem 包含有私钥

拥有这两个文件的用户必须与启动 docker 容器并将文件掩码设置为 600 (仅拥有用户可读可写)的用户为同一用户。

此外,Weblate 容器现在将在端口 4443 上接受 SSL 连接,您将要在 docker compose override 中包括 HTTPS 的端口转发:

version: '3'
services:
  weblate:
    ports:
      - 80:8080
      - 443:4443

如果您已经在同一服务器上托管其他站点,则反向代理(例如 NGINX )可能会使用端口 80443。要将 HTTPS 连接从 NGINX 传递到 docker 容器,可以使用以下配置:

server {
    listen 443;
    listen [::]:443;

    server_name <SITE_URL>;
    ssl_certificate /etc/letsencrypt/live/<SITE>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<SITE>/privkey.pem;

    location / {
            proxy_set_header HOST $host;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_pass https://127.0.0.1:<EXPOSED_DOCKER_PORT>;
    }
}

<SITE_URL><SITE><EXPOSED_DOCKER_PORT> 替换为您环境中的实际值。

使用 Let’s Encrypt 自动生成 SSL 证书

如果要在公共安装中使用 Let’s Encrypt 自动生成的 SSL 证书,则需要在其他 Docker 容器中添加反向 HTTPS 代理,这将使用 https-portal。这是在 docker-compose-https.yml 文件中使用的。然后使用您的设置创建一个 docker-compose-https.override.yml 文件:

version: '3'
services:
  weblate:
    environment:
      WEBLATE_EMAIL_HOST: smtp.example.com
      WEBLATE_EMAIL_HOST_USER: user
      WEBLATE_EMAIL_HOST_PASSWORD: pass
      WEBLATE_SITE_DOMAIN: weblate.example.com
      WEBLATE_ADMIN_PASSWORD: password for admin user
  https-portal:
    environment:
      DOMAINS: 'weblate.example.com -> http://weblate:8080'

每当调用 docker-compose 时,您都需要将两个文件都传递给它,然后执行以下操作:

docker-compose -f docker-compose-https.yml -f docker-compose-https.override.yml build
docker-compose -f docker-compose-https.yml -f docker-compose-https.override.yml up

升级 Docker 容器

通常,只更新 Weblate 容器并保持 PostgreSQL 容器为您的版本是一个好主意,因为升级 PostgreSQL 会很痛苦,并且在大多数情况下不会带来很多好处。

在 4.10-1 版本发生变更: 从 Weblate 4.10-1 开始,Docker 容器使用 Django 4.0 需要 PostgreSQL 10 或更高版本,请在升级 Weblate 之前对其进行升级。参见 从 4.9 升级到 4.10升级 PostgreSQL 容器

您可以通过坚持使用现有的 docker-compose,并且只是拉取最新镜像,然后重新启动,来执行此操作:

# Fetch latest versions of the images
docker-compose pull
# Stop and destroy the containers
docker-compose down
# Spawn new containers in the background
docker-compose up -d
# Follow the logs during upgrade
docker-compose logs -f

Weblate 数据库应在首次启动时自动迁移,并且不需要其他手动操作。

备注

Weblate 不支持跨大版本升级。比如,如果您使用的是 3.x 系列,要升级到 4.x,请首先升级到最新的 4.0.x-y 镜像(在撰写本文时为 4.0.4-5),它将进行迁移和然后继续升级到较新版本。

您可能还想更新 docker-compose 仓库,尽管在大多数情况下并不需要。在这种情况下,升级 PostgreSQL 服务器的信息,见 升级 PostgreSQL 容器

升级 PostgreSQL 容器

PostgreSQL 容器不支持版本间自动升级,需要手动升级。以下步骤显示了升级选项之一。

  1. 停止 Weblate 容器:

    docker-compose stop weblate cache
    
  2. 备份数据库:

    docker-compose exec database pg_dumpall --clean --username weblate > backup.sql
    
  3. 停止数据库容器:

    docker-compose stop database
    
  4. 删除 PostgreSQL 卷:

    docker-compose rm -v database
    docker volume remove weblate_postgres-data
    
  5. 调整 :file:`docker-compose.yml`以使用新的 PostgreSQL 版本。

  6. 启动数据库容器:

    docker-compose up -d database
    
  7. 从备份恢复数据库:

    cat backup.sql | docker-compose exec -T database psql --username weblate --dbname postgres
    
  8. 启动所有剩余的容器:

    docker-compose up -d
    

管理员登录

设置容器之后,您可以使用 WEBLATE_ADMIN_PASSWORD 中提供的密码以 管理员 用户身份登录,或者如果未设置该密码,则在首次启动时生成随机密码。

要重置 管理员 密码,请在 WEBLATE_ADMIN_PASSWORD 设置为新密码的情况下重启容器。

进程数量和内存消耗

uWSGI 和 Celery 的工作进程数是根据 CPU 的数量自动确定的。这适用于大多数云虚拟机,因为这些虚拟机通常具有很少的CPU和大量的内存。

在你有很多 CPU 核心并且碰到内存用尽问题情况下,尝试减少 worker 的数量:

environment:
  WEBLATE_WORKERS: 2

你还可以微调单个 worker 类别:

environment:
  WEB_WORKERS: 4
  CELERY_MAIN_OPTIONS: --concurrency 2
  CELERY_NOTIFY_OPTIONS: --concurrency 1
  CELERY_TRANSLATE_OPTIONS: --concurrency 1

横向扩展

在 4.6 版本加入.

您可以运行多个 Weblate 容器来水平扩展服务。/app/data 卷必须由所有容器共享,建议使用集群文件系统,如 GlusterFS。对于每个容器,:file:`/app/cache`卷应该是分开的。

每个 Weblate 容器都使用 WEBLATE_SERVICE 环境变量定义了角色。请仔细阅读文档,因为某些服务应该在集群中只运行一次,并且服务的顺序也很重要。

您可以在 docker-compose 仓库中找到示例设置,如 docker-compose-split.yml

Docker 环境变量

可以使用环境变量在 Docker 容器中设置许多 Weblate 的 配置

通用设置

WEBLATE_DEBUG

使用 DEBUG 配置 Django 调试模式。

示例:

environment:
  WEBLATE_DEBUG: 1
WEBLATE_LOGLEVEL

配置日志记录的详细程度。

WEBLATE_LOGLEVEL_DATABASE

配置数据库查询详细程度的日志记录。

WEBLATE_SITE_TITLE

更改所有页面页眉上显示的站点标题。

WEBLATE_SITE_DOMAIN

配置站点域名。此参数为必填项。

WEBLATE_ADMIN_NAME
WEBLATE_ADMIN_EMAIL

配置站点管理员的姓名和电子邮件。它用于 ADMINS 设置和创建 管理员 用户(有关此信息,请参阅 WEBLATE_ADMIN_PASSWORD)。

示例:

environment:
  WEBLATE_ADMIN_NAME: Weblate admin
  WEBLATE_ADMIN_EMAIL: noreply@example.com
WEBLATE_ADMIN_PASSWORD

设置 管理员 用户的密码。

  • 如果未设置并且 管理员 用户不存在,则会使用首次启动容器时显示的随机密码来创建它。

  • 如果未设置并且 管理员 用户存在,则不执行任何操作。

  • 如果设置,则在每次容器启动时都会对 管理员 用户进行调整,以匹配 WEBLATE_ADMIN_PASSWORDWEBLATE_ADMIN_NAMEWEBLATE_ADMIN_EMAIL

警告

将密码存储在配置文件中可能会带来安全风险。考虑仅将此变量用于初始设置(或让 Weblate 在初始启动时生成随机密码)或用于密码恢复。

WEBLATE_ADMIN_PASSWORD_FILE

设置指向包含 管理员 用户密码的一个文件。

WEBLATE_SERVER_EMAIL

发送错误消息的电子邮箱地址。

WEBLATE_DEFAULT_FROM_EMAIL

配置外发电子邮件的地址。

WEBLATE_CONTACT_FORM

配置联系表单行为,请参阅 CONTACT_FORM

WEBLATE_ALLOWED_HOSTS

使用 ALLOWED_HOSTS 配置允许的 HTTP 主机名。

默认为 * 来允许所有的主机名称。

示例:

environment:
  WEBLATE_ALLOWED_HOSTS: weblate.example.com,example.com
WEBLATE_REGISTRATION_OPEN

通过切换 REGISTRATION_OPEN 配置是否打开注册。

示例:

environment:
  WEBLATE_REGISTRATION_OPEN: 0
WEBLATE_REGISTRATION_ALLOW_BACKENDS

配置可用于通过 REGISTRATION_ALLOW_BACKENDS 创建新账户的身份验证方法。

示例:

environment:
  WEBLATE_REGISTRATION_OPEN: 0
  WEBLATE_REGISTRATION_ALLOW_BACKENDS: azuread-oauth2,azuread-tenant-oauth2
WEBLATE_TIME_ZONE

在 Weblate 中配置使用的时区,请参阅 TIME_ZONE

备注

为了更改 Docker 自己的时区,使用 TZ 环境变量。

示例:

environment:
  WEBLATE_TIME_ZONE: Europe/Prague
WEBLATE_ENABLE_HTTPS

让 Weblate 假定在反向 HTTPS 代理后面操作,这使 Weblate 在电子邮件和 API 链接中使用 HTTPS,或者在 cookies 上设置安全标记。

提示

可能的警告请参见 ENABLE_HTTPS 文档。

备注

这不会使 Weblate 容器接受 HTTPS 连接,您同样需要配置它,示例请参见 具有 HTTPS 支持的 Docker 容器

示例:

environment:
  WEBLATE_ENABLE_HTTPS: 1
WEBLATE_INTERLEDGER_PAYMENT_POINTERS

在 4.12.1 版本加入.

让 Weblate 在文档的头部设置 meta[name=monetization] 字段。如果指定了多个,则随机选择一个。

WEBLATE_IP_PROXY_HEADER

让 Weblate 从任何给定的 HTTP 标头中取回 IP 地址。在使用 Weblate 容器之前的反向代理时使用它。

允许 IP_BEHIND_REVERSE_PROXY 并设置 IP_PROXY_HEADER

备注

格式必须符合 Django 的要求。Django transforms 原始 HTTP 标头如下命名:

  • 将所有字符装换为大写

  • 用下划线替换任何连字符

  • 预置 HTTP_ 前缀

所以 X-Forwarded-For 将被映射到 HTTP_X_FORWARDED_FOR

示例:

environment:
  WEBLATE_IP_PROXY_HEADER: HTTP_X_FORWARDED_FOR
WEBLATE_SECURE_PROXY_SSL_HEADER

代表 HTTP 标头/值的组合的元组,用于表达请求,这样的元组是安全的。当 Weblate 在进行终止SSL 的反向代理之后运行时,这是需要的,终止 SSL 不通过标准 HTTPS 标头。

示例:

environment:
  WEBLATE_SECURE_PROXY_SSL_HEADER: HTTP_X_FORWARDED_PROTO,https
WEBLATE_REQUIRE_LOGIN

启用 REQUIRE_LOGIN 而在整个 Weblate 上强制认证。

示例:

environment:
  WEBLATE_REQUIRE_LOGIN: 1
WEBLATE_LOGIN_REQUIRED_URLS_EXCEPTIONS
WEBLATE_ADD_LOGIN_REQUIRED_URLS_EXCEPTIONS
WEBLATE_REMOVE_LOGIN_REQUIRED_URLS_EXCEPTIONS

使用 LOGIN_REQUIRED_URLS_EXCEPTIONS 来为整个 Weblate 安装所需的身份验证添加 URL 例外。

可以替换整个设置,或者使用 ADDREMOVE 变量修改默认值。

WEBLATE_GOOGLE_ANALYTICS_ID

通过更改 GOOGLE_ANALYTICS_ID 来配置 Google Analytics(分析)的 ID。

WEBLATE_GITHUB_USERNAME
WEBLATE_GITHUB_TOKEN
WEBLATE_GITHUB_HOST

通过修改 GITHUB_CREDENTIALS (如果设置了 WEBLATE_GITHUB_HOST ),或 GITHUB_USERNAMEGITHUB_TOKEN 来配置 GitHub 拉取请求集成。

WEBLATE_GITLAB_USERNAME
WEBLATE_GITLAB_TOKEN
WEBLATE_GITLAB_HOST

配置 GitLab merge-requests 集成的方法:更改 GITLAB_CREDENTIALS (如设置了 WEBLATE_GITLAB_HOST),或 GITLAB_USERNAMEGITLAB_TOKEN

WEBLATE_GITEA_USERNAME
WEBLATE_GITEA_TOKEN
WEBLATE_GITEA_HOST

配置 Gitea pull-requests 集成的方法:更改 GITEA_CREDENTIALS (如设置了 WEBLATE_GITEA_HOST),或 GITEA_USERNAMEGITEA_TOKEN

WEBLATE_PAGURE_USERNAME
WEBLATE_PAGURE_TOKEN
WEBLATE_PAGURE_HOST

配置 Pagure 集成的方法:更改 PAGURE_CREDENTIALS (如设置了 WEBLATE_PAGURE_HOST ),或 PAGURE_USERNAMEPAGURE_TOKEN

WEBLATE_DEFAULT_PULL_MESSAGE

通过更改 DEFAULT_PULL_MESSAGE 来配置使用 API 发起的拉取请求的默认标题和说明

WEBLATE_SIMPLIFY_LANGUAGES

配置语言简化策略,请参见 SIMPLIFY_LANGUAGES

WEBLATE_DEFAULT_ACCESS_CONTROL

为新项目配置默认的 访问控制,请参见 DEFAULT_ACCESS_CONTROL

WEBLATE_DEFAULT_RESTRICTED_COMPONENT

为新部件的 受限制的访问 配置默认值,请参见 DEFAULT_RESTRICTED_COMPONENT

WEBLATE_DEFAULT_TRANSLATION_PROPAGATION

为新部件的 允许同步翻译 配置默认值,请参见 DEFAULT_TRANSLATION_PROPAGATION

WEBLATE_DEFAULT_COMMITER_EMAIL

配置 DEFAULT_COMMITER_EMAIL

WEBLATE_DEFAULT_COMMITER_NAME

配置 DEFAULT_COMMITER_NAME

WEBLATE_DEFAULT_SHARED_TM

配置 DEFAULT_SHARED_TM.

WEBLATE_AKISMET_API_KEY

配置 Akismet API 密钥,请参见 AKISMET_API_KEY

WEBLATE_GPG_IDENTITY

配置提交的 GPG 签名,请参见 WEBLATE_GPG_IDENTITY

WEBLATE_URL_PREFIX

配置 Weblate 运行的 URL 前缀,请参见 URL_PREFIX

WEBLATE_SILENCED_SYSTEM_CHECKS

配置您不想要显示的检查,请参见 SILENCED_SYSTEM_CHECKS

WEBLATE_CSP_SCRIPT_SRC
WEBLATE_CSP_IMG_SRC
WEBLATE_CSP_CONNECT_SRC
WEBLATE_CSP_STYLE_SRC
WEBLATE_CSP_FONT_SRC

允许定制 Content-Security-Policy HTTP 标头。

WEBLATE_LICENSE_FILTER

配置 LICENSE_FILTER.

WEBLATE_LICENSE_REQUIRED

配置 LICENSE_REQUIRED

WEBLATE_WEBSITE_REQUIRED

配置 WEBSITE_REQUIRED

WEBLATE_HIDE_VERSION

配置 HIDE_VERSION

WEBLATE_BASIC_LANGUAGES

配置 BASIC_LANGUAGES.

WEBLATE_DEFAULT_AUTO_WATCH

配置 DEFAULT_AUTO_WATCH.

WEBLATE_RATELIMIT_ATTEMPTS
WEBLATE_RATELIMIT_LOCKOUT
WEBLATE_RATELIMIT_WINDOW

在 4.6 版本加入.

配置速率限制器。

提示

你可以为任何速率限制器的范围设置配置。要做到这一点,请在 :ref:`rate-limit’中描述的任何设置中添加`WEBLATE_`前缀。

WEBLATE_API_RATELIMIT_ANON
WEBLATE_API_RATELIMIT_USER

在 4.11 版本加入.

配置 API 速率限制。默认值如下:匿名用户 100/day,已验证身份用户 ``5000/hour`。

WEBLATE_ENABLE_HOOKS

在 4.13 版本加入.

配置 ENABLE_HOOKS

WEBLATE_ENABLE_AVATARS

在 4.6.1 版本加入.

配置 ENABLE_AVATARS.

WEBLATE_AVATAR_URL_PREFIX

在 4.15 版本加入.

配置 AVATAR_URL_PREFIX

WEBLATE_LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH

在 4.9 版本加入.

配置 LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH.

WEBLATE_SSH_EXTRA_ARGS

在 4.9 版本加入.

配置 SSH_EXTRA_ARGS

WEBLATE_BORG_EXTRA_ARGS

在 4.9 版本加入.

配置 BORG_EXTRA_ARGS

WEBLATE_ENABLE_SHARING

在 4.14.1 版本加入.

配置 ENABLE_SHARING.

WEBLATE_EXTRA_HTML_HEAD

在 4.15 版本加入.

Configures EXTRA_HTML_HEAD.

自动建议设置

在 4.13 版本发生变更: 自动建议服务现在在用户界面进行配置,见 配置自动建议

现有的环境变量在迁移到Weblate 4.13时被导入,但改变它们不会有任何进一步的影响。

身份验证设置

LDAP

WEBLATE_AUTH_LDAP_SERVER_URI
WEBLATE_AUTH_LDAP_USER_DN_TEMPLATE
WEBLATE_AUTH_LDAP_USER_ATTR_MAP
WEBLATE_AUTH_LDAP_BIND_DN
WEBLATE_AUTH_LDAP_BIND_PASSWORD
WEBLATE_AUTH_LDAP_BIND_PASSWORD_FILE

包含 LDAP 服务器绑定密码的文件的路径。

WEBLATE_AUTH_LDAP_CONNECTION_OPTION_REFERRALS
WEBLATE_AUTH_LDAP_USER_SEARCH_FILTER
WEBLATE_AUTH_LDAP_USER_SEARCH_UNION
WEBLATE_AUTH_LDAP_USER_SEARCH_UNION_DELIMITER

LDAP 身份验证配置。

直接绑定的示例:

environment:
  WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org
  WEBLATE_AUTH_LDAP_USER_DN_TEMPLATE: uid=%(user)s,ou=People,dc=example,dc=net
  # map weblate 'full_name' to ldap 'name' and weblate 'email' attribute to 'mail' ldap attribute.
  # another example that can be used with OpenLDAP: 'full_name:cn,email:mail'
  WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail

搜索与绑定的示例:

environment:
  WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org
  WEBLATE_AUTH_LDAP_BIND_DN: CN=ldap,CN=Users,DC=example,DC=com
  WEBLATE_AUTH_LDAP_BIND_PASSWORD: password
  WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail
  WEBLATE_AUTH_LDAP_USER_SEARCH: CN=Users,DC=example,DC=com

联合搜索与绑定的示例:

environment:
  WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org
  WEBLATE_AUTH_LDAP_BIND_DN: CN=ldap,CN=Users,DC=example,DC=com
  WEBLATE_AUTH_LDAP_BIND_PASSWORD: password
  WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail
  WEBLATE_AUTH_LDAP_USER_SEARCH_UNION: ou=users,dc=example,dc=com|ou=otherusers,dc=example,dc=com

针对 Active Directory 的搜索与绑定的示例:

environment:
  WEBLATE_AUTH_LDAP_BIND_DN: CN=ldap,CN=Users,DC=example,DC=com
  WEBLATE_AUTH_LDAP_BIND_PASSWORD: password
  WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org
  WEBLATE_AUTH_LDAP_CONNECTION_OPTION_REFERRALS: 0
  WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail
  WEBLATE_AUTH_LDAP_USER_SEARCH: CN=Users,DC=example,DC=com
  WEBLATE_AUTH_LDAP_USER_SEARCH_FILTER: (sAMAccountName=%(user)s)

GitHub

WEBLATE_SOCIAL_AUTH_GITHUB_KEY
WEBLATE_SOCIAL_AUTH_GITHUB_SECRET
WEBLATE_SOCIAL_AUTH_GITHUB_ORG_KEY
WEBLATE_SOCIAL_AUTH_GITHUB_ORG_SECRET
WEBLATE_SOCIAL_AUTH_GITHUB_ORG_NAME
WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_KEY
WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_SECRET
WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_ID

允许 GitHub 身份验证

Bitbucket

WEBLATE_SOCIAL_AUTH_BITBUCKET_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_BITBUCKET_OAUTH2_SECRET
WEBLATE_SOCIAL_AUTH_BITBUCKET_KEY
WEBLATE_SOCIAL_AUTH_BITBUCKET_SECRET

允许 Bitbucket 身份验证

Facebook

WEBLATE_SOCIAL_AUTH_FACEBOOK_KEY
WEBLATE_SOCIAL_AUTH_FACEBOOK_SECRET

允许 Facebook OAuth 2.

Google

WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET
WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS
WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS

允许 Google OAuth 2

GitLab

WEBLATE_SOCIAL_AUTH_GITLAB_KEY
WEBLATE_SOCIAL_AUTH_GITLAB_SECRET
WEBLATE_SOCIAL_AUTH_GITLAB_API_URL

允许 GitLab OAuth 2

Azure Active Directory

WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET

启用 Azure Active Directory 身份验证,请参见 Microsoft Azure Active Directory

支持 Azure Active Directory 租户

WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET
WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID

启用支持 Azure Active Directory 租户的身份验证,请参见 Microsoft Azure Active Directory

Keycloak

WEBLATE_SOCIAL_AUTH_KEYCLOAK_KEY
WEBLATE_SOCIAL_AUTH_KEYCLOAK_SECRET
WEBLATE_SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY
WEBLATE_SOCIAL_AUTH_KEYCLOAK_ALGORITHM
WEBLATE_SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL
WEBLATE_SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL
WEBLATE_SOCIAL_AUTH_KEYCLOAK_TITLE
WEBLATE_SOCIAL_AUTH_KEYCLOAK_IMAGE

允许 Keycloak 身份验证,请参见 documentation

Linux 销售商

您可以通过将后面的变量设置为任何值,使用 Linux 销售商身份验证服务来允许身份验证。

WEBLATE_SOCIAL_AUTH_FEDORA
WEBLATE_SOCIAL_AUTH_OPENSUSE
WEBLATE_SOCIAL_AUTH_UBUNTU

Slack

WEBLATE_SOCIAL_AUTH_SLACK_KEY
SOCIAL_AUTH_SLACK_SECRET

允许 Slack 身份验证,请参见 Slack

OpenID 连接

在 4.13-1 版本加入.

WEBLATE_SOCIAL_AUTH_OIDC_OIDC_ENDPOINT
WEBLATE_SOCIAL_AUTH_OIDC_KEY
WEBLATE_SOCIAL_AUTH_OIDC_SECRET
WEBLATE_SOCIAL_AUTH_OIDC_USERNAME_KEY

配置通用 OpenID Connect 集成。

SAML

在第一次启动容器时会自动生成自签名的 SAML 密钥。如果您想要使用自己的密钥,请将证书和私钥分别放在 /app/data/ssl/saml.crt/app/data/ssl/saml.key 中。

WEBLATE_SAML_IDP_ENTITY_ID
WEBLATE_SAML_IDP_URL
WEBLATE_SAML_IDP_X509CERT
WEBLATE_SAML_IDP_IMAGE
WEBLATE_SAML_IDP_TITLE

SAML 身份提供者设置,请参见 SAML 身份验证

其他身份认证设置

WEBLATE_NO_EMAIL_AUTH

当设置为任何值时禁止电子邮箱身份认证。请参见 关闭密码身份验证

PostgreSQL 数据库设置

数据库由 docker-compose.yml 建立,所以这些设置影响 Weblate 和 PostgreSQL 容器。

POSTGRES_PASSWORD

PostgreSQL 密码。

POSTGRES_PASSWORD_FILE

包含PostgreSQL密码的文件的路径。用作 POSTGRES_PASSWORD 的替代。

POSTGRES_USER

PostgreSQL 用户名。

POSTGRES_DATABASE

PostgreSQL 数据库名。

POSTGRES_HOST

PostgreSQL 服务器主机名成或 IP 地址。默认为 database

POSTGRES_PORT

PostgreSQL 服务器端口。默认为无(使用默认值)。

POSTGRES_SSL_MODE

配置 PostgreSQL 如何处理 SSL 连接到服务器,可能的选项请参见 SSL Mode Descriptions

POSTGRES_ALTER_ROLE

在迁移过程中配置要改变的角色名称,请参见 配置 Weblate 来使用 PostgreSQL

POSTGRES_CONN_MAX_AGE

在 4.8.1 版本加入.

数据库连接的寿命,以秒为单位的整数。使用0可以在每次请求结束时关闭数据库连接(这是默认行为)。

启用连接持久性通常会导致更多的数据库开放连接。请在启用前调整你的数据库配置。

配置的示例:

environment:
    POSTGRES_CONN_MAX_AGE: 3600
POSTGRES_DISABLE_SERVER_SIDE_CURSORS

在 4.9.1 版本加入.

禁用数据库中的服务器端游标。这在一些:command:`pgbouncer`设置中是必要的。

配置的示例:

environment:
    POSTGRES_DISABLE_SERVER_SIDE_CURSORS: 1

数据库备份设置

WEBLATE_DATABASE_BACKUP

使用 DATABASE_BACKUP 配置每日数据库转储。默认为 plain

缓存服务器设置

Weblate 强烈推荐使用 Redis,在 Docker 中运行 Weblate 时您必须提供 Redis 实例。

参见

允许缓存

REDIS_HOST

Redis 服务器主机名称或 IP 地址。默认为 cache

REDIS_PORT

Redis 服务器端口。默认为 6379

REDIS_DB

Redis 数据库编号,默认为 1

REDIS_PASSWORD

Redis 服务器密码,默认不使用。

REDIS_PASSWORD_FILE

包含 Redis 服务器密码的文件的路径。

REDIS_TLS

允许使用 SSL 进行 Redis 连接。

REDIS_VERIFY_SSL

可以用于禁止 Redis 连接的 SSL 身份认证。

电子邮件服务器设置

要使外发电子邮件正常工作,您需要提供一个电子邮件服务器。

TLS 配置示例:

environment:
    WEBLATE_EMAIL_HOST: smtp.example.com
    WEBLATE_EMAIL_HOST_USER: user
    WEBLATE_EMAIL_HOST_PASSWORD: pass

SSL 配置的示例:

environment:
    WEBLATE_EMAIL_HOST: smtp.example.com
    WEBLATE_EMAIL_PORT: 465
    WEBLATE_EMAIL_HOST_USER: user
    WEBLATE_EMAIL_HOST_PASSWORD: pass
    WEBLATE_EMAIL_USE_TLS: 0
    WEBLATE_EMAIL_USE_SSL: 1
WEBLATE_EMAIL_HOST

电子邮件服务器主机名或 IP 地址。

WEBLATE_EMAIL_PORT

电子邮件服务器端口,默认为 25。

参见

EMAIL_PORT

WEBLATE_EMAIL_HOST_USER

电子邮件身份验证用户。

WEBLATE_EMAIL_HOST_PASSWORD

电子邮件验证密码。

WEBLATE_EMAIL_HOST_PASSWORD_FILE

到包含电子邮件验证密码的文件的路径。

WEBLATE_EMAIL_USE_SSL

与 SMTP 服务器通信时是否使用隐式 TLS(安全)连接。在大多数电子邮件文档中,这种 TLS 连接类型称为 SSL。通常在端口 465 上使用。如果遇到问题,请参阅显式 TLS 设置 WEBLATE_EMAIL_USE_TLS

在 4.11 版本发生变更: SSL/TLS支持是根据:envvar:`WEBLATE_EMAIL_PORT`自动启用的。

WEBLATE_EMAIL_USE_TLS

与 SMTP 服务器通讯时是否使用 TLS(安全)连接。这用于显式 TLS 连接,通常在端口 587 或 25 上。如果您遇到挂起的连接,请参见隐式 TLS 设置 WEBLATE_EMAIL_USE_SSL

在 4.11 版本发生变更: SSL/TLS支持是根据:envvar:`WEBLATE_EMAIL_PORT`自动启用的。

WEBLATE_EMAIL_BACKEND

将 Django 后端配置为用于发送电子邮件。

WEBLATE_AUTO_UPDATE

配置 Weblate 是否更新仓库以及如何更新。

参见

AUTO_UPDATE

备注

这是一个布尔值设定(使用 "true" 或者 "false")。

站点集成

WEBLATE_GET_HELP_URL

配置 GET_HELP_URL.

WEBLATE_STATUS_URL

配置 STATUS_URL.

配置: setting:LEGAL_URL.

WEBLATE_PRIVACY_URL

配置 PRIVACY_URL.

错误报告

推荐从安装中系统地收集错误,请参见 收集错误报告

要启用对 Rollbar 的支持,请进行以下设置:

ROLLBAR_KEY

您的 Rollbar 发布服务器访问令牌。

ROLLBAR_ENVIRONMENT

您的 Rollbar 环境,默认为 production

要启用对 Sentry 的支持,请进行以下设置:

SENTRY_DSN

您的 Sentry DSN。

SENTRY_ENVIRONMENT

您的 Sentry 环境(可选)。

语言本地化内容分发网络

WEBLATE_LOCALIZE_CDN_URL
WEBLATE_LOCALIZE_CDN_PATH

在 4.2.1 版本加入.

:ref:`addon-weblate.cdn.cdnjs`的配置。

WEBLATE_LOCALIZE_CDN_PATH 是容器内的路径。它应该存储在持久卷上,而不能存储在瞬态存储器中。

一种可能性是存储在 Weblate 数据目录中:

environment:
  WEBLATE_LOCALIZE_CDN_URL: https://cdn.example.com/
  WEBLATE_LOCALIZE_CDN_PATH: /app/data/l10n-cdn

备注

您负责设置Weblate生成的文件的服务,它只在配置的位置存储文件。

更改启用的 app、检查、附加组件或自动修复

在 3.8-5 版本加入.

可以通过后面的变量来调整允许的检查、附加组件或自动修复的内建配置:

WEBLATE_ADD_APPS
WEBLATE_REMOVE_APPS
WEBLATE_ADD_CHECK
WEBLATE_REMOVE_CHECK
WEBLATE_ADD_AUTOFIX
WEBLATE_REMOVE_AUTOFIX
WEBLATE_ADD_ADDONS
WEBLATE_REMOVE_ADDONS

示例:

environment:
  WEBLATE_REMOVE_AUTOFIX: weblate.trans.autofixes.whitespace.SameBookendingWhitespace
  WEBLATE_ADD_ADDONS: customize.addons.MyAddon,customize.addons.OtherAddon

容器设置

WEBLATE_WORKERS

在 4.6.1 版本加入.

容器中运行的工作者进程的基本数量。如果没有设置,它将在容器启动时根据可用的CPU核数自动确定。

它被用来确定 CELERY_MAIN_OPTIONS, CELERY_NOTIFY_OPTIONS, CELERY_MEMORY_OPTIONS, : envvar:CELERY_TRANSLATE_OPTIONS, CELERY_BACKUP_OPTIONS, CELERY_BEAT_OPTIONS, 和 WEB_WORKERS。你可以使用这些设置来微调。

CELERY_MAIN_OPTIONS
CELERY_NOTIFY_OPTIONS
CELERY_MEMORY_OPTIONS
CELERY_TRANSLATE_OPTIONS
CELERY_BACKUP_OPTIONS
CELERY_BEAT_OPTIONS

这些变量允许您调整 Celery worker 选项。它可以用于调整并发性( --concurrency 16 ),或使用不同的池实现( --pool=gevent )。

默认情况下,并发工作者的数量是基于 WEBLATE_WORKERS

示例:

environment:
  CELERY_MAIN_OPTIONS: --concurrency 16
WEB_WORKERS

配置应该执行多少个 uWSGI worker。

它默认为 WEBLATE_WORKERS

示例:

environment:
  WEB_WORKERS: 32
WEBLATE_SERVICE

定义应在容器内执行哪些服务,使用对象 横向扩展

定义了以下服务:

celery-beat

Celery任务调度器,应该只有一个实例在运行。这个容器也负责数据库结构的迁移,它应该在其他容器之前启动。

celery-backup

用于备份的 Celery worker,应该只有一个实例在运行。

celery-celery

普通的 Celery worker.

celery-memory

翻译记忆库 Celery worker。

celery-notify

通知 Celery worker。

celery-translate

自动翻译 Celery worker。

web

Web 服务器。

Docker 容器卷

Weblate 容器导出了两个卷 (数据和缓存)。其他服务容器(PostgreSQL 或 Redis)也具有其数据卷,但本文档未涵盖这些数据卷。

数据卷用于存储 Weblate 持久数据(例如克隆的仓库)或自定义 Weblate 安装。

Docker 卷在主机系统上的位置取决于您的 Docker 配置,但通常存储在 /var/lib/docker/volumes/weblate-docker_weblate-data/_data/ 中。(该路径由你的 docker-compose 目录的名称、容器和卷的名称组成)。在容器中,它挂载为 /app/data

缓存卷被挂载为 /app/cache,用于存储静态文件。它的内容在容器启动时被重新创建,卷可以使用短暂的文件系统(如 tmpfs )挂载。

当手动创建卷时,目录应该由UID 1000拥有,因为那是容器内使用的用户。

进一步的配置定制

您可以在数据卷中进一步自定义 Weblate 安装,请参阅 Docker 容器卷

定制配置文件

你还可以覆盖 /app/data/settings-override.py 中的配置 (见 Docker 容器卷)。这是在所有环境设置加载之后,在内置设置末尾执行的,你可以调整或覆盖它们。

替换标志和其它静态文件

在 3.8-5 版本加入.

Weblate 附带的静态文件可以通过放置到 /app/data/python/customize/static 中来覆盖(请参阅 Docker 容器卷)。例如,创建 /app/data/python/customize/static/favicon.ico 将替换 favicon。

提示

在容器启动时,这些文件被复制到相应的位置,因此需要在更改卷的内容后重新启动 Weblate。

这种方法也可以用来覆盖Weblate的模板。例如 legal`文件可以放在 :file:/app/data/python/customize/templates/legal/documents`里。

或者,您也可以包括自己的模块(请参阅 定制 Weblate),并将其作为单独的卷添加到 Docker 容器中,例如:

weblate:
  volumes:
    - weblate-data:/app/data
    - ./weblate_customization/weblate_customization:/app/data/python/weblate_customization
  environment:
    WEBLATE_ADD_APPS: weblate_customization

添加自己的 Python 模块

在 3.8-5 版本加入.

您可以将自己的 Python 模块放置在 /app/data/python/ 中(请参阅 Docker 容器卷),然后可以由 Weblate 加载它们,很可能是使用 定制配置文件

配置 PostgreSQL 服务器

PostgtreSQL容器使用默认的PostgreSQL配置,它不会有效地利用你的CPU核心或内存。建议自定义配置以提高性能。

配置可以按照https://hub.docker.com/_/postgres “数据库配置 “中的描述来调整。匹配你的环境的配置可以使用https://pgtune.leopard.in.ua/。

Container internals

The container is using supervisor to start individual services. In case of 横向扩展, it only starts single service in a container.

To check the services status use:

docker-compose exec --user weblate weblate supervisorctl status

There are individual services for each Celery queue (see 使用 Celery 的后台任务 for details). You can stop processing some tasks by stopping the appropriate worker:

docker-compose exec --user weblate weblate supervisorctl stop celery-translate