Установка с помощью Docker’а

С помощью докеризированного развёртывания Weblate вы можете запустить свой собственный экземпляр Weblate за считанные секунды. Все зависимости Weblate уже включены. PostgreSQL настроен как база данных по умолчанию, а Valkey — как бэкенд кэширования.

Требования к оборудованию

Weblate должен без проблем работать на любом современном оборудовании, ниже приведена минимальная конфигурация, необходимая для запуска Weblate на одном сервере (сам Weblate, база данных и веб-сервер):

  • 3 ГБ ОЗУ

  • 2-х ядерный процессор

  • 1 ГБ дискового пространства

Примечание

Фактические требования к вашей установке Weblate сильно зависят от размера управляемых ею переводов.

Использование памяти

Чем больше памяти, тем лучше — она используется для кэширования на всех уровнях (на уровне файловой системы, уровне базы данных и уровне Weblate). Для сотен компонентов перевода рекомендуется не менее 4 ГБ оперативной памяти.

Подсказка

Для систем с меньшим, чем рекомендуется, объёмом памяти рекомендуется использовать Однопроцессная установка для производства Celery.

Использование CPU

Множество одновременно работающих пользователей увеличивают количество необходимых ядер процессора.

Использование хранилища

Типовое использование дискового пространства базой данной находится в районе 300MB на 1 миллион хранимых слов.

Пространство необходимое для клонирования репозиториев разнится, хотя Weblate и пытается поддерживать их размер минимальным, делая поверхностные (shallow) копии.

Узлы

Для небольших и средних сайтов (миллионы размещённых слов) все компоненты Weblate (см. Обзор архитектуры) могут работать на одном узле.

Когда вы вырастете до сотен миллионов размещённых слов, рекомендуется выделить отдельный узел для базы данных (см. Настройка базы данных для Weblate).

Установка

Подсказка

В следующих примерах предполагается, что у вас есть работающая среда Docker с установленным плагином docker-compose-plugin. Инструкции см. в документации Docker.

При этом создаётся сервер развёртывания Weblate через HTTP, поэтому вам следует разместить его за завершающим прокси-сервером HTTPS. Вы также можете выполнить развёртывание с помощью HTTPS-прокси, см. Автоматический выпуск SSL-сертификатов с помощью сервиса Let’s Encrypt. Для более крупных настроек см. Масштабирование по горизонтали.

  1. Склонируйте репозиторий weblate-docker:

    git clone https://github.com/WeblateOrg/docker-compose.git weblate-docker
    cd weblate-docker
    
  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’ом, он доступен на порту 80 контейнера weblate.

Выбор реестра образов 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

Версия разработчика Weblate из Git

Поэтапные обновления для тестирования предстоящих функций Weblate

bleeding-<DATE>-<SHA>

Версия разработчика Weblate из Git

Хорошо определённое развёртывание для тестирования предстоящих функций Weblate

Каждое изображение тестируется нашей непрерывной интеграцией перед публикацией, поэтому даже bleeding (кровоточащая) версия должна быть вполне безопасной для использования.

Полный список опубликованных меток можно найти на странице GitHub Packages

Контейнер Docker с поддержкой HTTPS

Общие инструкции по развертыванию, пожалуйста, смотрите в разделе Установка, в этом разделе упоминаются только отличия от той инструкции.

Прокси с завершением SSL

SSL может быть завершён вне контейнера Weblate. Чтобы это хорошо работало, в контейнер необходимо передать несколько заголовков, чтобы он знал о своём фактическом окружении. Более подробно эти заголовки описаны в Работа за обратным прокси.

Пример конфигурации обратного прокси nginx для контейнера 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;
}
Среда контейнера Docker для внешнего завершения SSL.
WEBLATE_ENABLE_HTTPS=1
WEBLATE_IP_PROXY_HEADER=HTTP_X_FORWARDED_FOR

Использование собственных SSL-сертификатов

