使用 Docker 安裝

透過 Weblate 容器化部署,您可以在幾秒鐘內啟動並執行您的個人 Weblate 執行個體。Weblate 的所有相依套件已包含在內。PostgreSQL 設為預設資料庫,Valkey 設為快取後端。

硬體需求

Weblate 應該可以在任何現代硬體上正常執行,以下是在單一主機(Weblate、資料庫和 Web 伺服器)上執行 Weblate 所需的最低設定:

  • 3 GB 記憶體

  • 2 個 CPU 核心

  • 1 GB 儲存空間

備註

根據 Weblate 中管理的翻譯大小,安裝 Weblate 的實際需求差異很大。

記憶體使用

記憶體越多越好——用於所有層級的快取(檔案系統,資料庫和 Weblate)。如果有幾百個翻譯元件,那麼建議的最小記憶體為 4 GB。

提示

對於記憶體低於建議值的系統,建議使用 單行程 Celery 設定

CPU 使用

大量並行使用者會提高需要的 CPU 核心數。

儲存空間使用

典型的資料庫儲存用量為大約 300 MB/每 100 萬託管字詞。

複製儲存庫所需的儲存空間會因情況而異,但 Weblate 會透過淺層複製來盡量降低所需空間。

節點

對中小網站(幾百萬託管字詞),所有的 Weblate 元件(見 架構概覽)可以執行在單一節點上。

當託管字詞數增長到數以億計時,建議使用專門的資料庫節點(見 適用於 Weblate 的資料庫設定)。

安裝

提示

下列範例假設您有可正常運作的 Docker 環境,並已安裝 docker-compose-plugin。操作說明請參閱 Docker 說明文件。

這會透過 HTTP 建立一個 Weblate 部署伺服器,您應將它置於 HTTPS 終止代理之後。您也可以用 HTTPS 代理進行部署,參閱 使用 Let’s Encrypt 自動產生 SSL 憑證。對於更大型的安裝設定,請見 水平擴展

  1. 複製 weblate-docker 儲存庫:

    git clone https://github.com/WeblateOrg/docker-compose.git weblate-docker
    cd weblate-docker
    

    備註

    Docker Compose 檔案是部署設定範例。維運人員通常會依自己的部署自訂檔案,並維護這些本機變更。Weblate 應用程式更新會透過 Docker 映像標籤提供;自訂 Compose 檔案沒有與發行版本綁定的更新途徑。

  2. 建立一個 docker-compose.override.yml 檔案並調整為您所需的設定。參閱 Docker 環境變數 瞭解更多相關設定參數。

    services:
      weblate:
        image: weblate/weblate:latest
        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
        ports:
        - 80:8080
    

    備註

    如果未設定 WEBLATE_ADMIN_PASSWORD,則使用首次啟動時顯示的隨機密碼建立管理員使用者。

    提供的範例使 Weblate 偵聽連接埠 80,在 docker-compose.override.yml 檔案中編輯連接埠映射來變更。

  3. 啟動 Weblate 容器:

    docker compose up
    

享受您的 Weblate 部署,可以在 weblate 容器的埠 80 上進行存取。

也參考

呼叫管理指令

選擇 Docker 映像註冊表

Weblate 容器釋出到下列映像庫:

備註

所有範例目前從 Docker Hub 取得映像,請相應調整設定來使用另一個映像庫。

選擇 Docker 映像標籤

請選擇相符您的環境和預期的標籤:

標籤名稱

描述

使用案例

latest

Weblate 穩定版本,符合最新版本的發佈

在正式環境中滾動式更新

<YEAR>

Weblate 穩定版本

正式環境下日曆年內的滾動更新

<YEAR>.<MONTH>

Weblate 穩定版本

正式環境下月度版本內的滾動更新

<YEAR>.<MONTH>.<PATCH>.<BUILD>

Weblate 穩定版本

正式環境下定義良好的部署

edge

基於 Weblate 穩定版本作開發修正於 Docker 容器(例如更新依賴套件)

滾動式更新於暫存環境中

edge-<DATE>-<SHA>

基於 Weblate 穩定版本作開發修正於 Docker 容器(例如更新依賴套件)

明確定義其佈署版本於暫存環境中

bleeding

依 Git 上的 Weblate 開發版本

測試即將推出的 Weblate 功能的滾動更新

bleeding-<DATE>-<SHA>

依 Git 上的 Weblate 開發版本

明確定義其佈署版本來設定即將發佈的 Weblate 功能

每個映像在釋出之前都經過我們的 CI 測試,所以即使是 bleeding 版本也應該可以安全使用。

可以在 GitHub Packages 找到的已釋出標籤的完整清單

支援 HTTPS 的 Docker 容器

請參閱 安裝 以取得一般部署說明,本節僅提及與之相比的差異。

SSL 終止代理

可以在 Weblate 容器外終止 SSL。要達成它,需要將幾個標頭傳遞給容器,這樣容器可以知道其實際的環境。關於這些標頭的更詳細資訊見 在反向代理後面執行

適用於 Docker 容器的典型 nginx 反向代理設定。
location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_read_timeout 3600s;
    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;
}
適用於外部 SSL 終止的 Docker 容器環境。
WEBLATE_ENABLE_HTTPS=1
WEBLATE_IP_PROXY_HEADER=HTTP_X_FORWARDED_FOR

使用自己的 SSL 憑證

如果您要使用自己的 SSL 憑證,只需將檔案放入 Weblate 資料儲存區中(請參閱 Docker 容器儲存區):

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

  • ssl/privkey.pem 包含私密金鑰

擁有這兩個檔案的使用者必須與啟動 docker 容器並將檔案掩碼設定為 600(僅擁有使用者可讀可寫)的使用者為同一使用者。

此外,Weblate 容器現在將在連接埠 4443 上接受 SSL 連線,您將需要在 docker compose 覆寫中包含 HTTPS 連接埠轉發:

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

如果您已經在同一伺服器上託管其他網站,則反向代理(例如 NGINX )可能會使用連接埠 80443。要將 HTTPS 連線從 NGINX 傳遞到 docker 容器,可以使用以下設定:

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

    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 會很痛苦,並且在大多數情況下不會帶來很多好處。

您可以通過堅持使用現有的 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 資料庫應在首次啟動時自動移轉,並且不需要其他手動操作。

備註

只有目前或前一個日曆年度的發行版本支援直接升級。如果需要從更舊的版本升級,請先升級至 版本特定說明 中列出的中繼版本。

如不做本機變更使用範例 Compose 檔案,您也可以在 docker-compose 儲存庫中檢視更新,雖然多輸 Weblate 升級不需要。自訂的 Compose 檔案需作為部署的一部分加以維護。升級 PostgreSQL 伺服器的內容見 升級 PostgreSQL 容器

升級 PostgreSQL 容器

備註

PostgreSQL 18 變更了容器中的預設資料目錄。常見的舊版設定是將資料庫儲存區掛載至 /var/lib/postgresql/data,而 PostgreSQL 18 現在預設使用 /var/lib/postgresql

如果正在從老版本升級,要麼將 Docker 設定中的掛載目標更新到新路徑,要麼保留舊的掛載目標並相應設定 PGDATA

不設定 PGDATA 就保留舊的掛載目標可能導致 PostgreSQL 在持久磁碟區外面寫入其資料。

更多資訊見 PGDATA 文件

