Перейти к основному контенту

Переменные окружения узла: карта настроек

Узел Клавдия при запуске читает переменные окружения: подключение к базе данных, роли, порты, пути к данным, параметры поиска и хранения. Большую часть значений задаёт установщик; остальные можно добавить при необходимости. Эта статья — карта всех переменных, которые учитывает узел, с указанием, кто их задаёт и когда их стоит менять. Подробные ограничения и особенности каждой переменной — в {{ССЫЛКА:reference.env|справочнике переменных окружения}}.

Перед началом

  • {{ССЫЛКА:install.aio|Установка «всё-в-одном» на Linux через Docker Compose}} или {{ССЫЛКА:install.join-node|добавление узла}} выполнены.

Где задаются переменные

В папке установки (по умолчанию /opt/klvd) лежат:

ФайлЧто в нём
.envзначения, выбранные при установке: роли, порты, адреса базы данных и поиска, папки данных на сервере
docker-compose.ymlописание контейнеров; в секции environment сервиса klvd-node — переменные, которые установщик фиксирует для контейнера (пути внутри контейнера, сертификаты, секреты)
secrets/пароли, ключ кластера и сертификат — передаются в контейнер файлами

Все строки из .env попадают в контейнер узла. Поэтому, чтобы задать переменную, которой нет в файлах, достаточно добавить её в .env. Если та же переменная указана в секции environment файла docker-compose.yml, действует значение из docker-compose.yml.

Как применить изменения

cd /opt/klvd
docker compose up -d --force-recreate klvd-node

Переменные читаются только при запуске узла: без пересоздания контейнера изменения не действуют. Данные в томах не затрагиваются.

Перед правкой сохраните копию .env и docker-compose.yml. Обновление (update.sh) эти файлы не перезаписывает — ваши значения сохраняются.

Пароли и ключи — только файлами

Пароли, ключ кластера и сертификаты не записывайте в .env. Для таких переменных узел принимает вариант с суффиксом _FILE: значение читается из указанного файла. Так установщик передаёт KLVD_SECRET_FILE, POSTGRESQL_USER_FILE и POSTGRESQL_PASSWORD_FILE из папки secrets/.

Карта переменных

Обозначения в столбце «Кто задаёт»: У — установщик в .env, C — установщик в docker-compose.yml, — — по умолчанию не задаётся, добавляйте при необходимости.

Основные

ПеременнаяКто задаётПо умолчаниюНазначение
KLVD_SECRET / KLVD_SECRET_FILEC—ключ кластера (подпись и шифрование данных). Одинаковый на всех узлах. Обязателен: без него узел не запускается
KLVD_ROLESУвсе ролиразрешённые роли узла: storage, importer, indexer, imap, smtp. Веб-интерфейс включён всегда
KLVD_PERSISTENT_DIRC/var/klvdпапка постоянных данных узла внутри контейнера
KLVD_TMP_DIRC/tmp/klvdпапка временных файлов
KLVD_LOG_DIRC—папка журналов. Не задана — журнал только в вывод контейнера
KLVD_SHARED_DIR—/sharedобщая папка узла и контейнеров поиска (настройки кластера Solr, сертификат для Solr)

База данных PostgreSQL

ПеременнаяКто задаётПо умолчаниюНазначение
POSTGRESQL_HOSTУ—адрес сервера базы данных
POSTGRESQL_PORTУ5432порт
POSTGRESQL_DBУ—имя базы данных
POSTGRESQL_USER / POSTGRESQL_USER_FILEC—пользователь базы данных
POSTGRESQL_PASSWORD / POSTGRESQL_PASSWORD_FILEC—пароль
POSTGRESQL_SSLУpreferрежим шифрования: disable, prefer, require, verify-ca, verify-full
POSTGRESQL_SSLROOTCERT——путь к сертификату центра сертификации для verify-ca / verify-full
POSTGRESQL_POOL_INITIAL_SIZE—10соединений с базой при запуске
POSTGRESQL_POOL_MAX_SIZE—100максимум соединений с базой у одного узла
POSTGRESQL_STARTUP_WAIT_SECONDS—60сколько секунд узел ждёт доступности базы при запуске

Веб-интерфейс

ПеременнаяКто задаётПо умолчаниюНазначение
KLVD_WEB_LISTEN_PORTУ8001порт веб-интерфейса
KLVD_WEB_LISTEN_IPC0.0.0.0адрес прослушивания
KLVD_WEB_HTTP_PORTУ—порт перенаправления с http:// на https://. Пусто — перенаправления нет
KLVD_WEB_THREADSC8потоков веб-сервера
KLVD_WEB_SSL_CERTC—сертификат HTTPS (сертификат и ключ в одном PEM-файле). Сертификат, загруженный через веб-интерфейс, имеет приоритет
KLVD_WEB_FORCE_SSL——любое значение запрещает запуск без сертификата

Приём почты и доступ по IMAP

ПеременнаяКто задаётПо умолчаниюНазначение
KLVD_SMTP_LISTEN_PORT—25порт приёма SMTP; имеет приоритет над настройкой узла в интерфейсе
KLVD_IMAP_LISTEN_PORT—993порт IMAP; имеет приоритет над настройкой узла в интерфейсе
KLVD_SMTP_QUEUE_DIRУ, C/var/klvd/smtp-queueочередь принятых по SMTP писем до записи в архив
KLVD_SMTP_MAX_CONN_PER_IP—из настроек, иначе 40одновременных SMTP-соединений с одного адреса
KLVD_SMTP_DRAIN_WORKERS—4потоков записи писем из очереди SMTP в архив
KLVD_SMTP_BATCH_SIZE—10писем, которые один поток забирает из очереди за раз
KLVD_SMTP_RECLAIM_LEASE_SEC—300через сколько секунд письмо, взятое в обработку и не записанное, возвращается в очередь

