Memasang menggunakan Docker

Dengan penyebaran Weblate yang terdokerisasi, Anda dapat langsung menjalankan instansi Weblate pribadi Anda dalam hitungan detik. Semua dependensi Weblate sudah disertakan. PostgreSQL diatur sebagai basis data bawaan dan Valkey sebagai backend simpanan.

Persyaratan perangkat keras

Weblate seharusnya dapat berjalan pada perangkat keras apa pun saat ini tanpa masalah, berikut ini adalah konfigurasi minimal yang diperlukan untuk menjalankan Weblate pada hos tunggal (Weblate, basis data, dan server web):

  • RAM 3 GB

  • 2 inti CPU

  • Ruang penyimpanan 1 GB

Catatan

Persyaratan sebenarnya untuk pemasangan Weblate Anda sangat bervariasi berdasarkan ukuran terjemahan yang dikelola di dalamnya.

Penggunaan memori

Semakin besar memori, semakin baik - memori tersebut digunakan untuk penyimpanan di semua tingkatan (sistem berkas, basis data, dan Weblate). Untuk ratusan komponen terjemahan, RAM minimal 4 GB direkomendasikan.

Petunjuk

Untuk sistem dengan memori lebih sedikit dari yang direkomendasikan, Pengaturan Celery proses tunggal direkomendasikan.

Penggunaan CPU

Banyak pengguna bersamaan meningkatkan jumlah inti CPU yang diperlukan.

Penggunaan penyimpanan

Penggunaan penyimpanan basis data pada umumnya adalah sekitar 300 MB per 1 juta kata yang dihos.

Ruang penyimpanan yang dibutuhkan untuk repositori kloning bervariasi, tetapi Weblate mencoba menjaga ukurannya tetap minimal dengan melakukan kloning dangkal.

Simpul

Untuk situs berukuran kecil dan menengah (jutaan kata yang dihos), semua komponen Weblate (lihat Ikhtisar arsitektur) dapat dijalankan pada satu simpul.

Saat jumlah kata yang dihos mencapai ratusan juta, sebaiknya miliki simpul khusus untuk basis data (lihat Pengaturan basis data untuk Weblate).

Pemasangan

Petunjuk

Contoh berikut mengasumsikan Anda memiliki lingkungan Docker yang berfungsi, dengan docker-compose-plugin terpasang. Silakan periksa dokumentasi Docker untuk petunjuk.

Ini akan membuat server penyebaran Weblate melalui HTTP, jadi Anda harus menempatkannya di belakang proksi terminasi HTTPS. Anda juga dapat menyebarkan dengan proksi HTTPS, lihat Sertifikat SSL otomatis menggunakan Let’s Encrypt. Untuk pengaturan yang lebih besar, silakan lihat Menskalakan secara horizontal.

  1. Kloning repo weblate-docker:

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

    Catatan

    The Docker Compose files are example deployment configurations. Operators typically customize them for their own deployment and maintain those local changes. Weblate application updates are delivered through Docker image tags; there is no release-bound update path for customized Compose files.

  2. Buat berkas docker-compose.override.yml dengan pengaturan Anda. Lihat Variabel lingkungan Docker untuk daftar lengkap variabel lingkungan.

    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
    

    Catatan

    Jika WEBLATE_ADMIN_PASSWORD tidak diatur, pengguna admin dibuat dengan kata sandi acak yang ditampilkan saat pertama kali dinyalakan.

    Contoh yang diberikan membuat Weblate mendengarkan pada port 80, sunting pemetaan port dalam berkas docker-compose.override.yml untuk mengubahnya.

  3. Mulai kontainer Weblate:

    docker compose up
    

Nikmati penerapan Weblate Anda, yang dapat diakses pada port 80 kontainer weblate.

Memilih registri gambar Docker

Kontainer Weblate dipublikasikan ke registri berikut:

Catatan

Semua contoh saat ini mengambil gambar dari Docker Hub, harap sesuaikan konfigurasi untuk menggunakan registri yang berbeda.

Memilih tag gambar Docker

Silakan pilih tag yang sesuai dengan lingkungan dan harapan Anda:

Nama tag

Deskripsi

Kasus penggunaan

latest

Rilis stabil Weblate, cocok dengan rilis terbaru yang diberi tag

Pembaruan bergulir dalam lingkungan produksi

<YEAR>

Rilis stabil Weblate

Rolling updates within a calendar year in a production environment

<YEAR>.<MONTH>

Rilis stabil Weblate

Rolling updates within a monthly release in a production environment

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

Rilis stabil Weblate

Penyebaran yang didefinisikan dengan baik dalam lingkungan produksi

edge

Rilis stabil Weblate dengan perubahan pengembangan pada kontainer Docker (misalnya dependensi yang diperbarui)

Pembaruan bergulir dalam lingkungan bertahap

edge-<DATE>-<SHA>

Rilis stabil Weblate dengan perubahan pengembangan pada kontainer Docker (misalnya dependensi yang diperbarui)

Penyebaran yang didefinisikan dengan baik dalam lingkungan bertahap

bleeding

Versi pengembangan Weblate dari Git

Rolling updates to test upcoming Weblate features

bleeding-<DATE>-<SHA>

Versi pengembangan Weblate dari Git

Penyebaran yang didefinisikan dengan baik untuk menguji fitur Weblate yang akan datang

Setiap gambar diuji oleh CI kami sebelum dipublikasikan, jadi bahkan versi bleeding pun seharusnya cukup aman untuk digunakan.

Daftar lengkap tag yang dipublikasikan dapat ditemukan di Paket GitHub

Kontainer Docker dengan dukungan HTTPS

Silakan lihat Pemasangan untuk petunjuk penerapan umum, bagian ini hanya menyebutkan perbedaan dibandingkan dengannya.

Proksi penghentian SSL

SSL dapat dihentikan di luar kontainer Weblate. Agar berfungsi dengan baik, beberapa kepala perlu diteruskan ke kontainer agar itu mengetahui lingkungannya yang sebenarnya. Rincian lebih lanjutnya, kepala ini dijelaskan di Berjalan di belakang proksi terbalik.

Contoh konfigurasi proksi terbalik nginx untuk kontainer Docker.
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;
}
Lingkungan kontainer Docker untuk penghentian SSL eksternal.
WEBLATE_ENABLE_HTTPS=1
WEBLATE_IP_PROXY_HEADER=HTTP_X_FORWARDED_FOR

Menggunakan sertifikat SSL sendiri

Jika Anda memiliki sertifikat SSL sendiri yang ingin digunakan, cukup tempatkan berkas ke dalam volume data Weblate (lihat Volume kontainer Docker):

  • ssl/fullchain.pem yang berisi sertifikat termasuk sertifikat CA yang diperlukan

  • ssl/privkey.pem yang berisi kunci privat

Kedua berkas ini harus dimiliki oleh pengguna yang sama dengan pengguna yang memulai kontainer docker dan memiliki mask berkas yang diatur ke 600 (hanya dapat dibaca dan ditulis oleh pengguna pemiliknya).

Selain itu, kontainer Weblate sekarang akan menerima sambungan SSL pada port 4443, Anda ingin menyertakan penerusan port untuk HTTPS dalam penimpaan docker compose:

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

Jika Anda sudah menghosting situs lain di server yang sama, kemungkinan port 80 dan 443 digunakan oleh proksi terbalik, seperti NGINX. Untuk meneruskan sambungan HTTPS dari NGINX ke kontainer Docker, Anda dapat menggunakan konfigurasi berikut:

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>;
    }
}

Ganti <SITE_URL>, <SITE> dan <EXPOSED_DOCKER_PORT> dengan nilai aktual dari lingkungan Anda.

Sertifikat SSL otomatis menggunakan Let’s Encrypt

Jika Anda ingin menggunakan sertifikat SSL yang dihasilkan secara otomatis oleh Let's Encrypt pada instalasi publik, Anda perlu menambahkan proksi HTTPS terbalik. Kontainer Docker tambahan, https-portal, akan digunakan untuk itu. Ini digunakan dalam berkas docker-compose-https.yml. Kemudian, buat berkas docker-compose-https.override.yml dengan pengaturan Anda:

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'

Jika memanggil docker compose Anda perlu meneruskan kedua berkas ke sana, lalu lakukan:

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

Meningkatkan kontainer Docker

Biasanya merupakan ide yang baik untuk hanya memperbarui kontainer Weblate dan mempertahankan kontainer PostgreSQL pada versi yang Anda miliki, karena peningkatan PostgreSQL cukup menyulitkan dan dalam kebanyakan kasus tidak membawa banyak manfaat.