PostgreSQL 容器不支援版本間自動升級,需要手動升級。以下步驟顯示了升級選項之一。

  1. 停止 Weblate 容器:

    docker compose stop weblate cache
    
  2. 備份資料庫:

    docker compose exec database pg_dumpall --clean --if-exists --username weblate > backup.sql
    
  3. 停止資料庫容器:

    docker compose stop database
    
  4. 移除 PostgreSQL volume:

    docker compose rm -v database
    docker volume remove weblate-docker_postgres-data
    

    提示

    磁碟區名包含 Docker Compose 專案名,其預設為此文件中 weblate-docker 的目錄名。

  5. 調整 docker-compose.yml 以使用新的 PostgreSQL 版本。

  6. 啟動資料庫容器:

    docker compose up -d database
    
  7. 從備份中還原資料庫:

    cat backup.sql | docker compose exec -T database psql --username weblate --dbname weblate
    

    提示

    請檢查資料庫名稱是否與 POSTGRES_DB 相符。

  8. (選用)更新 Weblate 使用者的密碼。移轉到 PostgreSQL 14 或 15 時可能需要這麼做,因為密碼儲存方式發生了改變:

    docker compose exec -T database psql --username weblate --dbname weblate -c "ALTER USER weblate WITH PASSWORD 'weblate'"
    

    提示

    請檢查資料庫名稱是否與 POSTGRES_DB 相符。

  9. 啟動所有剩下的容器:

    docker compose up -d
    

系統管理員登入

設定容器之後,您可以使用 WEBLATE_ADMIN_PASSWORD 中提供的密碼以 管理員 使用者身分登入,或者如果未設定該密碼,則在首次啟動時產生隨機密碼。

要重設 管理員 密碼,請在 WEBLATE_ADMIN_PASSWORD 設定為新密碼的情況下重啟容器。

程式數量和記憶體消耗

WSGI 和 Celery 的工作處理程序數是根據 CPU 的數量自動確定的。這適用於大多數雲虛擬機器,因為這些虛擬機器通常具有很少的CPU和大量的記憶體。

在您有很多 CPU 核心並且碰到記憶體用盡問題情況下,嘗試減少 worker 的數量:

environment:
  WEBLATE_WORKERS: 2

您還可以微調單一 worker 類別:

environment:
  WEB_WORKERS: 4
  WEB_BLOCKING_THREADS: 4
  CELERY_MAIN_OPTIONS: --concurrency 2 --prefetch-multiplier 1
  CELERY_NOTIFY_OPTIONS: --concurrency 1 --prefetch-multiplier 4
  CELERY_MEMORY_OPTIONS: --concurrency 1 --prefetch-multiplier 1
  CELERY_TRANSLATE_OPTIONS: --concurrency 1 --prefetch-multiplier 1
  CELERY_BACKUP_OPTIONS: --concurrency 1 --prefetch-multiplier 1

預先擷取倍數會控制每個 worker 執行槽可保留的工作數量。預設值 1 可避免額外保留執行時間較長或資料量較大的工作。在此範例中,通知 worker 使用 4,因為其耗時較短的工作可受益於緩衝處理。只有在量測佇列延遲與 worker 記憶體用量後,才提高此值。

只執行單一 Celery 處理程序可進一步減少記憶體使用:

environment:
  CELERY_SINGLE_PROCESS: 1

水平擴展

在 4.6 版被加入.

您可以執行多個 Weblate 容器來水平擴充套件服務。/app/data 磁碟區必須由所有容器共享,建議使用叢集檔案系統,如 GlusterFS。對於每個容器,/app/cache 磁碟區應該是分開的。

每個 Weblate 容器都使用 WEBLATE_SERVICE 環境變數定義了角色。請仔細閱讀文件,因為某些服務應該在叢集中應只執行一次,並且服務的順序也很重要。

您可以在 docker-compose 儲存庫中找到範例設定,如 docker-compose-split.yml

Docker 環境變數

許多 Weblate 的 設定 可以透過環境變數設定到 Docker 容器中。

如果您需要定義不透過 Docker 環境變數公開的設定,請參考 環境變數以外的設定

傳遞秘密

在 5.0 版被加入.

Weblate 容器支援將 secrets 作為檔案進行傳遞。要達成它,請將 _FILE 字尾附加到環境變數並透過 Docker 傳遞 secret 檔案。

相關的 docker-compose.yml 看上去可能是這樣:

services:
   weblate:
      environment:
         POSTGRES_PASSWORD_FILE: /run/secrets/db_password
      secrets:
         - db_password
   database:
      environment:
         POSTGRES_PASSWORD_FILE: /run/secrets/db_password
      secrets:
         - db_password


secrets:
   db_password:
     file: db_password.txt

通用設定

WEBLATE_DEBUG

使用 DEBUG 設定 Django 除錯模式。

範例:

environment:
  WEBLATE_DEBUG: 1

也參考

停用除錯模式

WEBLATE_LOGLEVEL

設定日誌記錄詳細程度,將此設為 DEBUG 來獲得更詳細的日誌。

WEBLATE_DEBUG 關閉時,預設為 INFO,開啟除錯模式時也會使用 DEBUG 層級。

要靜默記錄更多的錯誤,請使用 ERRORWARNING 層級。

WEBLATE_LOGLEVEL_DATABASE

設定資料庫查詢紀錄的詳細程度。

WEBLATE_LOG_GELF_HOST

在 5.9 版被加入.

使用 GELF TCP 連線設定遠端日誌記錄。可被用於和 Graylog 整合。

WEBLATE_LOG_GELF_PORT

在 5.9 版被加入.

WEBLATE_LOG_GELF_HOST 使用自訂埠,預設為 12201。

WEBLATE_SITE_TITLE

變更所有頁面頁眉上顯示的網站標題。

WEBLATE_SITE_DOMAIN

設定網站網域。此參數必填。

包括埠,如果使用的是非標準埠。

範例:

environment:
  WEBLATE_SITE_DOMAIN: example.com:8080
WEBLATE_ADMIN_NAME
WEBLATE_ADMIN_EMAIL