Если вы хотите использовать свой собственный SSL-сертификат, просто поместите его файлы в том данных Weblate (смотрите раздел Тома контейнеров Docker’а):

  • ssl/fullchain.pem, содержащий сертификат и все необходимые сертификаты центров сертификации

  • ssl/privkey.pem, содержащий закрытый ключ

Обеими этими файлами должен владеть тот же самый пользователь, который запускает контейнер docker ’а, а маска этих файлов должна быть равна 600 (читать и писать в них может только владелец).

Кроме того, контейнер Weblate теперь будет принимать SSL-соединения на порт 4443 и вам нужно будет включить перенаправление портов для HTTPS в переопределении Docker Compose:

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

Если на этом же сервере у вас уже размещены другие сайты, скорее всего, порты 80 и 443 используются обратным прокси, например, NGINX. Для передачи 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 на фактические значения из вашего окружения.

Автоматический выпуск SSL-сертификатов с помощью сервиса Let’s Encrypt

Если вы хотите использовать 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 должна быть перенесена автоматически, надобности в дополнительных ручных действиях не возникнет.

Примечание

Прямые обновления поддерживаются только для выпусков текущего или предыдущего календарного года. Если вам необходимо обновиться с более старой версии, сначала обновитесь до промежуточной версии, указанной в Инструкции для конкретных версий.

Также вы можете захотеть обновить репозиторий docker-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:

    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
    

Вход от имени администратора

После настройки контейнера вы можете войти в систему под пользователем admin с паролем, указанным в переменной окружения WEBLATE_ADMIN_PASSWORD, или случайным паролем, сгенерированным при первом запуске, если он не был установлен явно.

Для сброса пароля пользователя admin перезапустите контейнер с переменной WEBLATE_ADMIN_PASSWORD, установленной в новое значение пароля.

Количество процессов и потребление памяти

Количество рабочих процессов для WSGI и Celery определяется автоматически на основе количества ЦП. Это хорошо подходит для большинства облачных виртуальных машин, так как они обычно имеют мало процессоров и хороший объём памяти.

Если на вашей машине много процессорных ядер и возникают проблемы, вызванные нехваткой памяти, то попробуйте уменьшить количество рабочих процессов:

environment:
  WEBLATE_WORKERS: 2

Вы также можете точно настроить отдельные категории процессов:

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

Использование памяти можно дополнительно сократить, запустив только один процесс 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 поддерживает передачу данных в виде ключей. Чтобы использовать это, добавьте суффикс _FILE к переменной среды и передайте файл ключей через Docker.

Связанный 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

Настраивает отладочный режим Django, используя ее переменную DEBUG.

Пример:

environment:
  WEBLATE_DEBUG: 1
WEBLATE_LOGLEVEL

Настраивает детализацию журналирования. Установите значение DEBUG, чтобы получить более подробные журналы.

По умолчанию используется INFO, когда WEBLATE_DEBUG отключён, DEBUG используется, когда включён режим отладки.

Для более тихой регистрации используйте ERROR или WARNING.

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

Устанавливает пароль для пользователя admin.

  • Если не установлен и пользователя admin не существует, он создается со случайным паролем, который показывается при первом запуске контейнера.

  • Если не установлен и пользователя admin не существует, никакие действия не выполняются.

  • Если установлен, при каждом запуске контейнера пользователю admin устанавливаются соответствующие WEBLATE_ADMIN_PASSWORD, WEBLATE_ADMIN_NAME и WEBLATE_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

Настраивает разрешённые имена HTTP-хостов с помощью параметра ALLOWED_HOSTS.

По умолчанию установлен в *, что позволяет использовать все имена хостов.

Пример:

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.

Configures PROJECT_WEB_RESTRICT_ALLOWLIST.

Expects a comma-separated list of trusted project slugs.

WEBLATE_WEBHOOK_RESTRICT_PRIVATE

Добавлено в версии 5.17.

Настраивает WEBHOOK_RESTRICT_PRIVATE.