Anda dapat melakukan ini dengan tetap menggunakan docker-compose yang ada dan cukup tarik gambar terbaru lalu mulai ulang:

# 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

Basis data Weblate seharusnya otomatis termigrasi saat pertama kali dijalankan, dan tidak diperlukan tindakan manual tambahan.

Catatan

Direct upgrades are only supported for releases from the current or previous calendar year. If you need to upgrade from an older release, upgrade first to an intermediate version listed in Petunjuk spesifik versi.

If you use the example Compose files without local changes, you can also review updates in the docker-compose repository, though this is not needed for most Weblate upgrades. Customized Compose files need to be maintained as part of your deployment. See Meningkatkan kontainer PostgreSQL for upgrading the PostgreSQL server.

Meningkatkan kontainer PostgreSQL

Catatan

PostgreSQL 18 changed the default data directory inside the container. A common older setup mounted the database volume at /var/lib/postgresql/data, while PostgreSQL 18 now uses /var/lib/postgresql by default.

If you are upgrading from an older version, either update the mount target in your Docker configuration to the new path, or keep the old mount target and set PGDATA accordingly.

Leaving the old mount target unchanged without setting PGDATA can cause PostgreSQL to write its data outside the persisted volume.

See PGDATA documentation for more information.

Kontainer PostgreSQL tidak mendukung peningkatan otomatis antar versi, Anda perlu melakukan peningkatan secara manual. Langkah berikut menunjukkan salah satu opsi peningkatan.

  1. Hentikan Weblate container:

    docker compose stop weblate cache
    
  2. Cadangkan basis data:

    docker compose exec database pg_dumpall --clean --if-exists --username weblate > backup.sql
    
  3. Hentikan kontainer basis data:

    docker compose stop database
    
  4. Hapus volume PostgreSQL:

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

    Petunjuk

    Nama volume berisi nama proyek Docker Compose, yang secara bawaan adalah nama direktori weblate-docker dalam dokumentasi ini.

  5. Sesuaikan docker-compose.yml untuk menggunakan versi PostgreSQL baru.

  6. Mulai kontainer basis data:

    docker compose up -d database
    
  7. Pulihkan basis data dari cadangan:

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

    Petunjuk

    Silakan periksa apakah nama basis data cocok dengan POSTGRES_DB.

  8. (Opsional) Perbarui kata sandi untuk pengguna Weblate. Ini mungkin diperlukan saat bermigrasikan ke PostgreSQL 14 atau 15 karena cara penyimpanan kata sandi telah diubah:

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

    Petunjuk

    Silakan periksa apakah nama basis data cocok dengan POSTGRES_DB.

  9. Mulai semua kontainer yang tersisa:

    docker compose up -d
    

Masuk admin

Setelah pengaturan kontainer, Anda dapat masuk sebagai pengguna admin dengan kata sandi yang diberikan di WEBLATE_ADMIN_PASSWORD, atau kata sandi acak yang dibuat saat pertama kali memulai jika tidak diatur.

Untuk mengatur ulang kata sandi admin, mulai ulang kontainer dengan WEBLATE_ADMIN_PASSWORD yang diatur ke kata sandi baru.

Jumlah proses dan konsumsi memori

Jumlah proses pekerja untuk WSGI dan Celery ditentukan secara otomatis berdasarkan jumlah CPU. Hal ini berfungsi dengan baik untuk sebagian besar mesin virtual cloud karena biasanya memiliki CPU yang sedikit dan memori yang memadai.

Jika Anda memiliki banyak inti CPU dan mengalami isu memori, coba kurangi jumlah worker:

environment:
  WEBLATE_WORKERS: 2

Anda juga dapat menyempurnakan kategori pekerja individual:

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

Penggunaan memori dapat dikurangi lebih lanjut dengan hanya menjalankan satu proses Celery:

environment:
  CELERY_SINGLE_PROCESS: 1

Menskalakan secara horizontal

Added in version 4.6.

Anda dapat menjalankan beberapa kontainer Weblate untuk menskalakan layanan secara horizontal. Volume /app/data harus digunakan bersama oleh semua kontainer. Disarankan untuk menggunakan sistem berkas klaster seperti GlusterFS untuk ini. Volume /app/cache harus terpisah untuk setiap kontainer.

Setiap kontainer Weblate memiliki peran yang ditentukan menggunakan variabel lingkungan WEBLATE_SERVICE. Harap ikuti dokumentasi dengan saksama karena beberapa layanan hanya boleh dijalankan sekali dalam klaster, dan urutan layanan juga penting.

Anda dapat menemukan contoh pengaturan di repo docker-compose sebagai docker-compose-split.yml.

Variabel lingkungan Docker

Banyak Konfigurasi Weblate yang dapat diatur dalam kontainer Docker menggunakan variabel lingkungan yang dijelaskan di bawah ini.

Jika Anda perlu menentukan pengaturan yang tidak diekspos melalui variabel lingkungan Docker, lihat Konfigurasi di luar variabel lingkungan.

Rahasia yang melewati

Added in version 5.0.

Kontainer Weblate mendukung penerusan rahasia sebagai berkas. Untuk memanfaatkannya, tambahkan sufiks _FILE ke variabel lingkungan dan teruskan berkas rahasia melalui Docker.

Terkait docker-compose.yml mungkin terlihat seperti:

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

Pengaturan umum

WEBLATE_DEBUG

Mengkonfigurasikan mode awakutu Django menggunakan DEBUG.

Contoh:

environment:
  WEBLATE_DEBUG: 1
WEBLATE_LOGLEVEL

Mengkonfigurasikan verbositas pencatatan. Atur ini ke DEBUG untuk mendapatkan catatan yang lebih rinci.

Bawaannya adalah INFO ketika WEBLATE_DEBUG dimatikan, DEBUG digunakan ketika mode awakutu dinyalakan.

Untuk pencatatan yang lebih senyap gunakan ERROR atau WARNING.

WEBLATE_LOGLEVEL_DATABASE

Mengkonfigurasikan pencatatan verbositas kueri basis data.

WEBLATE_LOG_GELF_HOST

Added in version 5.9.

Mengonfigurasi pencatatan jarak jauh menggunakan sambungan TCP GELF. Dapat digunakan untuk integrasi dengan Graylog.

WEBLATE_LOG_GELF_PORT

Added in version 5.9.

Gunakan port kustom untuk WEBLATE_LOG_GELF_HOST, bawaannya adalah 12201.

WEBLATE_SITE_TITLE

Mengubah judul situs yang ditampilkan di kepala semua halaman.

WEBLATE_SITE_DOMAIN

Mengkonfigurasikan domain situs. Parameter ini diperlukan.

Sertakan port jika menggunakan port non-standar.

Contoh:

environment:
  WEBLATE_SITE_DOMAIN: example.com:8080
WEBLATE_ADMIN_NAME
WEBLATE_ADMIN_EMAIL

Mengkonfigurasikan nama dan surel admin situs. Ini digunakan untuk pengaturan ADMINS dan pembuatan pengguna admin (lihat WEBLATE_ADMIN_PASSWORD untuk informasi lebih lanjut).

Contoh:

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

Mengatur kata sandi untuk pengguna admin.

  • Jika tidak diatur dan pengguna admin tidak ada, maka akan dibuat dengan kata sandi acak yang ditampilkan saat kontainer pertama kali dinyalakan.

  • Jika tidak diatur dan pengguna admin ada, tidak ada tindakan yang dilakukan.

  • Jika diatur, pengguna admin akan disesuaikan pada setiap permulaan kontainer agar cocok dengan WEBLATE_ADMIN_PASSWORD, WEBLATE_ADMIN_NAME, dan WEBLATE_ADMIN_EMAIL.

Peringatan

Menyimpan kata sandi dalam berkas konfigurasi mungkin berisiko bagi keamanan. Pertimbangkan untuk menggunakan variabel ini hanya untuk pengaturan awal (atau biarkan Weblate menghasilkan kata sandi acak saat pertama kali dijalankan) atau untuk pemulihan kata sandi.

WEBLATE_ADMIN_NOTIFY_ERROR

Whether to send e-mail to admins upon server error. Turned on by default.

Anda mungkin ingin menggunakan pengumpulan galat lain seperti Sentry atau Rollbar dan matikan ini.

WEBLATE_SERVER_EMAIL

Alamat surel tempat pesan galat dikirim.

WEBLATE_DEFAULT_FROM_EMAIL

Mengkonfigurasikan alamat untuk surel keluar.

WEBLATE_ADMINS_CONTACT

Mengkonfigurasikan ADMINS_CONTACT.

WEBLATE_CONTACT_FORM