設定網站管理員的名稱與電子郵件。這會同時用於 ADMINS 設定及建立 admin 使用者(詳情請參閱 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_NOTIFY_ERROR

是否在伺服器錯誤時給管理員傳送電子郵件。預設開啟。

您可能想使用其他錯誤收集工具,如 Sentry 或 Rollbar,並將此選項關閉。

WEBLATE_SERVER_EMAIL

傳送錯誤訊息的電子郵件地址。

WEBLATE_DEFAULT_FROM_EMAIL

設定用於傳出電子郵件的位址。

WEBLATE_ADMINS_CONTACT

設定 ADMINS_CONTACT

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_CAPTCHA

在 5.10 版被加入.

設定是否將人機驗證碼用於帳號註冊和其他未經身分驗證的操作,見 REGISTRATION_CAPTCHA

範例:

environment:
  WEBLATE_REGISTRATION_CAPTCHA: 0
WEBLATE_REGISTRATION_ALLOW_BACKENDS

設定可用於通過 REGISTRATION_ALLOW_BACKENDS 建立新帳號的身分驗證方法。

範例:

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

在 4.16 版被加入.

設定 REGISTRATION_REBIND

WEBLATE_REGISTRATION_ALLOW_DISPOSABLE_EMAILS

在 5.16.1 版被加入.

設定 REGISTRATION_ALLOW_DISPOSABLE_EMAILS

範例:

environment:
  WEBLATE_REGISTRATION_ALLOW_DISPOSABLE_EMAILS: 1
WEBLATE_PROJECT_WEB_RESTRICT_PRIVATE

在 5.17 版被加入.

設定 PROJECT_WEB_RESTRICT_PRIVATE

預設為啟用。

WEBLATE_PROJECT_WEB_RESTRICT_ALLOWLIST

在 5.17 版被加入.

設定 PROJECT_WEB_RESTRICT_ALLOWLIST

預期值為以逗號分隔的受信任專案代稱清單。

WEBLATE_WEBHOOK_RESTRICT_PRIVATE

在 5.17 版被加入.

設定 WEBHOOK_RESTRICT_PRIVATE

預設為啟用。

WEBLATE_WEBHOOK_PRIVATE_ALLOWLIST

在 5.17 版被加入.

設定 WEBHOOK_PRIVATE_ALLOWLIST

預期值為以逗號分隔的受信任主機名稱或網域清單。

WEBLATE_ALLOWED_ASSET_SIZE

在 2025.7 版被加入.

設定 ALLOWED_ASSET_SIZE

WEBLATE_ASSET_RESTRICT_PRIVATE

在 2025.5 版被加入.

設定 ASSET_RESTRICT_PRIVATE

預設為啟用。

WEBLATE_ASSET_PRIVATE_ALLOWLIST

在 2025.5 版被加入.

設定 ASSET_PRIVATE_ALLOWLIST

預期值為以逗號分隔的受信任主機名稱或網域清單。

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_NGINX_IPV6

在 5.17 版被加入.

控制捆綁的 NGINX 是否監聽 IPv6 地址。

支援的值有:

  • auto 表示僅當容器執行時 IPv6 可用時才啟用 IPv6 監聽器。這是預設設定。

  • on 表示始終啟用 IPv6 監聽器。

  • off 表示停用 IPv6 監聽器。

範例:

environment:
  WEBLATE_NGINX_IPV6: auto
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_IP_PROXY_OFFSET

在 5.0.1 版被加入.

設定 IP_PROXY_OFFSET

WEBLATE_USE_X_FORWARDED_PORT

在 5.0.1 版被加入.

布林值,用於明確是否在選項中對 SERVER_PORT META 變數使用 X-Forwarded-Port 標頭。除非使用設定了此標頭的代理,否則您不應該啟用它。

備註

這是一個布林值設定(使用 "true" 或者 "false")。

WEBLATE_SECURE_PROXY_SSL_HEADER

表示 HTTP 標頭和值組合的 tuple,用來指出要求是否安全。當 Weblate 位於終止 SSL、但未傳遞標準 HTTPS 標頭的反向 Proxy 後方時,需要設定此值。

範例:

environment:
  WEBLATE_SECURE_PROXY_SSL_HEADER: HTTP_X_FORWARDED_PROTO,https
WEBLATE_REQUIRE_LOGIN

啟用 REQUIRE_LOGIN 而在整個 Weblate 上強制認證。

範例:

environment:
  WEBLATE_REQUIRE_LOGIN: 1

在 Docker 部署中啟用 法律模組 模組。該整合預設停用;不設定此變數或留空來停用它。

支援的值有:

  • tos-confirm 以啟用法律模組並在社媒身分驗證期間和對已登入使用者強制確認服務條款。

  • wllegal 來啟用相同整合並額外從 wllegal 載入託管的法律文件範本。這些範本由 Weblate s.r.o. 運營的服務所使用,不用於一般用途。

要在 Docker 中提供自己的法律檔案,請覆蓋 /app/data/python/customize/templates/legal/documents 中的範本,見 取代標誌與其它靜態檔案

變更此環境變數後,請重新建立 Docker 容器,例如使用 docker compose up -d。重新啟動既有容器不會套用已變更的環境值。

範例:

environment:
  WEBLATE_LEGAL_INTEGRATION: tos-confirm

在啟用 WEBLATE_LEGAL_INTEGRATION 的 Docker 部署中設定 LEGAL_DOCUMENT_CSS_CLASS

Set this to the class targeted by your custom legal stylesheet. Set it to an empty string to render legal documents without a wrapper class.

範例:

environment:
  WEBLATE_LEGAL_DOCUMENT_CSS_CLASS: ""

在啟用 WEBLATE_LEGAL_INTEGRATION 的 Docker 部署中設定 LEGAL_HIDDEN_DOCUMENTS

提供以逗號分隔的法律文件頁面辨識碼清單。

範例:

environment:
  WEBLATE_LEGAL_HIDDEN_DOCUMENTS: contracts
WEBLATE_PUBLIC_ENGAGE

啟用 PUBLIC_ENGAGE

WEBLATE_GOOGLE_ANALYTICS_ID

透過 GOOGLE_ANALYTICS_ID 設定用於 Google Analytics 的 ID。

WEBLATE_DEFAULT_PULL_MESSAGE

透過變更 DEFAULT_PULL_MESSAGE 來設定使用 API 發起的拉取請求的預設標題和說明。

WEBLATE_SIMPLIFY_LANGUAGES

設定語言簡化策略,請參閱 SIMPLIFY_LANGUAGES

WEBLATE_HIDE_SHARED_GLOSSARY_COMPONENTS

將詞彙表元件分享至其他專案時予以隱藏;請參閱 HIDE_SHARED_GLOSSARY_COMPONENTS

WEBLATE_DEFAULT_ACCESS_CONTROL

為新專案設定預設的 存取控制,請參閱 DEFAULT_ACCESS_CONTROL

WEBLATE_DEFAULT_TRANSLATION_REVIEW

在 5.16 版被加入.

設定 啟用檢閱 的預設值,預設關閉。

WEBLATE_DEFAULT_SOURCE_REVIEW

在 5.16 版被加入.

設定 啟用來源檢閱 的預設值,預設關閉。

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_DEFAULT_AUTOCLEAN_TM

設定 DEFAULT_AUTOCLEAN_TM

WEBLATE_COMMIT_PENDING_HOURS

為新元件的 變更後提交的經過時間 設定預設值,請參閱 COMMIT_PENDING_HOURS

WEBLATE_GPG_IDENTITY

設定提交的 GPG 簽名,請參閱 WEBLATE_GPG_IDENTITY

WEBLATE_URL_PREFIX

設定 Weblate 執行的 URL 字首,請參閱 URL_PREFIX

WEBLATE_STATIC_URL

設定 CACHE_DIR 提供的靜態檔案的 URL 字首。

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
WEBLATE_CSP_FORM_SRC

允許定製 Content-Security-Policy HTTP 標頭。

WEBLATE_LICENSE_FILTER

設定 LICENSE_FILTER

WEBLATE_LICENSE_REQUIRED

設定 LICENSE_REQUIRED

WEBLATE_WEBSITE_REQUIRED

設定 WEBSITE_REQUIRED

WEBLATE_VERSION_DISPLAY

設定 VERSION_DISPLAY

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 版被加入.

設定速率限制器。

提示

您可以為任何速率限制器的範圍設定設定。要做到這一點,請在 速率限制 中描述的任何設定中新增 WEBLATE_ 字首。

WEBLATE_API_RATELIMIT_ANON
WEBLATE_API_RATELIMIT_USER

在 4.11 版被加入.

設定 API 速率限制。預設值如下:匿名使用者 100/day,已驗證身分使用者 5000/hour

也參考

API 速率限制

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,其為英文逗號所分隔的引數清單。

範例:

environment:
  WEBLATE_BORG_EXTRA_ARGS: --exclude,vcs/
WEBLATE_ENABLE_SHARING

在 4.14.1 版被加入.

設定 ENABLE_SHARING

WEBLATE_SUPPORT_STATUS_CHECK

在 5.5 版被加入.

設定 SUPPORT_STATUS_CHECK

WEBLATE_EXTRA_HTML_HEAD

在 4.15 版被加入.

設定 EXTRA_HTML_HEAD

WEBLATE_INTERNAL_BOT_EMAIL_TEMPLATE

在 2026.7.1 版被加入.

設定 INTERNAL_BOT_EMAIL_TEMPLATE

WEBLATE_PRIVATE_COMMIT_EMAIL_TEMPLATE

在 4.15 版被加入.

設定 PRIVATE_COMMIT_EMAIL_TEMPLATE

WEBLATE_PRIVATE_COMMIT_EMAIL_OPT_IN

在 4.15 版被加入.

設定 PRIVATE_COMMIT_EMAIL_OPT_IN

WEBLATE_PRIVATE_COMMIT_NAME_TEMPLATE

在 5.16 版被加入.

設定 PRIVATE_COMMIT_NAME_TEMPLATE

WEBLATE_PRIVATE_COMMIT_NAME_OPT_IN

在 5.16 版被加入.

設定 PRIVATE_COMMIT_NAME_OPT_IN

WEBLATE_UNUSED_ALERT_DAYS

在 4.17 版被加入.

設定 UNUSED_ALERT_DAYS

WEBLATE_REPORT_EXPIRY

在 2026.8 版被加入.

設定 REPORT_EXPIRY

WEBLATE_UPDATE_LANGUAGES

在 4.3.2 版被加入.

設定 UPDATE_LANGUAGES

WEBLATE_VCS_ALLOW_HOSTS

在 5.15 版被加入.

設定 VCS_ALLOW_HOSTS

WEBLATE_VCS_ALLOW_SCHEMES

在 5.15 版被加入.

設定 VCS_ALLOW_SCHEMES

WEBLATE_VCS_RESTRICT_PRIVATE

在 5.17 版被加入.

設定 VCS_RESTRICT_PRIVATE

WEBLATE_VCS_CLONE_DEPTH

在 5.4 版被加入.

設定 VCS_CLONE_DEPTH

WEBLATE_VCS_API_DELAY

在 5.4 版被加入.

設定 VCS_API_DELAY

WEBLATE_VCS_API_TIMEOUT

在 5.15 版被加入.

設定 VCS_API_TIMEOUT

WEBLATE_CORS_ALLOWED_ORIGINS

在 4.16 版被加入.

允許來自給定來源的到 API 的 CORS 請求。

範例:

environment:
  WEBLATE_CORS_ALLOWED_ORIGINS: https://example.com,https://weblate.org
WEBLATE_CORS_ALLOW_ALL_ORIGINS

在 5.6.1 版被加入: 允許來自所有來源的到 API 的 CORS 請求。

WEBLATE_WEBSITE_ALERTS_ENABLED

在 5.17 版被加入.

設定 WEBSITE_ALERTS_ENABLED

CLIENT_MAX_BODY_SIZE

在 4.16.3 版被加入.

設定內建 web 伺服器接受的最大內容大小。

environment:
    CLIENT_MAX_BODY_SIZE: 200m

提示

此變數刻意缺少 WEBLATE_ 字首,因它和 使用 Let’s Encrypt 自動產生 SSL 憑證 中所用的第三方容器共享。

WEBLATE_TRANSLATION_UPLOAD_MAX_SIZE

設定 TRANSLATION_UPLOAD_MAX_SIZE

該值單位為位元組。

WEBLATE_COMPONENT_ZIP_UPLOAD_MAX_SIZE

設定 COMPONENT_ZIP_UPLOAD_MAX_SIZE

該值單位為位元組。

WEBLATE_PROJECT_BACKUP_UPLOAD_MAX_SIZE

設定 PROJECT_BACKUP_UPLOAD_MAX_SIZE

此值的單位為位元組。請確認 CLIENT_MAX_BODY_SIZE 也足以容納上傳的備份檔案。

WEBLATE_PROJECT_BACKUP_IMPORT_MAX_MEMBERS

在 2026.5 版被加入.

設定 PROJECT_BACKUP_IMPORT_MAX_MEMBERS

WEBLATE_PROJECT_BACKUP_IMPORT_MAX_TOTAL_UNCOMPRESSED_SIZE

在 2026.5 版被加入.

設定 PROJECT_BACKUP_IMPORT_MAX_TOTAL_UNCOMPRESSED_SIZE

該值單位為位元組。

WEBLATE_PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_SIZE

在 2026.5 版被加入.

設定 PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_SIZE

該值單位為位元組。

WEBLATE_PROJECT_BACKUP_IMPORT_MIN_RATIO_SIZE

在 2026.5 版被加入.

設定 PROJECT_BACKUP_IMPORT_MIN_RATIO_SIZE

該值單位為位元組。

WEBLATE_PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_RATIO

在 2026.5 版被加入.

設定 PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_RATIO

程式碼託管網站認證資訊

在 Docker 容器中,您可以分別使用不同變數設定程式碼託管認證資訊,也可以使用 Python 字典一次完成設定。下列範例適用於 GitHub 拉取請求,但只要適當變更變數名稱,也適用於所有 版本控制整合

重要

所有環境變數名必須包含 WEBLATE_ 字首。例如,要設定 Weblate 憑證,使用 WEBLATE_GITHUB_USERNAME,而不是 GITHUB_USERNAME。不論是設定拉取請求還是其他任何 VCS 整合,這都適用。

GitHub 拉取請求的設定範例看上去像這樣:

WEBLATE_GITHUB_USERNAME=api-user
WEBLATE_GITHUB_TOKEN=api-token
WEBLATE_GITHUB_HOST=api.github.com

將用作:

GITHUB_CREDENTIALS = {
    "api.github.com": {
        "username": "api-user",
        "token": "api-token",
    }
}

此外,也可以將 Python 字典作為一條字串提供:

WEBLATE_GITHUB_CREDENTIALS='{ "api.github.com": { "username": "api-user", "token": "api-token", } }'

或者到包含該 Python 字典的檔案的路徑:

echo '{ "api.github.com": { "username": "api-user", "token": "api-token", } }' > /path/to/github-credentials
WEBLATE_GITHUB_CREDENTIALS_FILE='/path/to/github-credentials'
WEBLATE_GITHUB_USERNAME
WEBLATE_GITHUB_TOKEN
WEBLATE_GITHUB_HOST
WEBLATE_GITHUB_CREDENTIALS

透過變更 GITHUB_CREDENTIALS 設定 GitHub 拉取請求

GitHub App 會透過應用程式內的資訊清單流程註冊並儲存在資料庫中,因此沒有需要設定的 GitHub App 環境變數。請參閱 GitHub 通知

WEBLATE_GITLAB_USERNAME
WEBLATE_GITLAB_TOKEN
WEBLATE_GITLAB_HOST
WEBLATE_GITLAB_CREDENTIALS

透過變更 GITLAB_CREDENTIALS 設定 GitLab 合併請求

WEBLATE_GITEA_USERNAME
WEBLATE_GITEA_TOKEN
WEBLATE_GITEA_HOST
WEBLATE_GITEA_CREDENTIALS

透過變更 GITEA_CREDENTIALS 設定 Gitea 拉取請求

WEBLATE_PAGURE_USERNAME
WEBLATE_PAGURE_TOKEN
WEBLATE_PAGURE_HOST
WEBLATE_PAGURE_CREDENTIALS

透過變更 PAGURE_CREDENTIALS 設定 Pagure 合併請求

WEBLATE_BITBUCKETSERVER_USERNAME
WEBLATE_BITBUCKETSERVER_TOKEN
WEBLATE_BITBUCKETSERVER_HOST
WEBLATE_BITBUCKETSERVER_CREDENTIALS

透過變更 BITBUCKETSERVER_CREDENTIALS 設定 Bitbucket 資料中心拉取請求

WEBLATE_BITBUCKETCLOUD_USERNAME
WEBLATE_BITBUCKETCLOUD_WORKSPACE
WEBLATE_BITBUCKETCLOUD_TOKEN
WEBLATE_BITBUCKETCLOUD_HOST
WEBLATE_BITBUCKETCLOUD_CREDENTIALS

透過變更 BITBUCKETCLOUD_CREDENTIALS 設定 Bitbucket Cloud 拉取請求

WEBLATE_AZURE_DEVOPS_USERNAME
WEBLATE_AZURE_DEVOPS_ORGANIZATION
WEBLATE_AZURE_DEVOPS_TOKEN
WEBLATE_AZURE_DEVOPS_HOST
WEBLATE_AZURE_DEVOPS_CREDENTIALS

透過變更 AZURE_DEVOPS_CREDENTIALS 設定 Azure DevOps 拉取請求

自動建議設定

在 4.13 版的變更: 自動建議服務現在在使用者介面進行設定,見 自動建議

現有的環境變數在移轉到Weblate 4.13時被匯入,但改變它們不會有任何進一步的影響。

身分驗證設定

提示

除非透過 WEBLATE_NO_EMAIL_AUTH 停用,否則基於電子郵件的身分驗證將開啟。

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_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

針對作用中的目錄的搜尋與綁定範例:

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 身分驗證

GitHub 企業版

WEBLATE_SOCIAL_AUTH_GITHUB_ENTERPRISE_KEY
WEBLATE_SOCIAL_AUTH_GITHUB_ENTERPRISE_SECRET
WEBLATE_SOCIAL_AUTH_GITHUB_ENTERPRISE_URL
WEBLATE_SOCIAL_AUTH_GITHUB_ENTERPRISE_API_URL
WEBLATE_SOCIAL_AUTH_GITHUB_ENTERPRISE_SCOPE

啟用 GitHub EE 身分驗證

Bitbucket

WEBLATE_SOCIAL_AUTH_BITBUCKET_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_BITBUCKET_OAUTH2_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

Gitea

WEBLATE_SOCIAL_AUTH_GITEA_API_URL
WEBLATE_SOCIAL_AUTH_GITEA_KEY
WEBLATE_SOCIAL_AUTH_GITEA_SECRET

啟用 Gitea 身分驗證。

Microsoft Entra ID

WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET

啟用 Microsoft Entra ID 身分驗證,請參閱 Microsoft Entra ID

支援 Tenant 的 Microsoft Entra ID

WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET
WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID

啟用支援 Tenant 的 Microsoft Entra ID,請參閱 Microsoft Entra ID

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 身分驗證,請參閱 Keycloak - Open Source Red Hat SSO

WEBLATE_SOCIAL_AUTH_KEYCLOAK_ID_KEY

在 5.17 版被加入.

設定 Keycloak 宣告中用作唯一使用者辨識碼的欄位。預設為 email

提示

當 Keycloak 設定為抽象第三方 IDP,需要設定第三方 IDP 網域的 WEBLATE_CSP_FORM_SRC

範例當 Keycloak 正傳遞身分驗證到 Microsoft 時。
environment:
  WEBLATE_CSP_FORM_SRC: login.microsoftonline.com

Linux 供應商

您可以透過將後面的變數設定為任何值,使用 Linux 銷售商身分驗證服務來允許身分驗證。

WEBLATE_SOCIAL_AUTH_FEDORA
WEBLATE_SOCIAL_AUTH_OPENSUSE
WEBLATE_SOCIAL_AUTH_OPENINFRA
WEBLATE_SOCIAL_AUTH_UBUNTU

Slack

WEBLATE_SOCIAL_AUTH_SLACK_KEY
WEBLATE_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
WEBLATE_SOCIAL_AUTH_OIDC_TITLE
WEBLATE_SOCIAL_AUTH_OIDC_IMAGE

設定通用 OpenID Connect 整合。

Fedora OpenID Connect

在 5.15 版被加入.

WEBLATE_SOCIAL_AUTH_FEDORA_OIDC_KEY
WEBLATE_SOCIAL_AUTH_FEDORA_OIDC_SECRET

設定 Fedora OpenID Connect 整合。

也參考

Fedora

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_SAML_SECURITY_CONFIG

在 2026.6 版被加入.

SAML security configuration as a JSON object, passed to SOCIAL_AUTH_SAML_SECURITY_CONFIG. For example, to disable the requestedAuthnContext (needed for some identity providers such as Microsoft Entra ID with multi-factor authentication):

environment:
  WEBLATE_SAML_SECURITY_CONFIG: '{"requestedAuthnContext": false}'
WEBLATE_SAML_ID_ATTR_FULL_NAME
WEBLATE_SAML_ID_ATTR_FIRST_NAME
WEBLATE_SAML_ID_ATTR_LAST_NAME
WEBLATE_SAML_ID_ATTR_USERNAME
WEBLATE_SAML_ID_ATTR_EMAIL
WEBLATE_SAML_ID_ATTR_USER_PERMANENT_ID

在 4.18 版被加入.

SAML 屬性對映。

其他身分驗證設定

WEBLATE_NO_EMAIL_AUTH

當設定為任何值時禁止電子郵件身分驗證。請參閱 關閉密碼身分驗證

WEBLATE_MIN_PASSWORD_SCORE

最小的密碼得分由 zxcvbn 密碼長度預測器進行評估。預設為 3,設為 0 停用強度檢查。

PostgreSQL 資料庫設定

資料庫由 docker-compose.yml 建立,所以這些設定影響 Weblate 和 PostgreSQL 容器。

POSTGRES_PASSWORD

PostgreSQL 密碼。

也參考

傳遞秘密

POSTGRES_USER

PostgreSQL 使用者名稱。

POSTGRES_DB

PostgreSQL 資料庫名稱。

POSTGRES_HOST

PostgreSQL 伺服器主機名稱或 IP 位址。預設為 database

POSTGRES_PORT

PostgreSQL 伺服器連接埠。預設為無(使用預設值)。

POSTGRES_SSL_MODE

設定 PostgreSQL 如何處理 SSL 連線到伺服器,可能的選項請參閱 SSL Mode Descriptions

POSTGRES_ALTER_ROLE

設定在資料庫移轉過程要改變的 PostgreSQL 角色名稱,請參閱 設定 Weblate 來使用 PostgreSQL

預設為 POSTGRES_USER

POSTGRES_CONN_MAX_AGE

在 4.8.1 版被加入.

資料庫連線的壽命,以秒為單位的整數。使用0可以在每次請求結束時關閉資料庫連線。

在 5.1 版的變更: 預設行為是擁有無限制的永續性資料庫連線。

啟用連線永續性通常會導致更多的資料庫開放連線。請在啟用前調整您的資料庫設定。

設定範例:

environment:
    POSTGRES_CONN_MAX_AGE: 3600
POSTGRES_DISABLE_SERVER_SIDE_CURSORS

在 4.9.1 版被加入.

停用資料庫中的伺服器端遊標。這在一些 pgbouncer 設定中是必要的。

設定範例:

environment:
    POSTGRES_DISABLE_SERVER_SIDE_CURSORS: 1
WEBLATE_DATABASES

在 5.1 版被加入.

設為 false 停用基礎資料庫連線設定的環境。使用 覆寫來自資料儲存區的設定 手動設定資料庫連線。

資料庫備份設定

WEBLATE_DATABASE_BACKUP

使用 DATABASE_BACKUP 設定每日資料庫傾印。預設為 plain

資料儲存伺服器設定

Weblate 容器要求使用 Valkey 或 Redis, 在 Docker 中執行 Weblate 時必須提供連線引數。

也參考

設定快取

REDIS_HOST

資料儲存伺服器主機名稱或 IP 位址。預設為 cache

REDIS_PORT

資料儲存伺服器連接埠。預設為 6379

REDIS_DB

資料儲存資料庫編號,預設為 1

REDIS_USER

在 5.13 版被加入: 資料儲存資料庫使用者,預設不使用。

REDIS_PASSWORD

資料儲存伺服器密碼,預設不使用。

也參考

傳遞秘密

REDIS_TLS

啟用對資料儲存連線使用 SSL。

REDIS_VERIFY_SSL

可用於為資料儲存連線停用 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

電子郵件驗證使用者。

也參考

EMAIL_HOST_USER

WEBLATE_EMAIL_HOST_PASSWORD

電子郵件身分驗證密碼。

WEBLATE_EMAIL_USE_SSL

與 SMTP 伺服器通訊時是否使用隱式 TLS(安全)連線。在大多數電子郵件檔案中,這種 TLS 連線類型稱為 SSL。通常在連接埠 465 上使用。如果遇到問題,請參閱明確 TLS 設定 WEBLATE_EMAIL_USE_TLS

在 4.11 版的變更: SSL/TLS 支援是基於 WEBLATE_EMAIL_PORT 自動啟用。

WEBLATE_EMAIL_USE_TLS

與 SMTP 伺服器通訊時是否使用 TLS(安全)連接。這用於明確 TLS 連線,通常在連接埠 587 或 25 上。如果您遇到掛起的連接,請參閱隱式 TLS 設定 WEBLATE_EMAIL_USE_SSL

在 4.11 版的變更: SSL/TLS 支援是基於 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

設定 LEGAL_URL

WEBLATE_PRIVACY_URL

設定 PRIVACY_URL

WEBLATE_PASSWORD_RESET_URL

設定 PASSWORD_RESET_URL

收集錯誤報告與監測效能

建議從安裝中系統地收集錯誤,請參閱 收集錯誤報告與監測效能

要啟用對 Rollbar 的支援,請進行以下設定:

ROLLBAR_KEY

您的 Rollbar post server 存取權杖。

ROLLBAR_ENVIRONMENT

您的 Rollbar 環境,預設為 production

要啟用對 Sentry 的支援,請進行以下設定:

SENTRY_DSN

您的 Sentry DSN,請參閱 SENTRY_DSN

SENTRY_ENVIRONMENT

您的 Sentry 環境(選用),預設為 WEBLATE_SITE_DOMAIN

SENTRY_MONITOR_BEAT_TASKS

是否用 Sentry 監控 Celery Beat 任務,預設值是 True.

SENTRY_TRACES_SAMPLE_RATE

設定 SENTRY_TRACES_SAMPLE_RATE

範例:

environment:
  SENTRY_TRACES_SAMPLE_RATE: 0.5
SENTRY_PROFILES_SAMPLE_RATE

設定 SENTRY_PROFILES_SAMPLE_RATE

範例:

environment:
  SENTRY_PROFILES_SAMPLE_RATE: 0.5
SENTRY_SEND_PII

設定 SENTRY_SEND_PII

要啟用 Google 雲錯誤報告支援,請進行以下設定:

GOOGLE_CLOUD_ERROR_REPORTING_ENABLED

啟用 GOOGLE_CLOUD_ERROR_REPORTING,預設為 False

GOOGLE_CLOUD_ERROR_REPORTING_PROJECT

要回報錯誤的 Google Cloud 專案。如果省略,Google 用戶端會使用應用程式預設憑證來偵測專案。

GOOGLE_CLOUD_ERROR_REPORTING_SERVICE

在 Google Cloud Error Reporting 中使用的服務名稱,預設為 weblate

要啟用 OpenTelemetry 跟蹤支援,請進行以下設定:

OPENTELEMETRY_ENABLED

啟用 OPENTELEMETRY_ENABLED,預設為 False

OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT

設定 OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT

範例:

environment:
  OPENTELEMETRY_ENABLED: true
  OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT: https://collector.example.com/v1/traces
  OPENTELEMETRY_TRACES_SAMPLE_RATE: 0.1
OPENTELEMETRY_EXPORTER_OTLP_HEADERS

設定 OPENTELEMETRY_EXPORTER_OTLP_HEADERS,其為英文逗號所分隔的 name:value 對映。

OPENTELEMETRY_EXTRA_RESOURCE_ATTRIBUTES

設定 OPENTELEMETRY_EXTRA_RESOURCE_ATTRIBUTES,其為英文逗號所分隔的 name:value 對映。

OPENTELEMETRY_SERVICE_NAME

設定 OPENTELEMETRY_SERVICE_NAME

OPENTELEMETRY_TRACES_SAMPLE_RATE

設定 OPENTELEMETRY_TRACES_SAMPLE_RATE

在地化 CDN

WEBLATE_LOCALIZE_CDN_URL
WEBLATE_LOCALIZE_CDN_PATH

在 4.2.1 版被加入.

適用於 CDN 附加元件的設定,包含 JavaScript 在地化 CDN翻譯檔案 CDN

WEBLATE_LOCALIZE_CDN_PATH 是容器內的路徑。它應該儲存在持久儲存區上而不是臨時儲存區中。

一種可能性是儲存在 Weblate 資料目錄中:

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

備註

您負責設定Weblate產生的檔案的服務,它只在設定的位置儲存檔案。安全提供指南見 在地化 CDN

變更啟用的應用、檢查、格式、附加元件、機器翻譯或自動修復

可以透過後面的變數來調整允許的檢查、檔案格式、附加元件、機器翻譯或自動修復的內建設定:

WEBLATE_ADD_APPS
WEBLATE_REMOVE_APPS
WEBLATE_ADD_CHECK
WEBLATE_REMOVE_CHECK
WEBLATE_ADD_AUTOFIX
WEBLATE_REMOVE_AUTOFIX
WEBLATE_ADD_FORMATS
WEBLATE_REMOVE_FORMATS
WEBLATE_ADD_ADDONS
WEBLATE_REMOVE_ADDONS
WEBLATE_ADD_MACHINERY

在 5.6.1 版被加入.

WEBLATE_REMOVE_MACHINERY

在 5.6.1 版被加入.

範例:

environment:
  WEBLATE_REMOVE_AUTOFIX: weblate.trans.autofixes.whitespace.SameBookendingWhitespace
  WEBLATE_REMOVE_FORMATS: weblate.formats.ttkit.PoFormat
  WEBLATE_ADD_ADDONS: customize.addons.MyAddon,customize.addons.OtherAddon

容器設定

WEBLATE_WORKERS

在 4.6.1 版被加入.

在容器中執行的工人行程基數。未設定時,基於可用的CPU核心數,在容器啟動時自動確定。

其用於決定 CELERY_MAIN_OPTIONSCELERY_NOTIFY_OPTIONSCELERY_MEMORY_OPTIONSCELERY_TRANSLATE_OPTIONSCELERY_BACKUP_OPTIONSCELERY_BEAT_OPTIONSWEB_WORKERSWEB_BLOCKING_THREADS。您可以使用這些設定進行微調。

CELERY_MAIN_OPTIONS
CELERY_NOTIFY_OPTIONS
CELERY_MEMORY_OPTIONS
CELERY_TRANSLATE_OPTIONS
CELERY_BACKUP_OPTIONS
CELERY_BEAT_OPTIONS

這些變數可讓您調整 Celery worker 選項。您可以用它們調整並行處理數(--concurrency 16)、預先擷取(--prefetch-multiplier 4),或改用其他 pool 實作(--pool=gevent)。命令列選項的優先順序高於對應的 Celery 設定,因此每一類 worker 都可使用不同的預先擷取倍數。

並行 workers 的數量預設基於 WEBLATE_WORKERS

範例:

environment:
  CELERY_MAIN_OPTIONS: --concurrency 16 --prefetch-multiplier 1
CELERY_SINGLE_PROCESS

在 5.7.1 版被加入: 此變數可以設定為 1,以便只執行一個 Celery 處理程序。這會減少記憶體使用,但可能會影響 Weblate 效能。

environment:
  CELERY_SINGLE_PROCESS: 1
WEB_WORKERS

設定應該執行多少個 WSGI workers。

預設為 WEBLATE_WORKERS 的一半,但始終至少為 2。

範例:

environment:
  WEB_WORKERS: 4

在 5.13 版的變更: WEB_WORKERS 設定 granian 要使用的 worker 處理程序數量。

WEB_BLOCKING_THREADS

設定每個 granian worker 可使用的阻塞式 WSGI 執行緒數量。預設值為 WEBLATE_WORKERS 的 2 倍。

同時處理的 WSGI 請求數上限約為 WEB_WORKERS 乘以 WEB_BLOCKING_THREADS。每個執行緒都可能各自占用一個資料庫連線,因此請確保計算後的總數不超過資料庫連線上限。

範例:

environment:
  WEB_WORKERS: 2
  WEB_BLOCKING_THREADS: 8
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

網路伺服器。

也參考

背景工作內部

WEBLATE_ANUBIS_URL

在 5.11.4 版被加入.

用於處理子要求身分驗證的 Anubis 伺服器 URL。這可透過工作量證明篩選傳入的 HTTP 要求,阻止 AI 爬蟲。您必須設定 Anubis for Subrequest Authentication,這項功能才能運作。

Docker 容器儲存區

Weblate 容器匯出了兩個磁碟區(datacache)。

備註

其他服務容器(如 PostgreSQL 或 Valkey)也有它們的資料磁碟區,需要保持 Weblate 永續性。

PostgreSQL 容器在 /var/lib/postgresql 磁碟區中儲存資料庫,Valkey 容器在 /data 磁碟區中儲存資料庫。Valkey 容器預設不儲存資料,需要額外設定來啟用永續性。

以 Weblate 提供的範例作為設定的基礎或者檢視文件取得更多資訊。

data 磁碟區作為 /app/data 裝載並被用來儲存複製的儲存庫等 Weblate 持久資料或者定製 Weblate 安裝。DATA_DIR 更詳細描述了儲存內容。

data 也儲存像是 覆寫來自資料儲存區的設定取代標誌與其它靜態檔案自訂程式碼 之類的 Weblate 自訂設定。

Docker 磁碟區在主機系統上的位置取決於您的 Docker 設定,但通常儲存在 /var/lib/docker/volumes/weblate-docker_weblate-data/_data/ 中。(該路徑由您的 docker-compose 目錄的名稱、容器和磁碟區的名稱組成)。

cache 磁碟區被掛載為 /app/cache,用於儲存靜態檔案和 CACHE_DIR。它的內容在容器啟動時被重新建立,磁碟區可以使用短暫的檔案系統(如 tmpfs)掛載,但掛載必須允許執行,因為 Weblate 在那裡儲存產生的助手檔案。

在 Docker Compose 中將 /app/cache 明確掛載為 tmpfs 時,請啟用執行功能:

tmpfs:
  - /app/cache:exec

同時設定擁有權選項時,請保留 exec 選項:

tmpfs:
  - /app/cache:exec,uid=1000,gid=1000

當手動建立 volumes 時,請在容器中指定的資料夾擁有者權限設定為 UID 1000。

Weblate 容器也可以搭配唯讀 root 檔案系統執行。在此情況下,應該掛載兩個額外的 tmpfs 儲存區:/tmp/run

唯讀 root 檔案系統

在 4.18 版被加入.

執行唯讀根檔案系統的容器時,需要兩個額外的 tmpfs 磁碟區 - /tmp/run

環境變數以外的設定

Docker 環境變數 旨在公開大部分與 Weblate 安裝相關的 設定

如果您發現沒有作為環境變數公開的設定,並且您認為它應該公開,請隨時 要求在未來版本的 Weblate 中公開它

如果您需要修改未公開為 Docker 環境變數的設定,您仍然可以這樣做,要麼 來自資料磁碟區,要麼 擴充套件 Docker 映像

也參考

自訂 Weblate

覆寫來自資料儲存區的設定

您可以在 /app/data/settings-override.py 建立一個檔案,即在 資料磁碟區 的根目錄,以擴充套件或覆蓋透過環境變數定義的設定。

透過擴充套件 Docker 映像覆蓋設定

要在 Docker 映像層級而不是從資料磁碟區覆蓋設定:

  1. 建立自訂 Python 套件

  2. 將一個模組新增到您的包中,該模組從 weblate.settings_docker 匯入所有設定。

    例如,在 建立 Python 模組weblate_customization/weblate_customization/settings.py 定義的範例包結構中,您可以使用以下初始程式碼建立一個檔案:

    from weblate.settings_docker import *
    
  3. 建立一個繼承自官方 Weblate Docker 映像的自訂 Dockerfile,然後安裝您的包並將 DJANGO_SETTINGS_MODULE 環境變數指向您的設定模組:

    FROM weblate/weblate
    
    USER root
    
    COPY weblate_customization /usr/src/weblate_customization
    RUN source /app/venv/bin/activate && uv pip install --no-cache-dir /usr/src/weblate_customization
    ENV DJANGO_SETTINGS_MODULE=weblate_customization.settings
    
    USER 1000
    
  4. 不要使用官方的 Weblate Docker 映像,而是從這個 Dockerfile 檔案建置一個自訂映像。

    使用 docker-compose.override.yml無法乾淨地 做到這一點。您 可以build: . 新增到該檔案中的 weblate 節點,但隨後您的自訂映像將在系統中被打上 weblate/weblate 的標籤,這可能會出問題。

    因此,比起原封不動直接套用來自 官方儲存庫docker-compose.yml,並透過 docker-compose.override.yml 進行擴充套件,您或許想要複製一份 docker-compose.yml 檔案對其進行編輯,然後藉助 build: . 用編輯後的檔案替換 image: weblate/weblate.

    有關使用 docker-compose 時從原始碼建置映像的詳情請見 Compose file build reference.

  5. 擴充您的自訂設定模組以定義或重新定義設定。

    您可以定義上方 import 語句之前或之後的設定,以確定哪些設定優先。import 語句之前定義的設定可以被環境變數和資料磁碟區中定義的設定覆蓋所覆蓋。不能覆蓋 import 語句後定義的設定。

    您也可以更進一步。例如,您可以重現一些 weblate.docker_settings 所做的事,如將設定暴露為環境變數,或允許在資料磁碟區中覆蓋來自 Python 檔案的設定。

取代標誌與其它靜態檔案

Weblate 附帶的靜態檔案可以通過放置到 /app/data/python/customize/static 中來覆寫(請參閱 Docker 容器儲存區)。例如,建立 /app/data/python/customize/static/favicon.ico 將替換 favicon。

提示

在容器啟動時,這些檔案被複製到相應的位置,因此需要在變更儲存區的內容後重新啟動 Weblate。

This approach can be also used to override Weblate templates. For example, custom 法律模組 documents and styles can be provided as described in Customizing legal documents and styles.

或者,您也可以包括自己的模組(請參閱 自訂 Weblate),並將其作為單獨的捲新增到 Docker 容器中,例如:

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

自訂程式碼

備註

不同版本的 Weblate 內部 API 可能差異巨大,並不穩定。請在每次升級時稽核與 Weblate 內部 API 互動的自訂程式碼。

您可以將額外的 Python 程式碼放進 /app/data/python/customize(見:Docker 容器儲存區)。它已作為 Weblate 內的一個 Django 程式被安裝(如上所述,這是用來自訂範本和靜態檔案)。

這可被用來放置任何程式碼(如 撰寫自訂檢查)或新增自訂維護任務到 Celery 任務計劃程式。

An example of custom scheduled tasks in /app/data/python/customize/tasks.py.
"""Custom scheduled task."""

# ruff: ignore[suspicious-subprocess-import]
import subprocess

from celery.schedules import crontab

from weblate.utils.celery import app


@app.task
def custom_task() -> None:
    """Execute custom task code."""
    # ruff: ignore[start-process-with-partial-path]
    subprocess.run(["sleep", "1"], check=True)


@app.on_after_finalize.connect
def setup_periodic_tasks(sender, **kwargs) -> None:
    """Configure when periodic task is triggered."""
    sender.add_periodic_task(
        crontab(hour=1, minute=0), custom_task.s(), name="custom-task"
    )

整合第三方容器

可以用附加容器擴充套件 Weblate Docker 設定來提供補充性服務,例如機器翻譯、拼寫檢查或其他增強翻譯工作流的工具。這些服務可以整合進 Docker Compose 設定中,和 Weblate 一起工作。

新增第三方容器時,考慮下列因素:

  • 網路連線:將容器放在相同的 Docker 網路上確保不同容器能彼此通訊

  • 資料永續性:對需要留存資料的服務使用磁碟區

  • 安全:設定恰當的存取控制,避免暴露不必要的埠

LibreTranslate Docker 容器整合

LibreTranslate 是可以自託管的自由開源的機器翻譯服務。將它與 Weblate 整合提供不依賴外部服務的離線機器翻譯能力。

您可以把 LibreTranslate 服務加到 Weblate 部署中,方法是在 docker-compose.override.yml 檔案中包含它。因它執行在 Docker 網路內部,所以只有 Weblate 能存取,不會暴露在公網上。

使用 docker-compose.override.yml 的基礎設定:

services:
  libretranslate:
    image: libretranslate/libretranslate:latest
    command: --disable-web-ui
    restart: unless-stopped
    environment:
      LT_UPDATE_MODELS: true
    volumes:
      - libretranslate_models:/home/libretranslate/.local:rw
    healthcheck:
      test: ['CMD-SHELL', './venv/bin/python scripts/healthcheck.py']
      interval: 10s
      timeout: 4s
      retries: 4
      start_period: 5s

volumes:
  libretranslate_models:

對於 GPU 加速的翻譯(如果您有 NVIDIA GPU 可用):

services:
  libretranslate:
    image: libretranslate/libretranslate:latest-cuda
    command: --disable-web-ui
    restart: unless-stopped
    environment:
      LT_UPDATE_MODELS: true
      PUID: root
    volumes:
      - libretranslate_models:/home/libretranslate/.local:rw
    healthcheck:
      test: ['CMD-SHELL', './venv/bin/python scripts/healthcheck.py']
      interval: 10s
      timeout: 4s
      retries: 4
      start_period: 5s
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

volumes:
  libretranslate_models:

docker compose down && docker compose up -d 啟動服務後,在 Weblate 中設定 LibreTranslate:

  1. 存取 Weblate 管理員介面

  2. 導覽至 機器翻譯自動建議

  3. 新增新的 LibreTranslate 服務的途徑:

    服務:

    LibreTranslate

    API URL:

    http://libretranslate:5000

    API 金鑰:

    留空

LibreTranslate 現在於 Weblate 中可被設定及用於機器翻譯。

備註

  • LibreTranslate 服務執行沒有 web 使用者介面(--disable-web-ui),只能透過 API 在 Docker 網路內部存取。

  • 容器啟動時,模型會自動更新。(LT_UPDATE_MODELS: true)

  • 出於最優效能和資料安全目的用 Docker 磁碟區留存資料。

  • 健康檢查確保 Docker 引擎正確觀測服務狀態。

  • 對 GPU 加速,使用 CUDA 映像並保證系統有 NVIDIA Docker 支援。為了能使用 GPU,這個容器以特權使用者身分執行。

  • 無外部連接埠被公開,確保設定預設為安全。

Anubis Docker 容器整合

Anubis 是個網路 AI 防火牆工具,用於封鎖 AI 爬蟲與其他會干擾伺服器的流量。公開 Weblate 安裝環境通常需要它以避免因大量爬取而造成過度負載。

可用 Docker Compose 部署 Anubis:

anubis:
   image: ghcr.io/techarohq/anubis:latest
   environment:
      BIND: ":8923"
      DIFFICULTY: "4"
      METRICS_BIND: ":9090"
      SERVE_ROBOTS_TXT: "false"
      OG_PASSTHROUGH: "false"
      # The single space in TARGET enables subrequest authentication
      TARGET: " "
      # The redirect domain has to match WEBLATE_SITE_DOMAIN
      REDIRECT_DOMAINS: weblate.example.com
      # Generate a random private key using: openssl rand -hex 32
      ED25519_PRIVATE_KEY_HEX: "..."
      # Customize your Anubis policy
      POLICY_FNAME: /data/botPolicies.yaml
   healthcheck:
      test: ["CMD", "anubis", "--healthcheck"]
      interval: 5s
      timeout: 30s
      retries: 5
      start_period: 500ms
   volumes:
      - anubis-data:/data

volumes:
   anubis-data:

備註

以上設定中的 anubis-data 磁碟區預計含有按您的需要設定了 bot 策略的 botPolicies.yaml 檔案。

您至少需要按 https://anubis.techaro.lol/docs/admin/configuration/subrequest-auth 所述調整狀態碼。

同樣建議按 https://anubis.techaro.lol/docs/admin/policies/#storage-backends 所述設定持久化儲存後端。

接著您可以用下列指令在 Weblate 中開啟 Anubis:

environment:
   WEBLATE_ANUBIS_URL: http://anubis:8923

也參考

WEBLATE_ANUBIS_URL

設定 PostgreSQL 伺服器

PostgreSQL容器使用預設的PostgreSQL設定,它不會有效地利用您的CPU核心或記憶體。建議自訂設定以提高效能。

設定可以按照 https://hub.docker.com/_/postgres 資料庫設定 中的描述來調整。相符您的環境的設定可以使用 https://pgtune.leopard.in.ua/

容器內部

容器使用 supervisor 來啟動單一服務。遇到 水平擴展,它只在一個容器中啟動單一服務。

要確認服務狀態請使用:

docker compose exec --user weblate weblate supervisorctl status

每個 Celery 佇列有單獨服務(詳見 使用 Celery 的背景工作)。您可以停止相應的 工作程序來停止處理某些任務:

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