Хранилище

ПеременнаяКто задаётПо умолчаниюНазначение
KLVD_STORAGE_LISTEN_PORTC8444порт сервера хранилища
KLVD_STORAGE_LISTEN_IPC0.0.0.0адрес прослушивания
KLVD_STORAGE_CONTENT_PATHC—папка с содержимым писем внутри контейнера
KLVD_STORAGE_DATABASE_PATHC—файл служебной базы хранилища
KLVD_STORAGE_SSL_CERTC—сертификат HTTPS хранилища
KLVD_STORAGE_FORCE_SSL——любое значение запрещает запуск хранилища без сертификата
KLVD_STORAGE_SSL_VERIFY—01 — строгая проверка сертификатов при обмене между узлами
KLVD_STORAGE_EXTERNAL_URL—определяется автоматическиадрес хранилища для других узлов, если узел доступен по другому адресу (прокси, NAT)
KLVD_STORAGE_THREADS—8потоков сервера хранилища
KLVD_STORAGE_PARALLEL—4узлов, на которые копия отправляется одновременно (до 16)
KLVD_STORAGE_BATCH_SIZE—16частей письма в одном пакете при перераспределении (до 64)
KLVD_STORAGE_PUSH_RETRIES—3повторов отправки при сбое связи (до 10)
KLVD_STORAGE_PUSH_RETRY_DELAY_MS—2000пауза между повторами, мс (до 30000)

Поиск

ПеременнаяКто задаётПо умолчаниюНазначение
KLVD_SOLR_URLУ—адрес службы поиска. Адрес, заданный в интерфейсе, имеет приоритет
KLVD_SOLR_HOST—определяется автоматическиадрес этого узла, публикуемый другим узлам для подключения к его Solr
KLVD_SOLR_PORT—8983порт Solr этого узла
KLVD_SOLR_SCHEME—схема KLVD_SOLR_URL, иначе httphttp или https для адреса Solr этого узла
KLVD_SOLR_EXTERNAL_URL——полный адрес Solr этого узла для других узлов (вместо KLVD_SOLR_HOST/PORT/SCHEME)
KLVD_SOLR_SSL_VERIFY——1 — строгая проверка сертификата Solr; иначе самоподписанный сертификат принимается
KLVD_SOLR_CA_PATH——сертификат центра сертификации для проверки Solr (вместе с KLVD_SOLR_SSL_VERIFY=1)
KLVD_INDEXER_WORKERS—4потоков извлечения текста из вложений (до 32)

Подключение к почтовым серверам

ПеременнаяКто задаётПо умолчаниюНазначение
KLVD_VERIFY_CERTS_CA—falsetrue — проверять TLS-сертификаты серверов Exchange (EWS) и IMAP при сборе почты, восстановлении писем и просмотре папок источника

Мониторинг и диагностика

ПеременнаяКто задаётПо умолчаниюНазначение
KLVD_METRICS_PORT——включает порт метрик Prometheus (/metrics, /livez, /readyz)
KLVD_DISK_MOUNTS—/,/var/klvdточки монтирования для метрик дискового пространства, через запятую
KLVD_VERBOSE_LOGS——1 — расширенные диагностические сообщения в журнале

Прочее

ПеременнаяКто задаётПо умолчаниюНазначение
KLVD_EXPORT_ZIP_MAX—500сколько писем можно выгрузить одним ZIP-архивом из интерфейса
KLVD_CONN_GRAPH_MANIFEST_DIR—/var/klvd/conn-graphпапка подписанного списка внутренних доменов организации

Папки на сервере (только .env)

Эти переменные использует docker-compose.yml, чтобы подключить папки сервера к контейнерам; сам узел их не читает.

ПеременнаяНазначение
KLVD_IMAGE_TAGверсия образа узла
KLVD_STORAGE_DATA_HOSTпапка на сервере для содержимого писем
KLVD_LOGS_HOSTпапка на сервере для журналов
KLVD_TMP_HOSTпапка на сервере для временных файлов
KLVD_SEARCH_INDEX_HOSTпапка на сервере для поискового индекса
POSTGRESQL_CONF_HOSTпапка конфигурации локальной PostgreSQL

Типовые изменения

ЗадачаЧто сделать
Сменить порт веб-интерфейсаизменить KLVD_WEB_LISTEN_PORT в .env
Включить перенаправление с HTTP на HTTPSзадать свободный порт в KLVD_WEB_HTTP_PORT
Подключить внешнюю базу данных по шифрованному каналуPOSTGRESQL_HOST, POSTGRESQL_SSL=verify-full, POSTGRESQL_SSLROOTCERT
Включить проверку сертификатов почтовых серверовKLVD_VERIFY_CERTS_CA=true
Подключить PrometheusKLVD_METRICS_PORT=9100 и открыть порт в межсетевом экране
Собрать диагностику для поддержкивременно KLVD_VERBOSE_LOGS=1, после сбора — удалить

Порты SMTP и IMAP удобнее задавать в интерфейсе для каждого узла — см. {{ССЫЛКА:maintenance.cluster-config|Изменение ролей и конфигурации узла}}. Переменная окружения имеет приоритет над интерфейсом, и интерфейс отмечает такой порт как «используется из ENV».

Что дальше

  • {{ССЫЛКА:reference.env|Справочник: переменные окружения и Docker Compose}}
  • {{ССЫЛКА:install.first-start|Первый вход и смена пароля администратора}}

Навигация по книге

  • Следующая статья: {{ССЫЛКА:install.first-start|Первый вход и смена пароля администратора}}