Mengkonfigurasikan perilaku formulir kontak, lihat CONTACT_FORM.

WEBLATE_ALLOWED_HOSTS

Mengkonfigurasikan nama hos HTTP yang diizinkan menggunakan ALLOWED_HOSTS.

Bawaannya adalah * yang memperbolehkan semua nama hos.

Contoh:

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

Mengonfigurasi apakah pendaftaran dibuka dengan mengubah REGISTRATION_OPEN.

Contoh:

environment:
  WEBLATE_REGISTRATION_OPEN: 0
WEBLATE_REGISTRATION_CAPTCHA

Added in version 5.10.

Mengkonfigurasikan apakah captcha digunakan untuk pendaftaran dan tindakan tidak terautentikasikan lainnya, lihat REGISTRATION_CAPTCHA.

Contoh:

environment:
  WEBLATE_REGISTRATION_CAPTCHA: 0
WEBLATE_REGISTRATION_ALLOW_BACKENDS

Konfigurasikan metode autentikasi mana yang dapat digunakan untuk membuat akun baru melalui REGISTRATION_ALLOW_BACKENDS.

Contoh:

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

Added in version 4.16.

Mengkonfigurasikan REGISTRATION_REBIND.

WEBLATE_REGISTRATION_ALLOW_DISPOSABLE_EMAILS

Added in version 5.16.1.

Mengkonfigurasikan REGISTRATION_ALLOW_DISPOSABLE_EMAILS.

Contoh:

environment:
  WEBLATE_REGISTRATION_ALLOW_DISPOSABLE_EMAILS: 1
WEBLATE_PROJECT_WEB_RESTRICT_PRIVATE

Added in version 5.17.

Mengkonfigurasikan PROJECT_WEB_RESTRICT_PRIVATE.

Bawaannya adalah diaktifkan.

WEBLATE_PROJECT_WEB_RESTRICT_ALLOWLIST

Added in version 5.17.

Configures PROJECT_WEB_RESTRICT_ALLOWLIST.

Expects a comma-separated list of trusted project slugs.

WEBLATE_WEBHOOK_RESTRICT_PRIVATE

Added in version 5.17.

Configures WEBHOOK_RESTRICT_PRIVATE.

Bawaannya adalah diaktifkan.

WEBLATE_WEBHOOK_PRIVATE_ALLOWLIST

Added in version 5.17.

Configures WEBHOOK_PRIVATE_ALLOWLIST.

Expects a comma-separated list of trusted hostnames or domains.

WEBLATE_ALLOWED_ASSET_SIZE

Added in version 2025.7.

Configures ALLOWED_ASSET_SIZE.

WEBLATE_ASSET_RESTRICT_PRIVATE

Added in version 2025.5.

Configures ASSET_RESTRICT_PRIVATE.

Bawaannya adalah diaktifkan.

WEBLATE_ASSET_PRIVATE_ALLOWLIST

Added in version 2025.5.

Configures ASSET_PRIVATE_ALLOWLIST.

Expects a comma-separated list of trusted hostnames or domains.

WEBLATE_TIME_ZONE

Mengonfigurasi zona waktu yang digunakan di Weblate, lihat TIME_ZONE.

Catatan

Untuk mengubah zona waktu kontainer Docker itu sendiri, gunakan variabel lingkungan TZ.

Contoh:

environment:
  WEBLATE_TIME_ZONE: Europe/Prague
WEBLATE_ENABLE_HTTPS

Menjadikan Weblate berasumsi bahwa ia dioperasikan di balik proksi HTTPS terbalik, ia membuat Weblate menggunakan HTTPS dalam surel dan tautan API atau mengatur penanda aman pada kuki.

Petunjuk

Silakan lihat dokumentasi ENABLE_HTTPS untuk kemungkinan peringatan.

Catatan

Ini tidak membuat kontainer Weblate menerima sambungan HTTPS, Anda perlu mengonfigurasinya juga, lihat Kontainer Docker dengan dukungan HTTPS untuk contoh.

Contoh:

environment:
  WEBLATE_ENABLE_HTTPS: 1
WEBLATE_NGINX_IPV6

Added in version 5.17.

Controls whether the bundled NGINX listens on IPv6 addresses.

Supported values are:

  • auto to enable IPv6 listeners only when IPv6 is available in the container runtime. This is the default.

  • on to always enable IPv6 listeners.

  • off to disable IPv6 listeners.

Contoh:

environment:
  WEBLATE_NGINX_IPV6: auto
WEBLATE_IP_PROXY_HEADER

Memungkinkan Weblate untuk mengambil alamat IP dari kepala HTTP mana pun. Gunakan ini saat menggunakan proksi terbalik di depan kontainer Weblate.

Mengaktifkan IP_BEHIND_REVERSE_PROXY dan mengatur IP_PROXY_HEADER.

Catatan

Formatnya harus sesuai dengan harapan Django. Django mengubah nama kepala HTTP mentah sebagai berikut:

  • mengubah semua karakter menjadi huruf besar

  • mengganti tanda hubung dengan garis bawah

  • menambahkan prefiks HTTP_

Jadi X-Forwarded-For akan dipetakan ke HTTP_X_FORWARDED_FOR.

Contoh:

environment:
  WEBLATE_IP_PROXY_HEADER: HTTP_X_FORWARDED_FOR
WEBLATE_IP_PROXY_OFFSET

Added in version 5.0.1.

Mengkonfigurasikan IP_PROXY_OFFSET.

WEBLATE_USE_X_FORWARDED_PORT

Added in version 5.0.1.

Boolean yang menspesifikasikan apakah kepala X-Forwarded-Port akan digunakan alih-alih variabel META SERVER_PORT. Opsi ini hanya boleh diaktifkan jika proksi yang mengatur kepala ini sedang digunakan.

Catatan

Ini adalah pengaturan boolean (gunakan "true" atau "false").

WEBLATE_SECURE_PROXY_SSL_HEADER

A tuple representing an HTTP header/value combination that signifies a request is secure. This is needed when Weblate is running behind a reverse proxy doing SSL termination which does not pass standard HTTPS headers.

Contoh:

environment:
  WEBLATE_SECURE_PROXY_SSL_HEADER: HTTP_X_FORWARDED_PROTO,https
WEBLATE_REQUIRE_LOGIN

Mengaktifkan REQUIRE_LOGIN untuk memaksakan autentikasi pada seluruh Weblate.

Contoh:

environment:
  WEBLATE_REQUIRE_LOGIN: 1

Enables the Modul hukum module in Docker deployments. By default, the integration is disabled; leave this variable unset or empty to disable it.

Supported values are:

  • tos-confirm to enable the legal module and enforce terms of service confirmation during social authentication and for signed-in users.

  • wllegal to enable the same integration and additionally load the hosted legal document templates from wllegal. These templates are used by services operated by Weblate s.r.o. and are not intended for general use.

To provide your own legal documents in Docker, override the templates in /app/data/python/customize/templates/legal/documents, see Mengganti logo dan berkas statis lainnya.

Recreate the Docker container after changing this environment variable, for example using docker compose up -d. Restarting an existing container does not apply changed environment values.

Contoh:

environment:
  WEBLATE_LEGAL_INTEGRATION: tos-confirm

Configures LEGAL_DOCUMENT_CSS_CLASS in Docker deployments with WEBLATE_LEGAL_INTEGRATION enabled.

Set this to an empty string to disable the built-in legal document numbering.

Contoh:

environment:
  WEBLATE_LEGAL_DOCUMENT_CSS_CLASS: ""

Configures LEGAL_HIDDEN_DOCUMENTS in Docker deployments with WEBLATE_LEGAL_INTEGRATION enabled.

Provide a comma-separated list of legal document page identifiers.

Contoh:

environment:
  WEBLATE_LEGAL_HIDDEN_DOCUMENTS: contracts
WEBLATE_PUBLIC_ENGAGE

Mengaktifkan PUBLIC_ENGAGE.

WEBLATE_GOOGLE_ANALYTICS_ID

Mengkonfigurasikan ID untuk Google Analytics dengan mengubah GOOGLE_ANALYTICS_ID.

WEBLATE_DEFAULT_PULL_MESSAGE

Mengkonfigurasikan judul dan pesan bawaan untuk permintaan tarik melalui API dengan mengubah DEFAULT_PULL_MESSAGE.

WEBLATE_SIMPLIFY_LANGUAGES

Mengkonfigurasikan kebijakan penyederhanaan bahasa, lihat SIMPLIFY_LANGUAGES.

WEBLATE_HIDE_SHARED_GLOSSARY_COMPONENTS

Menyembunyikan komponen glosarium saat dibagikan ke proyek lain, lihat HIDE_SHARED_GLOSSARY_COMPONENTS.