По умолчанию включено.

WEBLATE_WEBHOOK_PRIVATE_ALLOWLIST

Добавлено в версии 5.17.

Настраивает WEBHOOK_PRIVATE_ALLOWLIST.

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

WEBLATE_ASSET_RESTRICT_PRIVATE

Добавлено в версии 2025.5.

Настраивает ASSET_RESTRICT_PRIVATE.

По умолчанию включено.

WEBLATE_ASSET_PRIVATE_ALLOWLIST

Добавлено в версии 2025.5.

Настраивает ASSET_PRIVATE_ALLOWLIST.

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

WEBLATE_TIME_ZONE

Настраивает используемый в Weblate часовой пояс, смотрите описание параметра TIME_ZONE.

Примечание

Для изменения часового пояса самого контейнера Docker используйте переменную окружения TZ.

Пример:

environment:
  WEBLATE_TIME_ZONE: Europe/Prague
WEBLATE_ENABLE_HTTPS

Заставляет Weblate думать, что он работает за обратным HTTPS-прокси, что принуждает Weblate использовать HTTPS в ссылках писем электронной почты и API или устанавливать у кук флаги безопасности.

Подсказка

Смотрите возможные топкие места в документацию к параметру ENABLE_HTTPS.

Примечание

Этот параметр не включает разрешение на прием контейнером Weblate’а соединений по HTTPS, его нужно настроить отдельно, для примеров смотрите раздел Контейнер Docker с поддержкой HTTPS.

Пример:

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’у получать IP-адрес из любого заданного HTTP-заголовка. Используйте его при использовании обратного прокси перед контейнером Weblate.

Включает параметр IP_BEHIND_REVERSE_PROXY и устанавливает параметр IP_PROXY_HEADER.

Примечание

Формат должен соответствовать ожиданиям Django. Django трансформирует необработанные имена 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.

Логическое значение, указывающее, следует ли использовать заголовок X-Forwarded-Port вместо переменной SERVER_PORT META. Следует включать только в том случае, если используется прокси-сервер, который устанавливает этот заголовок.

См. также

USE_X_FORWARDED_PORT

Примечание