WEBLATE_DEFAULT_ACCESS_CONTROL

Mengkonfigurasikan Kontrol akses bawaan untuk proyek baru, lihat DEFAULT_ACCESS_CONTROL.

WEBLATE_DEFAULT_TRANSLATION_REVIEW

Added in version 5.16.

Mengkonfigurasikan nilai bawaan untuk Aktifkan tinjauan, yang secara bawaan dimatikan.

WEBLATE_DEFAULT_SOURCE_REVIEW

Added in version 5.16.

Mengkonfigurasikan nilai bawaan untuk Aktifkan tinjauan sumber, yang secara bawaan dimatikan.

WEBLATE_DEFAULT_RESTRICTED_COMPONENT

Mengkonfigurasikan nilai bawaan untuk Akses terbatas untuk komponen baru, lihat DEFAULT_RESTRICTED_COMPONENT.

WEBLATE_DEFAULT_TRANSLATION_PROPAGATION

Mengkonfigurasikan nilai bawaan untuk Izinkan propagasi terjemahan untuk komponen baru, lihat DEFAULT_TRANSLATION_PROPAGATION.

WEBLATE_DEFAULT_COMMITER_EMAIL

Mengkonfigurasikan DEFAULT_COMMITER_EMAIL.

WEBLATE_DEFAULT_COMMITER_NAME

Mengkonfigurasikan DEFAULT_COMMITER_NAME.

WEBLATE_DEFAULT_SHARED_TM

Mengkonfigurasikan DEFAULT_SHARED_TM.

WEBLATE_DEFAULT_AUTOCLEAN_TM

Mengkonfigurasikan DEFAULT_AUTOCLEAN_TM.

WEBLATE_COMMIT_PENDING_HOURS

Configures the default value for Usia perubahan untuk komit for new components, see COMMIT_PENDING_HOURS.

WEBLATE_GPG_IDENTITY

Mengkonfigurasikan penandatanganan komit GPG, lihat WEBLATE_GPG_IDENTITY.

WEBLATE_URL_PREFIX

Mengkonfigurasikan prefiks URL tempat Weblate berjalan, lihat URL_PREFIX.

WEBLATE_STATIC_URL

Configures URL prefix for static files served from CACHE_DIR.

WEBLATE_SILENCED_SYSTEM_CHECKS

Mengkonfigurasikan pemeriksaan yang tidak ingin ditampilkan, lihat 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

Mengizinkan untuk menyesuaikan kepala HTTP Content-Security-Policy.

WEBLATE_LICENSE_FILTER

Mengkonfigurasikan LICENSE_FILTER.

WEBLATE_LICENSE_REQUIRED

Mengkonfigurasikan LICENSE_REQUIRED.

WEBLATE_WEBSITE_REQUIRED

Mengkonfigurasikan WEBSITE_REQUIRED.

WEBLATE_VERSION_DISPLAY

Configures VERSION_DISPLAY.

WEBLATE_HIDE_VERSION

Mengkonfigurasikan HIDE_VERSION.

WEBLATE_BASIC_LANGUAGES

Mengkonfigurasikan BASIC_LANGUAGES.

WEBLATE_DEFAULT_AUTO_WATCH

Mengkonfigurasikan DEFAULT_AUTO_WATCH.

WEBLATE_RATELIMIT_ATTEMPTS
WEBLATE_RATELIMIT_LOCKOUT
WEBLATE_RATELIMIT_WINDOW

Added in version 4.6.

Mengkonfigurasikan pembatasan akses.

Petunjuk

Anda dapat mengatur konfigurasi untuk cakupan pembatas akses apa pun. Untuk melakukannya, tambahkan prefiks WEBLATE_ ke pengaturan apa pun yang dijelaskan di Pembatasan akses.

WEBLATE_API_RATELIMIT_ANON
WEBLATE_API_RATELIMIT_USER

Added in version 4.11.

Mengkonfigurasikan pembatasan akses API. Bawaannya adalah 100/hari untuk pengguna anonim dan 5000/jam untuk pengguna terautentikasikan.

WEBLATE_ENABLE_HOOKS

Added in version 4.13.

Mengkonfigurasikan ENABLE_HOOKS.

WEBLATE_ENABLE_AVATARS

Added in version 4.6.1.

Mengkonfigurasikan ENABLE_AVATARS.

WEBLATE_AVATAR_URL_PREFIX

Added in version 4.15.

Mengkonfigurasikan AVATAR_URL_PREFIX.

WEBLATE_LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH

Added in version 4.9.

Mengkonfigurasikan LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH.

WEBLATE_SSH_EXTRA_ARGS

Added in version 4.9.

Mengkonfigurasikan SSH_EXTRA_ARGS.

WEBLATE_BORG_EXTRA_ARGS

Added in version 4.9.

Mengkonfigurasikan BORG_EXTRA_ARGS sebagai daftar argumen yang dipisahkan koma.

Contoh:

environment:
  WEBLATE_BORG_EXTRA_ARGS: --exclude,vcs/
WEBLATE_ENABLE_SHARING

Added in version 4.14.1.

Mengkonfigurasikan ENABLE_SHARING.

WEBLATE_SUPPORT_STATUS_CHECK

Added in version 5.5.

Mengkonfigurasikan SUPPORT_STATUS_CHECK.

WEBLATE_EXTRA_HTML_HEAD

Added in version 4.15.

Mengkonfigurasikan EXTRA_HTML_HEAD.

WEBLATE_PRIVATE_COMMIT_EMAIL_TEMPLATE

Added in version 4.15.

Mengkonfigurasikan PRIVATE_COMMIT_EMAIL_TEMPLATE.

WEBLATE_PRIVATE_COMMIT_EMAIL_OPT_IN

Added in version 4.15.

Mengkonfigurasikan PRIVATE_COMMIT_EMAIL_OPT_IN.

WEBLATE_PRIVATE_COMMIT_NAME_TEMPLATE

Added in version 5.16.

Mengkonfigurasikan PRIVATE_COMMIT_NAME_TEMPLATE.

WEBLATE_PRIVATE_COMMIT_NAME_OPT_IN

Added in version 5.16.

Mengkonfigurasikan PRIVATE_COMMIT_NAME_OPT_IN.

WEBLATE_UNUSED_ALERT_DAYS

Added in version 4.17.

Mengkonfigurasikan UNUSED_ALERT_DAYS.

WEBLATE_UPDATE_LANGUAGES

Added in version 4.3.2.

Mengkonfigurasikan UPDATE_LANGUAGES.

WEBLATE_VCS_ALLOW_HOSTS

Added in version 5.15.

Mengkonfigurasikan VCS_ALLOW_HOSTS.

WEBLATE_VCS_ALLOW_SCHEMES

Added in version 5.15.

Mengonfigurasikan VCS_ALLOW_SCHEMES.

WEBLATE_VCS_RESTRICT_PRIVATE

Added in version 5.17.

Configures VCS_RESTRICT_PRIVATE.

WEBLATE_VCS_CLONE_DEPTH

Added in version 5.4.

Mengkonfigurasikan VCS_CLONE_DEPTH.

WEBLATE_VCS_API_DELAY

Added in version 5.4.

Mengkonfigurasikan VCS_API_DELAY.

WEBLATE_VCS_API_TIMEOUT

Added in version 5.15.

Mengkonfigurasikan VCS_API_TIMEOUT.

WEBLATE_CORS_ALLOWED_ORIGINS

Added in version 4.16.

Izinkan permintaan CORS ke API dari asal yang diberikan.

Contoh:

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

Added in version 5.6.1: Mengizinkan permintaan CORS ke API dari semua asal.

WEBLATE_WEBSITE_ALERTS_ENABLED

Added in version 5.17.

Mengkonfigurasikan WEBSITE_ALERTS_ENABLED.

CLIENT_MAX_BODY_SIZE

Added in version 4.16.3.

Mengkonfigurasikan ukuran isian maksimal yang diterima oleh server web bawaan.

environment:
    CLIENT_MAX_BODY_SIZE: 200m

Petunjuk

Variabel ini sengaja tidak memiliki prefiks WEBLATE_ karena digunakan bersama dengan kontainer pihak ketiga yang digunakan dalam Sertifikat SSL otomatis menggunakan Let’s Encrypt.

WEBLATE_TRANSLATION_UPLOAD_MAX_SIZE

Configures TRANSLATION_UPLOAD_MAX_SIZE.

The value is in bytes.

WEBLATE_COMPONENT_ZIP_UPLOAD_MAX_SIZE

Configures COMPONENT_ZIP_UPLOAD_MAX_SIZE.

The value is in bytes.

WEBLATE_PROJECT_BACKUP_UPLOAD_MAX_SIZE

Configures PROJECT_BACKUP_UPLOAD_MAX_SIZE.

The value is in bytes. Make sure CLIENT_MAX_BODY_SIZE is also large enough for uploaded backup files.

WEBLATE_PROJECT_BACKUP_IMPORT_MAX_MEMBERS

Added in version 2026.5.

Configures PROJECT_BACKUP_IMPORT_MAX_MEMBERS.

WEBLATE_PROJECT_BACKUP_IMPORT_MAX_TOTAL_UNCOMPRESSED_SIZE

Added in version 2026.5.

Configures PROJECT_BACKUP_IMPORT_MAX_TOTAL_UNCOMPRESSED_SIZE.

The value is in bytes.

WEBLATE_PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_SIZE

Added in version 2026.5.

Configures PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_SIZE.

The value is in bytes.

WEBLATE_PROJECT_BACKUP_IMPORT_MIN_RATIO_SIZE

Added in version 2026.5.

Configures PROJECT_BACKUP_IMPORT_MIN_RATIO_SIZE.

The value is in bytes.

WEBLATE_PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_RATIO

Added in version 2026.5.

Configures PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_RATIO.

Kredensial situs pengehosan kode

In the Docker container, the code hosting credentials can be configured either in separate variables or using a Python dictionary to set them at once. The following examples are for Permintaan tarik GitHub, but apply to all Integrasi kontrol versi with appropriately changed variable names.

Penting

Semua nama variabel lingkungan harus menyertakan awalan WEBLATE_. Misalnya, untuk mengkonfigurasi kredensial GitHub, gunakan WEBLATE_GITHUB_USERNAME, bukan GITHUB_USERNAME. Ini berlaku baik Anda mengkonfigurasikan untuk permintaan penarikan maupun integrasi VCS lainnya.

Contoh konfigurasi untuk permintaan tarik GitHub mungkin terlihat seperti ini:

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

Akan digunakan sebagai:

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

Alternatifnya kamus Python dapat disediakan sebagai string:

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

Atau jalur ke berkas yang berisi kamus 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

Configures Permintaan tarik GitHub by changing GITHUB_CREDENTIALS.

WEBLATE_GITLAB_USERNAME
WEBLATE_GITLAB_TOKEN
WEBLATE_GITLAB_HOST
WEBLATE_GITLAB_CREDENTIALS

Configures Permintaan penggabungan GitLab by changing GITLAB_CREDENTIALS.

WEBLATE_GITEA_USERNAME
WEBLATE_GITEA_TOKEN
WEBLATE_GITEA_HOST
WEBLATE_GITEA_CREDENTIALS

Configures Permintaan tarik Gitea by changing GITEA_CREDENTIALS.

WEBLATE_PAGURE_USERNAME
WEBLATE_PAGURE_TOKEN
WEBLATE_PAGURE_HOST
WEBLATE_PAGURE_CREDENTIALS

Configures Permintaan penggabungan Pagure by changing PAGURE_CREDENTIALS.

WEBLATE_BITBUCKETSERVER_USERNAME
WEBLATE_BITBUCKETSERVER_TOKEN
WEBLATE_BITBUCKETSERVER_HOST
WEBLATE_BITBUCKETSERVER_CREDENTIALS

Configures Permintaan penarikan Bitbucket Data Center by changing BITBUCKETSERVER_CREDENTIALS.

WEBLATE_BITBUCKETCLOUD_USERNAME
WEBLATE_BITBUCKETCLOUD_WORKSPACE
WEBLATE_BITBUCKETCLOUD_TOKEN
WEBLATE_BITBUCKETCLOUD_HOST
WEBLATE_BITBUCKETCLOUD_CREDENTIALS

Configures Permintaan penarikan Bitbucket Cloud by changing BITBUCKETCLOUD_CREDENTIALS.

WEBLATE_AZURE_DEVOPS_USERNAME
WEBLATE_AZURE_DEVOPS_ORGANIZATION
WEBLATE_AZURE_DEVOPS_TOKEN
WEBLATE_AZURE_DEVOPS_HOST
WEBLATE_AZURE_DEVOPS_CREDENTIALS

Configures Permintaan penarikan Azure DevOps by changing AZURE_DEVOPS_CREDENTIALS.

Pengaturan saran otomatis

Berubah pada versi 4.13: Layanan saran otomatis sekarang dikonfigurasikan dalam antarmuka pengguna, lihat Saran otomatis.

Variabel lingkungan yang ada diimpor selama migrasi ke Weblate 4.13, tetapi mengubahnya tidak akan memiliki efek lebih lanjut.

Pengaturan autentikasi

Petunjuk

Autentikasi berbasis surel dinyalakan kecuali dinonaktifkan oleh 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

Konfigurasi autentikasi LDAP.

Contoh untuk pengikatan langsung:

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

Contoh untuk pencarian dan pengikatan:

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

Contoh untuk pencarian dan pengikatan serikat:

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

Contoh dengan pencarian dan pengikatan terhadap 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

Mengaktifkan Autentikasi GitHub.

GitHub Enterprise Edition

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

Mengaktifkan Autentikasi GitHub EE.

Bitbucket

WEBLATE_SOCIAL_AUTH_BITBUCKET_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_BITBUCKET_OAUTH2_SECRET

Mengaktifkan Autentikasi Bitbucket.

Facebook

WEBLATE_SOCIAL_AUTH_FACEBOOK_KEY
WEBLATE_SOCIAL_AUTH_FACEBOOK_SECRET

Mengaktifkan 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

Mengaktifkan Google OAuth 2.

GitLab

WEBLATE_SOCIAL_AUTH_GITLAB_KEY
WEBLATE_SOCIAL_AUTH_GITLAB_SECRET
WEBLATE_SOCIAL_AUTH_GITLAB_API_URL

Mengaktifkan GitLab OAuth 2.

Gitea

WEBLATE_SOCIAL_AUTH_GITEA_API_URL
WEBLATE_SOCIAL_AUTH_GITEA_KEY
WEBLATE_SOCIAL_AUTH_GITEA_SECRET

Mengaktifkan autentikasi Gitea.

Microsoft Entra ID

WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET

Enables Microsoft Entra ID authentication, see Microsoft Entra ID.

Microsoft Entra ID with Tenant support

WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET
WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID

Enables Microsoft Entra ID authentication with Tenant support, see 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

Mengaktifkan autentikasi Keycloak, lihat Keycloak - Open Source Red Hat SSO.

WEBLATE_SOCIAL_AUTH_KEYCLOAK_ID_KEY

Added in version 5.17.

Configures which claim is used as the unique user identifier from Keycloak. Defaults to email.

Petunjuk

Saat Keycloak dikonfigurasikan untuk mengabstraksi IDP pihak ketiga, Anda perlu mengkonfigurasikan WEBLATE_CSP_FORM_SRC untuk domain IDP pihak ketiga.

Contoh saat Keycloak meneruskan autentikasi ke Microsoft.
environment:
  WEBLATE_CSP_FORM_SRC: login.microsoftonline.com

Vendor Linux

Anda dapat mengaktifkan autentikasi menggunakan layanan autentikasi vendor Linux dengan mengatur variabel berikut ke nilai apa pun.

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

Mengaktifkan autentikasi Slack, lihat Slack.

OpenID Connect

Added in version 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

Mengonfigurasikan integrasi OpenID Connect umum.

Fedora OpenID Connect

Added in version 5.15.

WEBLATE_SOCIAL_AUTH_FEDORA_OIDC_KEY
WEBLATE_SOCIAL_AUTH_FEDORA_OIDC_SECRET

Mengkonfigurasikan integrasi Fedora OpenID Connect.

Lihat juga

Fedora

SAML

Kunci SAML yang ditandatangani sendiri akan otomatis dibuat saat kontainer pertama kali dijalankan. Jika Anda ingin menggunakan kunci sendiri, tempatkan sertifikat dan kunci privat di /app/data/ssl/saml.crt dan /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

Pengaturan Penyedia Identitas SAML, lihat Autentikasi SAML.

WEBLATE_SAML_SECURITY_CONFIG

Added in version 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

Added in version 4.18.

Pemetaan atribut SAML.

Pengaturan autentikasi lainnya

WEBLATE_NO_EMAIL_AUTH

Menonaktifkan autentikasi surel jika diatur ke nilai apa pun. Lihat Mematikan autentikasi kata sandi.

WEBLATE_MIN_PASSWORD_SCORE