Это логическая настройка (используйте "true" или "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.

Пример:

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, см. Замена логотипа и других статических файлов.

Пример:

environment:
  WEBLATE_LEGAL_INTEGRATION: tos-confirm
WEBLATE_PUBLIC_ENGAGE

Включает PUBLIC_ENGAGE.

WEBLATE_GOOGLE_ANALYTICS_ID

Настраивает идентификатор для Google Analytics, изменяя параметр GOOGLE_ANALYTICS_ID.

WEBLATE_DEFAULT_PULL_MESSAGE

Настройте заголовок и сообщение по умолчанию для запросов на извлечение через API, изменяя DEFAULT_PULL_MESSAGE.

См. также

DEFAULT_PULL_MESSAGE

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

Настраивает префикс URL-адреса, на котором запущен Weblate, смотрите описание параметра URL_PREFIX.

WEBLATE_STATIC_URL

Настраивает префикс URL для статических файлов, обслуживаемых из CACHE_DIR.

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

Позволяет настраивать HTTP-заголовок политики безопасности содержимого Content-Security-Policy.

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 для авторизованных пользователей.

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

Разрешить CORS-запросы к API из указанных источников.

Пример:

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

Добавлено в версии 5.6.1: Разрешает CORS-запросы к API из всех источников.

WEBLATE_WEBSITE_ALERTS_ENABLED

Добавлено в версии 5.17.

Настраивает WEBSITE_ALERTS_ENABLED.

CLIENT_MAX_BODY_SIZE

Добавлено в версии 4.16.3.

Настраивает максимальный размер тела, принимаемый встроенным веб сервером.

environment:
    CLIENT_MAX_BODY_SIZE: 200m

Подсказка

В этой переменной намеренно отсутствует префикс WEBLATE_, поскольку он используется совместно со сторонним контейнером, используемым в Автоматический выпуск SSL-сертификатов с помощью сервиса 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

Добавлено в версии 2026.5.

Configures PROJECT_BACKUP_IMPORT_MAX_MEMBERS.

WEBLATE_PROJECT_BACKUP_IMPORT_MAX_TOTAL_UNCOMPRESSED_SIZE

Добавлено в версии 2026.5.

Configures PROJECT_BACKUP_IMPORT_MAX_TOTAL_UNCOMPRESSED_SIZE.

The value is in bytes.

WEBLATE_PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_SIZE

Добавлено в версии 2026.5.

Configures PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_SIZE.

The value is in bytes.

WEBLATE_PROJECT_BACKUP_IMPORT_MIN_RATIO_SIZE

Добавлено в версии 2026.5.

Configures PROJECT_BACKUP_IMPORT_MIN_RATIO_SIZE.

The value is in bytes.

WEBLATE_PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_RATIO

Добавлено в версии 2026.5.

Configures PROJECT_BACKUP_IMPORT_MAX_COMPRESSED_ENTRY_RATIO.

Учётные данные сайтов хостинга кода

В контейнере Docker учётные данные хостинга кода могут быть настроены как в отдельных переменных, так и с помощью словаря Python для их одновременного задания. Приведённые ниже примеры относятся к Запрос на извлечение в GitHub, но применимы ко всем Интеграция с системой контроля версий с соответствующим изменением имён переменных.

Важно

Все имена переменных окружения должны включать префикс WEBLATE_. Например, для настройки учётных данных GitHub используйте WEBLATE_GITHUB_USERNAME, а не GITHUB_USERNAME. Это относится как к настройке для запросов на извлечение, так и к любой другой интеграции системы контроля версий.

Пример конфигурации для запросов на извлечение 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, изменяя GITHUB_CREDENTIALS.

WEBLATE_GITLAB_USERNAME
WEBLATE_GITLAB_TOKEN
WEBLATE_GITLAB_HOST
WEBLATE_GITLAB_CREDENTIALS

Настраивает Запросы на слияние в GitLab, изменяя GITLAB_CREDENTIALS.

WEBLATE_GITEA_USERNAME
WEBLATE_GITEA_TOKEN
WEBLATE_GITEA_HOST
WEBLATE_GITEA_CREDENTIALS

Настраивает Запрос на извлечение в Gitea, изменяя GITEA_CREDENTIALS.

WEBLATE_PAGURE_USERNAME
WEBLATE_PAGURE_TOKEN
WEBLATE_PAGURE_HOST
WEBLATE_PAGURE_CREDENTIALS

Настраивает Запросы на слияние в Pagure, изменяя PAGURE_CREDENTIALS.

WEBLATE_BITBUCKETSERVER_USERNAME
WEBLATE_BITBUCKETSERVER_TOKEN
WEBLATE_BITBUCKETSERVER_HOST
WEBLATE_BITBUCKETSERVER_CREDENTIALS

Настраивает Запросы на извлечение в Bitbucket Data Center, изменяя BITBUCKETSERVER_CREDENTIALS.

WEBLATE_BITBUCKETCLOUD_USERNAME
WEBLATE_BITBUCKETCLOUD_WORKSPACE
WEBLATE_BITBUCKETCLOUD_TOKEN
WEBLATE_BITBUCKETCLOUD_HOST
WEBLATE_BITBUCKETCLOUD_CREDENTIALS

Настраивает Запросы на извлечение в Bitbucket Cloud, изменяя BITBUCKETCLOUD_CREDENTIALS.

WEBLATE_AZURE_DEVOPS_USERNAME
WEBLATE_AZURE_DEVOPS_ORGANIZATION
WEBLATE_AZURE_DEVOPS_TOKEN
WEBLATE_AZURE_DEVOPS_HOST
WEBLATE_AZURE_DEVOPS_CREDENTIALS

Настраивает Запросы на извлечение Azure DevOps, изменяя AZURE_DEVOPS_CREDENTIALS.

Настройки автоматических предложений

Изменено в версии 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

Пример поиска и привязки в Active Directory:

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

GitHub

WEBLATE_SOCIAL_AUTH_GITHUB_KEY
WEBLATE_SOCIAL_AUTH_GITHUB_SECRET
WEBLATE_SOCIAL_AUTH_GITHUB_ORG_KEY
WEBLATE_SOCIAL_AUTH_GITHUB_ORG_SECRET
WEBLATE_SOCIAL_AUTH_GITHUB_ORG_NAME
WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_KEY
WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_SECRET
WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_ID

Включает Авторизация GitHub.

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

Включает Авторизация 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.

Microsoft Entra ID с поддержкой Tenant

WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET
WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID

Включает аутентификацию Microsoft Entra ID с поддержкой Tenant, см. 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.

Настраивает, какой запрос (claim) используется как уникальный идентификатор пользователя от Keycloak. По умолчанию email.

Подсказка

Когда Keycloak настроен на абстрагирование стороннего IDP, вам нужно будет настроить WEBLATE_CSP_FORM_SRC для домена стороннего IDP.

Пример, когда 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 Connect

Добавлено в версии 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.

См. также

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

Имя хоста или IP-адрес сервера PostgreSQL. По умолчанию равен database.

POSTGRES_PORT

Порт сервера PostgreSQL. По умолчанию не установлен (используется значение по умолчанию).

POSTGRES_SSL_MODE

Настраивает обработку SSL сервером PostgreSQL при соединении с сервером, возможные варианты настройки смотрите документе Описания режимов SSL.

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.

Set to false to disable environment based configuration of the database connection. Use Переопределение настроек из тома данных to configure the database connection manually.

Параметры резервного копирования базы данных

WEBLATE_DATABASE_BACKUP

Настраивает ежедневный дамп базы данных с помощью параметра DATABASE_BACKUP. По умолчанию установлен в plain.

Настройка сервера хранилища данных

Использование Valkey или Redis требуется контейнеру Weblate, и вы должны указать параметры подключения при запуске Weblate в Docker.

См. также

Настройка кэша

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

Использовать ли неявное TLS (безопасное) соединение при общении с сервером SMTP. В большей части документации по электронной почте этот тип TLS-соединения называется SSL. Он обычно используется на 465-м порту. Если у вас возникли проблемы, попробуйте включить явный TLS параметром WEBLATE_EMAIL_USE_TLS.

Изменено в версии 4.11: Поддержка SSL/TLS включается автоматически на основе WEBLATE_EMAIL_PORT.

WEBLATE_EMAIL_USE_TLS

Использовать ли TLS (безопасное) соединение при общении с сервером SMTP. Он используется для явных 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.

ROLLBAR_ENVIRONMENT

Ваше окружение Rollbar, по умолчанию установлена в production.

Для включения поддержки Sentry установите следующие переменные:

SENTRY_DSN

Ваш Sentry DSN, см. SENTRY_DSN.

SENTRY_ENVIRONMENT

Ваша среда Sentry (необязательно) по умолчанию: WEBLATE_SITE_DOMAIN.

SENTRY_MONITOR_BEAT_TASKS

Следует ли отслеживать задачи Celery Beat с помощью Sentry, по умолчанию 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.

CDN локализации

WEBLATE_LOCALIZE_CDN_URL
WEBLATE_LOCALIZE_CDN_PATH

Добавлено в версии 4.2.1.

Configuration for CDN add-ons, including CDN локализации JavaScript and Translation files CDN.

Переменная WEBLATE_LOCALIZE_CDN_PATH указывает путь внутри контейнера. Он должен указывать на постоянный том, а не на временное хранилище.

Одной из возможных настроек является направление пути внутрь каталога данных Weblate:

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

Примечание

You are responsible for setting up serving of the files generated by Weblate, it only stores the files in configured location. See CDN локализации for secure serving guidance.

Изменение включённых приложений, проверок, дополнений, машинного перевода или автоисправлений

Встроенную конфигурация включённых проверок, надстроек или автоматических исправлений можно изменить с помощью следующих переменных:

WEBLATE_ADD_APPS
WEBLATE_REMOVE_APPS
WEBLATE_ADD_CHECK
WEBLATE_REMOVE_CHECK
WEBLATE_ADD_AUTOFIX
WEBLATE_REMOVE_AUTOFIX
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_ADD_ADDONS: customize.addons.MyAddon,customize.addons.OtherAddon

Параметры контейнера

WEBLATE_WORKERS

Добавлено в версии 4.6.1.

Базовое количество рабочих процессов, запущенных в контейнере. Если оно не задано, то определяется автоматически при запуске контейнера на основе количества доступных ядер процессора.

Используется для определения CELERY_MAIN_OPTIONS, CELERY_NOTIFY_OPTIONS, CELERY_MEMORY_OPTIONS, CELERY_TRANSLATE_OPTIONS, CELERY_BACKUP_OPTIONS, CELERY_BEAT_OPTIONS, и WEB_WORKERS. Вы можете использовать эти настройки для точной регулировки.

CELERY_MAIN_OPTIONS
CELERY_NOTIFY_OPTIONS
CELERY_MEMORY_OPTIONS
CELERY_TRANSLATE_OPTIONS
CELERY_BACKUP_OPTIONS
CELERY_BEAT_OPTIONS

Эти переменные позволяют настроить параметры рабочего Celery. Может быть полезно подправить степень параллелизма (--concurrency 16) или включить использование другой реализации пула (--pool=gevent).

По умолчанию количество одновременно обработчиков основано на WEBLATE_WORKERS.

Пример:

environment:
  CELERY_MAIN_OPTIONS: --concurrency 16
CELERY_SINGLE_PROCESS

Добавлено в версии 5.7.1: Эту переменную можно установить в 1, чтобы запустить только один процесс celery. Это снижает использование памяти, но может повлиять на производительность Weblate.

environment:
  CELERY_SINGLE_PROCESS: 1
WEB_WORKERS

Настройте, сколько рабочих процессов WSGI должно выполняться.

По умолчанию это половина от WEBLATE_WORKERS, но не менее 2.

Пример:

environment:
  WEB_WORKERS: 4

Изменено в версии 5.13: WEB_WORKERS настраивает, сколько рабочих процессов будет использоваться granian.

WEBLATE_SERVICE

Определяет, какие службы должны выполняться внутри контейнера. Используйте это для Масштабирование по горизонтали.

Определены следующие услуги:

celery-beat

Планировщик задач Celery, должен быть запущен только в одном экземпляре. Этот контейнер также отвечает за миграцию структуры базы данных и должен быть запущен раньше других.

celery-backup

Обработчик Celery для резервного копирования, должен быть запущен только один.

celery-celery

Общий обработчик Celery.

celery-memory

Память переводов обработчиков Celery.

celery-notify

Обработчики уведомлений Celery.

celery-translate

Тип фильтра автоматического перевода обработчика Celery.

web

Веб-сервер.

WEBLATE_ANUBIS_URL

Добавлено в версии 5.11.4.

URL-адрес сервера Anubis для обработки аутентификации подзапросов. Это может быть полезно для фильтрации входящих HTTP-запросов с использованием доказательства выполнения работы для остановки AI-ботов. Чтобы это заработало, вам необходимо настроить Anubis для аутентификации подзапросов.

Тома контейнеров Docker’а

Контейнер Weblate предоставляет два тома (data и cache).

Примечание

Другие сервисные контейнеры (такие как PostgreSQL или Valkey) также имеют свои тома данных, которые необходимы для поддержания сохранности данных Weblate.

Контейнер PostgreSQL хранит базу данных в томе /var/lib/postgresql, а Valkey — в томе /data. Контейнер Valkey по умолчанию не сохраняет данные и требует дополнительной настройки для включения персистентности.

Основывайте свою конфигурацию на примерах, предоставленных Weblate, или обратитесь к их документации для получения дополнительной информации.

Том data монтируется как /app/data и используется для хранения постоянных данных Weblate, таких как клонированные репозитории, или для настройки установки Weblate. DATA_DIR более подробно описывает, что здесь хранится.

Том data также является местом для хранения настроек Weblate, таких как Переопределение настроек из тома данных, Замена логотипа и других статических файлов или Настройка кода.

Непосредственное размещение этого тома в хост-системе зависит от настроек самого Docker’а, но обычно он хранится в каталоге /var/lib/docker/volumes/weblate-docker_weblate-data/_data/ (путь состоит из имени вашего каталога docker-compose, имён контейнеров и томов).

Том cache монтируется как /app/cache и используется для хранения статических файлов и CACHE_DIR. Его содержимое воссоздаётся при запуске контейнера, и том можно смонтировать с использованием эфемерной файловой системы, такой как tmpfs, но монтирование должно разрешать выполнение, поскольку Weblate хранит там сгенерированные вспомогательные файлы.

При явном монтировании /app/cache как tmpfs в Docker Compose включите выполнение:

tmpfs:
  - /app/cache:exec

При также установке параметров владельца сохраните опцию exec:

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

При создании томов вручную, каталоги должны принадлежать UID 1000, так как именно этот пользователь используется внутри контейнера.

Контейнер Weblate также может выполняться с корневой файловой системой только для чтения. В этом случае должны быть смонтированы два дополнительных тома tmpfs: /tmp и /run.

Корневая файловая система только для чтения

Добавлено в версии 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. Создайте собственный Dockerfile, который унаследован от официального образа Docker Weblate, а затем установите ваш пакет и укажите переменную среды 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. Вместо использования официального образа Docker Weblate создайте собственный образ из этого файла Dockerfile.

    Не существует чистого способа сделать это с помощью docker-compose.override.yml. Вы можете добавить build: . в узел weblate в этом файле, но тогда ваше собственное изображение будет помечено в вашей системе как weblate/weblate, что может быть проблематичным.

    Итак, вместо использования docker-compose.yml прямо из официального репозитория, без изменений и расширения его через docker-compose .override.yml, вы можете сделать копию официального файла docker-compose.yml и отредактировать свою копию, заменив image: weblate/weblate на build: ..

    См. «Справочник по сборке файла Compose» для получения подробной информации о создании образов из исходного кода при использовании docker-compose.

  5. Расширьте свой модуль пользовательских настроек, чтобы определить или переопределить настройки.

    Вы можете определить параметры до или после приведенного выше оператора импорта, чтобы определить, какие параметры имеют приоритет. Настройки, определенные до оператора импорта, могут быть переопределены переменными среды и переопределениями настроек, определенными в томе данных. Параметр, определенный после оператора импорта, не может быть переопределен.

    Вы также можете пойти дальше. Например, вы можете воспроизвести некоторые действия, которые weblate.docker_settings делает <https://github.com/WeblateOrg/weblate/blob/main/weblate/settings_docker.py>`__, например, раскрывает настройки в качестве переменных среды или разрешить переопределение настроек из файлов Python в томе данных.

Замена логотипа и других статических файлов

Статические файлы, поставляемые с Weblate, можно переопределить, поместив их в каталог /app/data/python/customize/static (смотрите раздел Тома контейнеров Docker’а). Например, создав файл /app/data/python/customize/static/favicon.ico, вы замените им иконку сайта.

Подсказка

При запуске контейнера файлы копируются в соответствующее место, поэтому после изменения содержимого тома Weblate требуется перезапустить.

Этот подход также можно использовать для переопределения шаблонов Weblate. Например, документы Юридический модуль могут быть помещены в /app/data/python/customize/templates/legal/documents.

В качестве альтернативы вы также можете включить свой собственный модуль (смотрите раздел Настройка Weblate) и добавить его в контейнер Docker’а отдельным томом, например:

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

Настройка кода

Примечание

Внутренний API Weblate может значительно различаться между выпусками и не предназначен для стабильности. Пожалуйста, проверяйте ваш пользовательский код, взаимодействующий с внутренними компонентами Weblate, при каждом обновлении.

Вы можете разместить дополнительный код Python в /app/data/python/customize (см. Тома контейнеров Docker’а). Он уже установлен как приложение Django внутри Weblate (это используется для настройки шаблонов и статических файлов, как описано выше).

Это можно использовать для размещения любого кода (например, Написание собственных проверок) или для добавления пользовательских задач обслуживания в планировщик задач Celery.

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

import subprocess  # noqa: S404

from celery.schedules import crontab

from weblate.utils.celery import app


@app.task
def custom_task() -> None:
    """Execute custom task code."""
    subprocess.run(["sleep", "1"], check=True)  # noqa: S607


@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

  • Сохранение данных: Используйте тома для сервисов, которым необходимо сохранять данные

  • Безопасность: Настройте соответствующие средства контроля доступа и избегайте открытия ненужных портов

Интеграция контейнера Docker LibreTranslate

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:

Для перевода с ускорением на ГП (если у вас есть графический процессор NVIDIA):

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, настройте LibreTranslate в Weblate:

  1. Доступ к интерфейсу администратора Weblate

  2. Перейдите в Машинный переводАвтоматические предложения

  3. Добавьте новую службу LibreTranslate с помощью:

    Сервис:

    LibreTranslate

    URL-адрес API:

    http://libretranslate:5000

    API-ключ:

    Оставьте пустым

Теперь LibreTranslate настроен и доступен для машинного перевода в Weblate.

Примечание

  • Сервис LibreTranslate работает без веб-интерфейса (--disable-web-ui) и доступен только через API внутри сети Docker.

  • Модели автоматически обновляются при запуске контейнера. (LT_UPDATE_MODELS: true)

  • Данные сохраняются с использованием томов Docker для оптимальной производительности и безопасности данных.

  • Проверки работоспособности гарантируют, что движок Docker правильно отслеживает состояние службы.

  • Для ускорения на графическом процессоре используйте вариант образа CUDA и убедитесь, что ваша система поддерживает NVIDIA Docker. Этот контейнер запускается от привилегированного пользователя, чтобы иметь возможность использовать ГП.

  • Внешние порты не открываются, что делает настройку безопасной по умолчанию.

Интеграция контейнера Docker Anubis

Anubis — это утилита веб-брандмауэра для блокировки ИИ-парсеров и другого мешающего трафика на сервере. Обычно она требуется для публично открытых установок Weblate, чтобы избежать чрезмерной нагрузки, вызванной парсингом.

Anubis можно развернуть с помощью 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:

Примечание

Том anubis-data в приведённой выше конфигурации должен содержать botPolicies.yaml с политикой работы с ботами, настроенной в соответствии с вашими потребностями.

Как минимум, вам необходимо настроить коды состояния, как описано в https:// anubis.techaro.lol/docs/admin/configuration/subrequest-auth.

Также рекомендуется настроить бэкенд постоянного хранения, как описано в https:// anubis.techaro.lol/docs/admin/policies/#storage-backends.

Затем вы можете включить использование Anubis в Weblate с помощью:

environment:
   WEBLATE_ANUBIS_URL: http://anubis:8923

См. также

WEBLATE_ANUBIS_URL

Настройка сервера PostgreSQL

Контейнер PostgreSQL использует конфигурацию PostgreSQL по умолчанию, которая неэффективно использует ядра процессора или память. Рекомендуется настроить конфигурацию для повышения производительности.

Конфигурацию можно изменить, как описано в разделе Конфигурация базы данных по адресу 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