Skor kata sandi minimum yang dievaluasi oleh penaksir kekuatan kata sandi zxcvbn. Bawaannya adalah 3, dan atur ke 0 untuk menonaktifkan pemeriksaan kekuatan.

Penyiapan basis data PostgreSQL

Basis data dibuat oleh docker-compose.yml, jadi pengaturan ini memengaruhi kontainer Weblate dan PostgreSQL.

POSTGRES_PASSWORD

Kata sandi PostgreSQL.

POSTGRES_USER

Nama pengguna PostgreSQL.

POSTGRES_DB

Nama basis data PostgreSQL.

POSTGRES_HOST

Nama hos atau alamat IP server PostgreSQL. Bawaannya adalah database.

POSTGRES_PORT

Port server PostgreSQL. Bawaannya adalah tidak ada (menggunakan nilai bawaan).

POSTGRES_SSL_MODE

Konfigurasikan bagaimana PostgreSQL menangani SSL dalam sambungan ke server, untuk pilihan yang memungkinkan lihat Deskripsi Mode SSL.

POSTGRES_ALTER_ROLE

Mengkonfigurasikan nama peran PostgreSQL untuk diubah selama migrasi basis data, lihat Mengkonfigurasikan Weblate untuk menggunakan PostgreSQL.

Bawaannya adalah POSTGRES_USER.

POSTGRES_CONN_MAX_AGE

Added in version 4.8.1.

Masa pakai sambungan basis data, dalam bilangan bulat detik. Gunakan 0 untuk menutup sambungan basis data di akhir setiap permintaan.

Berubah pada versi 5.1: Perilaku bawaan adalah memiliki sambungan basis data persisten yang tidak terbatas.

Mengaktifkan persistensi sambungan biasanya akan menyebabkan lebih banyak sambungan terbuka ke basis data. Harap sesuaikan konfigurasi basis data Anda sebelum mengaktifkannya.

Contoh konfigurasi:

environment:
    POSTGRES_CONN_MAX_AGE: 3600
POSTGRES_DISABLE_SERVER_SIDE_CURSORS

Added in version 4.9.1.

Nonaktifkan kursor sisi server di basis data. Ini diperlukan dalam beberapa pengaturan pgbouncer.

Contoh konfigurasi:

environment:
    POSTGRES_DISABLE_SERVER_SIDE_CURSORS: 1
WEBLATE_DATABASES

Added in version 5.1.

Set to false to disable environment based configuration of the database connection. Use Menimpa pengaturan dari volume data to configure the database connection manually.

Pengaturan cadangan basis data

WEBLATE_DATABASE_BACKUP

Mengkonfigurasikan buangan basis data harian menggunakan DATABASE_BACKUP. Bawaannya adalah plain.

Pengaturan server penyimpanan data

Penggunaan Valkey atau Redis diperlukan oleh kontainer Weblate dan Anda harus menyediakan parameter sambungan saat menjalankan Weblate di Docker.

REDIS_HOST

Nama hos atau alamat IP server penyimpanan data. Nilai bawaannya adalah cache.

REDIS_PORT

Port server penyimpanan data. Nilai bawaannya adalah 6379.

REDIS_DB

Nomor basis data penyimpanan data, bawaannya adalah 1.

REDIS_USER

Added in version 5.13: Pengguna basis data penyimpanan data, tidak digunakan secara bawaan.

REDIS_PASSWORD

Kata sandi server penyimpanan data, tidak digunakan secara bawaan.

REDIS_TLS

Mengaktifkan penggunaan SSL untuk sambungan penyimpanan data.

REDIS_VERIFY_SSL

Dapat digunakan untuk menonaktifkan verifikasi sertifikat SSL untuk sambungan penyimpanan data.

Pengaturan server surel

Agar surel keluar dapat berfungsi, Anda perlu menyediakan server surat.

Contoh konfigurasi TLS:

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

Contoh konfigurasi 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

Nama hos atau alamat IP server surat.

WEBLATE_EMAIL_PORT

Port server surat, bawaannya adalah 25.

Lihat juga

EMAIL_PORT

WEBLATE_EMAIL_HOST_USER

Pengguna autentikasi surel.

Lihat juga

EMAIL_HOST_USER

WEBLATE_EMAIL_HOST_PASSWORD

Kata sandi autentikasi surel.

WEBLATE_EMAIL_USE_SSL

Apakah akan menggunakan sambungan TLS implisit (aman) saat berkomunikasi dengan server SMTP. Dalam sebagian besar dokumentasi surel, jenis sambungan TLS ini disebut SSL. Umumnya digunakan pada port 465. Jika Anda mengalami masalah, lihat pengaturan TLS eksplisit WEBLATE_EMAIL_USE_TLS.

Berubah pada versi 4.11: Dukungan SSL/TLS diaktifkan secara otomatis berdasarkan WEBLATE_EMAIL_PORT.

WEBLATE_EMAIL_USE_TLS

Apakah akan menggunakan sambungan TLS (aman) saat berkomunikasi dengan server SMTP. Ini digunakan untuk sambungan TLS eksplisit, umumnya pada port 587 atau 25. Jika Anda mengalami sambungan yang macet, lihat pengaturan TLS implisit WEBLATE_EMAIL_USE_SSL.

Berubah pada versi 4.11: Dukungan SSL/TLS diaktifkan secara otomatis berdasarkan WEBLATE_EMAIL_PORT.

WEBLATE_EMAIL_BACKEND

Konfigurasikan backend Django yang akan digunakan untuk mengirim surel.

WEBLATE_AUTO_UPDATE

Mengkonfigurasikan apakah dan bagaimana Weblate harus memperbarui repositori.

Lihat juga

AUTO_UPDATE

Catatan

Ini adalah pengaturan Boolean (gunakan "true" atau "false").

Integrasi situs

WEBLATE_GET_HELP_URL

Mengkonfigurasikan GET_HELP_URL.

WEBLATE_STATUS_URL

Mengkonfigurasikan STATUS_URL.

Mengkonfigurasikan LEGAL_URL.

WEBLATE_PRIVACY_URL

Mengkonfigurasikan PRIVACY_URL.

WEBLATE_PASSWORD_RESET_URL

Configures PASSWORD_RESET_URL.

Mengumpulkan laporan galat dan memantau kinerja

Disarankan untuk mengumpulkan galat dari pemasangan secara sistematis, lihat Mengumpulkan laporan galat dan memantau kinerja.

Untuk mengaktifkan dukungan untuk Rollbar, atur berikut:

ROLLBAR_KEY

Token akses server posting Rollbar Anda.

ROLLBAR_ENVIRONMENT

Lingkungan Rollbar Anda, bawaannya adalah production.

Untuk mengaktifkan dukungan untuk Sentry, atur berikut:

SENTRY_DSN

Sentry DSN Anda, lihat SENTRY_DSN.

SENTRY_ENVIRONMENT

Lingkungan Sentry Anda (opsional), bawaannya adalah WEBLATE_SITE_DOMAIN.

SENTRY_MONITOR_BEAT_TASKS

Apakah akan memantau tugas Celery Beat dengan Sentry, bawaannya adalah True.

SENTRY_TRACES_SAMPLE_RATE

Mengkonfigurasikan SENTRY_TRACES_SAMPLE_RATE.

Contoh:

environment:
  SENTRY_TRACES_SAMPLE_RATE: 0.5
SENTRY_PROFILES_SAMPLE_RATE

Mengkonfigurasikan SENTRY_PROFILES_SAMPLE_RATE.

Contoh:

environment:
  SENTRY_PROFILES_SAMPLE_RATE: 0.5
SENTRY_SEND_PII

Mengkonfigurasikan SENTRY_SEND_PII.

To enable support for Google Cloud Error Reporting, set following:

GOOGLE_CLOUD_ERROR_REPORTING_ENABLED

Enables GOOGLE_CLOUD_ERROR_REPORTING, defaults to False.

GOOGLE_CLOUD_ERROR_REPORTING_PROJECT

Google Cloud project to report errors to. If omitted, the Google client uses application default credentials to detect the project.

GOOGLE_CLOUD_ERROR_REPORTING_SERVICE

Service name to use in Google Cloud Error Reporting, defaults to weblate.

To enable support for OpenTelemetry tracing, set following:

OPENTELEMETRY_ENABLED

Enables OPENTELEMETRY_ENABLED, defaults to False.

OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT

Configures OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT.

Contoh:

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

Configures OPENTELEMETRY_EXPORTER_OTLP_HEADERS as a comma-separated name:value mapping.

OPENTELEMETRY_EXTRA_RESOURCE_ATTRIBUTES

Configures OPENTELEMETRY_EXTRA_RESOURCE_ATTRIBUTES as a comma-separated name:value mapping.

OPENTELEMETRY_SERVICE_NAME

Configures OPENTELEMETRY_SERVICE_NAME.

OPENTELEMETRY_TRACES_SAMPLE_RATE

Configures OPENTELEMETRY_TRACES_SAMPLE_RATE.

CDN lokalisasi

WEBLATE_LOCALIZE_CDN_URL
WEBLATE_LOCALIZE_CDN_PATH

Added in version 4.2.1.

Configuration for CDN add-ons, including CDN lokalisasi JavaScript and CDN berkas terjemahan.

WEBLATE_LOCALIZE_CDN_PATH adalah jalur di dalam kontainer. Jalur ini harus disimpan di volume persisten, bukan di penyimpanan sementara.

Salah satu kemungkinan adalah menyimpannya di dalam direktori data Weblate:

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

Catatan

You are responsible for setting up serving of the files generated by Weblate, it only stores the files in configured location. See CDN lokalisasi for secure serving guidance.

Changing enabled apps, checks, formats, add-ons, machinery, or autofixes

The built-in configuration of enabled checks, file formats, add-ons, machinery, or autofixes can be adjusted by the following variables:

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

Added in version 5.6.1.

WEBLATE_REMOVE_MACHINERY

Added in version 5.6.1.

Contoh:

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

Pengaturan kontainer

WEBLATE_WORKERS

Added in version 4.6.1.

Jumlah dasar proses pekerja yang berjalan di dalam kontainer. Jika tidak diatur, jumlah tersebut akan ditentukan secara otomatis saat kontainer dimulai berdasarkan jumlah inti CPU yang tersedia.

Ini digunakan untuk menentukan CELERY_MAIN_OPTIONS, CELERY_NOTIFY_OPTIONS, CELERY_MEMORY_OPTIONS, CELERY_TRANSLATE_OPTIONS, CELERY_BACKUP_OPTIONS, CELERY_BEAT_OPTIONS, dan WEB_WORKERS. Anda dapat menggunakan pengaturan ini untuk menyesuaikan.

CELERY_MAIN_OPTIONS
CELERY_NOTIFY_OPTIONS
CELERY_MEMORY_OPTIONS
CELERY_TRANSLATE_OPTIONS
CELERY_BACKUP_OPTIONS
CELERY_BEAT_OPTIONS

Variabel-variabel ini memungkinkan Anda menyesuaikan opsi pekerja Celery. Penyesuaian konkurensi (--concurrency 16) atau implementasi pool yang berbeda (--pool=gevent) dapat bermanfaat.

Secara bawaan, jumlah pekerja bersamaan didasarkan pada WEBLATE_WORKERS.

Contoh:

environment:
  CELERY_MAIN_OPTIONS: --concurrency 16
CELERY_SINGLE_PROCESS

Added in version 5.7.1: Variabel ini dapat diatur ke 1 untuk menjalankan hanya satu proses celery. Hal ini mengurangi penggunaan memori tetapi dapat memengaruhi kinerja Weblate.

environment:
  CELERY_SINGLE_PROCESS: 1
WEB_WORKERS

Konfigurasikan berapa banyak pekerja WSGI yang akan dieksekusi.

Bawaannya adalah setengah dari WEBLATE_WORKERS, tetapi selalu minimal 2.

Contoh:

environment:
  WEB_WORKERS: 4

Berubah pada versi 5.13: WEB_WORKERS mengkonfigurasikan berapa banyak proses pekerja yang akan digunakan oleh granian.

WEBLATE_SERVICE

Mendefinisikan layanan mana yang harus dijalankan di dalam kontainer. Gunakan ini untuk Menskalakan secara horizontal.

Layanan berikut didefinisikan:

celery-beat

Penjadwal tugas Celery, hanya satu instansi yang boleh berjalan. Kontainer ini juga bertanggung jawab atas migrasi struktur basis data dan harus dimulai sebelum yang lain.

celery-backup

Pekerja Celery untuk pencadangan, hanya satu instansi yang harus dijalankan.

celery-celery

Pekerja Celery umum.

celery-memory

Memori terjemahan pekerja Celery.

celery-notify

Notifikasi pekerja Celery.

celery-translate

Terjemahan otomatis pekerja Celery.

web

Server web.

WEBLATE_ANUBIS_URL

Added in version 5.11.4.

URL server Anubis untuk menangani autentikasi subpermintaan. Ini berguna untuk memfilter permintaan HTTP yang masuk menggunakan bukti pekerjaan untuk menghentikan perayap AI. Anda perlu mengkonfigurasikan Anubis untuk Autentikasi Subpermintaan agar berfungsi.

Volume kontainer Docker

Ada dua volume (data dan cache) yang diekspor oleh kontainer Weblate.

Catatan

Kontainer layanan lain (seperti PostgreSQL atau Valkey) juga memiliki volume datanya masing-masing dan diperlukan untuk menjaga persistensi Weblate.

Kontainer PostgreSQL menyimpan basis data di volume /var/lib/postgresql dan Valkey di volume /data. Kontainer Valkey tidak menyimpan data secara bawaan dan memerlukan konfigurasi tambahan untuk mengaktifkan persistensi.

Dasarkan konfigurasi Anda pada contoh yang disediakan oleh Weblate atau lihat dokumentasinya untuk informasi lebih lanjut.

Volume data dipasang sebagai /app/data dan digunakan untuk menyimpan data persisten Weblate seperti repositori kloning atau untuk menyesuaikan pemasangan Weblate. DATA_DIR menjelaskan secara lebih rinci apa yang disimpan di sini.

Volume data juga merupakan tempat untuk menyimpan kustomisasi Weblate seperti Menimpa pengaturan dari volume data, Mengganti logo dan berkas statis lainnya atau Menyesuaikan kode.

Penempatan volume Docker pada sistem hos bergantung pada konfigurasi Docker Anda, tetapi biasanya disimpan di /var/lib/docker/volumes/weblate-docker_weblate-data/_data/ (jalur terdiri dari nama direktori docker-compose, kontainer, dan nama volume).

The cache volume is mounted as /app/cache and is used to store static files and CACHE_DIR. Its content is recreated on container startup and the volume can be mounted using ephemeral filesystem such as tmpfs, but the mount has to allow execution because Weblate stores generated helper files there.

When mounting /app/cache explicitly as tmpfs in Docker Compose, enable execution:

tmpfs:
  - /app/cache:exec

When also setting ownership options, keep the exec option:

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

Saat membuat volume secara manual, direktori harus dimiliki oleh UID 1000 karena itulah yang digunakan pengguna di dalam kontainer.

Kontainer Weblate juga dapat dijalankan dengan sistem berkas root hanya baca. Dalam hal ini, dua volume tmpfs tambahan harus dipasang: /tmp dan /run.

Sistem berkas root hanya baca

Added in version 4.18.

Saat menjalankan kontainer dengan sistem berkas root hanya baca, dua volume tmpfs tambahan diperlukan - /tmp dan /run.

Konfigurasi di luar variabel lingkungan

Variabel lingkungan Docker dimaksudkan untuk mengekspos sebagian besar pengaturan konfigurasi yang relevan untuk pemasangan Weblate.

Jika Anda menemukan pengaturan yang tidak diekspos sebagai variabel lingkungan, dan Anda yakin bahwa itu seharusnya diekspos, jangan ragu untuk menanyakan agar itu diungkapkan dalam versi Weblate mendatang.

Jika Anda perlu mengubah pengaturan yang tidak diekspos sebagai variabel lingkungan Docker, Anda masih dapat melakukannya, baik dari volume data atau meluaskan gambar Docker.

Menimpa pengaturan dari volume data

Anda dapat membuat berkas di /app/data/settings-override.py, yaitu di akar volume data, untuk memperluaskan atau menimpakan pengaturan yang didefinisikan melalui variabel lingkungan.

Menimpa pengaturan dengan memperluas gambar Docker

Untuk menimpakan pengaturan pada tingkat gambar Docker dan bukan pada volume data:

  1. Buat paket Python kustom.

  2. Tambahkan modul ke paket Anda yang mengimpor semua pengaturan dari weblate.settings_docker.

    Misalnya, dalam struktur paket contoh yang didefinisikan di Membuat modul Python, Anda dapat membuat berkas di weblate_customization/weblate_customization/settings.py dengan kode awal berikut:

    from weblate.settings_docker import *
    
  3. Buat Dockerfile kustom yang mewarisi gambar Docker Weblate resmi, lalu memasang paket Anda dan mengarahkan variabel lingkungan DJANGO_SETTINGS_MODULE ke modul pengaturan Anda:

    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. Daripada menggunakan gambar Docker Weblate resmi, bangun gambar kustom dari berkas Dockerfile ini.

    Tidak ada cara yang bersih <https://github.com/docker/compose/issues/7231>`__ untuk melakukan ini dengan docker-compose.override.yml. Anda bisa menambahkan build: . ke simpul weblate di berkas tersebut, tetapi gambar khusus Anda akan ditandai sebagai weblate/weblate di sistem Anda, yang bisa jadi bermasalah.

    Jadi, daripada menggunakan docker-compose.yml langsung dari repositori resmi, tanpa modifikasi, dan memperluasnya melalui docker-compose.override.yml, Anda mungkin ingin membuat salinan berkas resmi docker-compose.yml, dan menyunting salinan Anda untuk mengganti image: weblate/weblate dengan build: ..

    Lihat Referensi pembangunan berkas Compose untuk rincian tentang pembangunan gambar dari sumber saat menggunakan docker-compose.

  5. Perluaskan modul pengaturan kustom Anda untuk mendefinisikan atau mendefinisikan ulang pengaturan.

    Anda dapat menentukan pengaturan sebelum atau setelah pernyataan impor di atas untuk menentukan pengaturan mana yang diutamakan. Pengaturan yang didefinisikan sebelum pernyataan impor dapat ditimpa oleh variabel lingkungan dan penimpaan pengaturan yang didefinisikan dalam volume data. Pengaturan yang didefinisikan setelah pernyataan impor tidak dapat ditimpa.

    Anda juga bisa melangkah lebih jauh. Misalnya, Anda dapat mereproduksikan beberapa hal yang dilakukan weblate.docker_settings https://github.com/WeblateOrg/weblate/blob/main/weblate/settings_docker.py, seperti mengekspos pengaturan sebagai variabel lingkungan, atau mengizinkan penimpaan pengaturan dari berkas Python di volume data.

Mengganti logo dan berkas statis lainnya

Berkas statis yang disertakan dengan Weblate dapat ditimpa dengan menempatkannya di /app/data/python/customize/static (lihat Volume kontainer Docker). Misalnya, membuat /app/data/python/customize/static/favicon.ico akan menggantikan favicon.

Petunjuk

Berkas disalin ke lokasi terkait saat kontainer dimulai, jadi Weblate perlu dimulai ulang setelah mengubah konten volume.

Pendekatan ini juga dapat digunakan untuk menimpakan templat Weblate. Misalnya, dokumen Modul hukum dapat ditempatkan di /app/data/python/customize/templates/legal/documents.

Alternatifnya Anda juga dapat menyertakan modul Anda sendiri (lihat Menyesuaikan Weblate) dan menambahkannya sebagai volume terpisah ke kontainer Docker, misalnya:

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

Menyesuaikan kode

Catatan

API internal Weblate mungkin sangat bervariasi antar rilis dan tidak dirancang untuk stabil. Harap tinjau kode kustom Anda yang berinteraksi dengan internal Weblate pada setiap peningkatan.

Anda dapat menambahkan kode Python tambahan ke dalam /app/data/python/customize (lihat Volume kontainer Docker). Kode ini sudah terpasang sebagai aplikasi Django di dalam Weblate (ini digunakan untuk menyesuaikan templat dan berkas statis seperti dijelaskan di atas).

Ini dapat digunakan untuk menempatkan kode apa pun (misalnya Menulis pemeriksaan sendiri) atau untuk menambahkan tugas pemeliharaan kustom ke penjadwal tugas 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"
    )

Mengintegrasikan kontainer pihak ketiga

Pengaturan Docker Weblate dapat diperluas dengan kontainer tambahan untuk menyediakan layanan pelengkap seperti terjemahan mesin, pemeriksa ejaan, atau alat lain yang meningkatkan alur kerja terjemahan. Layanan ini dapat diintegrasikan ke dalam konfigurasi Docker Compose Anda dan bekerja bersama Weblate.

Saat menambahkan kontainer pihak ketiga, pertimbangkan hal berikut:

  • Konektivitas jaringan: Pastikan kontainer dapat berkomunikasi satu sama lain dengan menempatkannya di jaringan Docker yang sama

  • Persistensi data: Gunakan volume untuk layanan yang perlu menyimpan data

  • Keamanan: Konfigurasikan kontrol akses yang sesuai dan hindari mengekspos port yang tidak diperlukan

Integrasi kontainer Docker LibreTranslate

LibreTranslate adalah layanan terjemahan mesin bebas dan sumber terbuka yang dapat dihos sendiri. Integrasinya dengan Weblate menyediakan kemampuan terjemahan mesin luring tanpa bergantung pada layanan eksternal.

Anda dapat mengintegrasikan layanan LibreTranslate ke dalam deployment Weblate Anda dengan memasukkannya ke dalam berkas docker-compose.override.yml. Karena berjalan di dalam jaringan Docker, layanan ini hanya dapat diakses oleh Weblate dan tidak dapat diakses melalui internet publik.

Pengaturan dasar menggunakan 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:

Untuk terjemahan yang dipercepat GPU (jika Anda memiliki GPU NVIDIA yang tersedia):

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:

Setelah memulai layanan dengan docker compose down && docker compose up -d, konfigurasikan LibreTranslate di Weblate:

  1. Akses antarmuka admin Weblate

  2. Navigasikan ke Terjemahan mesinSaran otomatis

  3. Tambahkan layanan LibreTranslate baru dengan:

    Layanan:

    LibreTranslate

    URL API:

    http://libretranslate:5000

    Kunci API:

    Biarkan kosong

LibreTranslate sekarang dikonfigurasikan dan tersedia untuk terjemahan mesin di Weblate.

Catatan

  • Layanan LibreTranslate berjalan tanpa UI web (--disable-web-ui) dan hanya dapat diakses melalui API dalam jaringan Docker.

  • Model diperbarui secara otomatis saat kontainer dimulai. (LT_UPDATE_MODELS: true)

  • Data disimpan menggunakan volume Docker untuk kinerja dan keamanan data yang optimal.

  • Pemeriksaan kesehatan memastikan bahwa mesin Docker mengamati status layanan dengan benar.

  • Untuk akselerasi GPU, gunakan varian citra CUDA dan pastikan sistem Anda mendukung NVIDIA Docker. Kontainer ini berjalan sebagai pengguna akses agar dapat menggunakan GPU.

  • Tidak ada port eksternal yang terbuka, membuat pengaturan aman secara bawaan.

Integrasi kontainer Anubis Docker

Anubis adalah utilitas firewall AI web untuk memblokir scraper AI dan lalu lintas mengganggu lainnya di server. Biasanya diperlukan untuk instalasi Weblate yang terbuka untuk umum guna menghindari beban berlebih akibat scraping.

Anubis dapat disebarkan menggunakan Docker Compose:

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:

Catatan

Volume anubis-data dalam konfigurasi di atas diharapkan berisi botPolicies.yaml dengan kebijakan bot yang dikonfigurasikan sesuai kebutuhan Anda.

Minimalnya, Anda perlu menyesuaikan kode status seperti yang dijelaskan di https://anubis.techaro.lol/docs/admin/configuration/subrequest-auth.

Disarankan juga untuk mengkonfigurasikan backend penyimpanan persisten seperti yang dijelaskan di https://anubis.techaro.lol/docs/admin/policies/#storage-backends.

Anda kemudian dapat menyalakan penggunaan Anubis di Weblate menggunakan:

environment:
   WEBLATE_ANUBIS_URL: http://anubis:8923

Lihat juga

WEBLATE_ANUBIS_URL

Mengkonfigurasikan server PostgreSQL

Kontainer PostgreSQL menggunakan konfigurasi PostgreSQL bawaan dan tidak akan memanfaatkan inti CPU atau memori Anda secara efektif. Disarankan untuk menyesuaikan konfigurasi guna meningkatkan kinerja.

Konfigurasi dapat disesuaikan seperti yang dijelaskan dalam Konfigurasi Basis Data di https://hub.docker.com/_/postgres. Konfigurasi yang sesuai dengan lingkungan Anda dapat dibuat menggunakan https://pgtune.leopard.in.ua/.

Internal kontainer

Kontainer menggunakan supervisor untuk memulai layanan individual. Dalam kasus Menskalakan secara horizontal, kontainer hanya memulai satu layanan dalam satu kontainer.

Untuk memeriksa status layanan gunakan:

docker compose exec --user weblate weblate supervisorctl status

Terdapat layanan individual untuk setiap antrian Celery (lihat Tugas latar belakang menggunakan Celery untuk rinciannya). Anda dapat menghentikan pemrosesan beberapa tugas dengan menghentikan pekerja yang sesuai:

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