Главные файлы настроек
Webim Server читает основные настройки из файлов main.ini и main.json, а также из дополнительных файлов в каталогах main.ini.d и main.json.d. Эти источники объединяются в итоговую конфигурацию при старте компонентов.
Расположение файлов
По умолчанию главные файлы настроек расположены в каталоге /etc/webim/:
-
/etc/webim/main.ini -
/etc/webim/main.ini.d/*.ini -
/etc/webim/main.json -
/etc/webim/main.json.d/*
Имена main.ini, main.json, а также каталогов main.ini.d и main.json.d заданы в коде и не могут быть изменены настройками.
-
В
main.ini.dможно размещать один или несколько файлов с любыми именами, но с расширением.ini. -
В
main.json.dможно размещать.json-файлы, однако для совместимости всех компонентов рекомендуется использовать файлmain.json.d/main.json(см. ниже).
Форматы файлов
main.ini
main.ini — ini-подобный файл с плоской структурой ключ=значение.
Пример:
service_user=service
service_password=secret
secure_internal_requests=true
nginx_upload_size=10
Массивы задаются через суффикс [] (каждое значение — отдельной строкой):
my_ips[]=192.168.10.10
my_ips[]=192.168.10.20
frontend_ips[]=192.168.10.10
Примечания:
-
Секции вида
[section]в ini-стиле не используются (в части компонентов такие строки будут игнорироваться). -
Комментарии в строках допускаются (обычно через
;,#), но рекомендуется не смешивать комментарии и значения в одной строке.
main.json
main.json — JSON-файл, который поддерживает древовидную (вложенную) структуру настроек.
Пример:
{
"email_method_by_email_type": {
"default": "smtp",
"php": "smtp",
"default_notification": "mailgun"
},
"password_hashers": [
{"id": "md5-legacy", "algo": "md5", "salt": "legacy-salt"},
{"id": "sha256", "algo": "sha256", "salt": "new-salt"}
],
"encryption": [
{"id": "fernet-default", "algo": "fernet-pbkdf2", "password": "dev-password", "salt": "dev-salt"}
],
"partner_settings": {
"default": {"domain": "webim.ru"},
"partner1": {"domain": "example.com"}
}
}
Как собираются настройки из main.ini/main.json и каталогов *.d
Какие файлы читаются
Компоненты Webim Server читают настройки из следующих путей:
-
main.ini:-
/etc/webim/main.ini -
все файлы
*.iniв/etc/webim/main.ini.d/
-
-
main.json:-
/etc/webim/main.json -
файлы в
/etc/webim/main.json.d/(см. совместимость ниже)
-
Если какой-либо из файлов отсутствует, он просто пропускается. Наличие каждого отдельного файла (например, только main.ini или только main.json) само по себе не является обязательным, но итоговая конфигурация должна содержать параметры, необходимые используемым компонентам и включённым функциям.
Правила объединения (merge)
При объединении настроек используются следующие правила:
-
Скалярные значения (строки/числа/булевы значения) при совпадении ключа переопределяются значением из более позднего источника.
-
Словари/объекты (map/dict) при совпадении ключа объединяются рекурсивно по ключам.
-
Списки/массивы при совпадении ключа конкатенируются (элементы добавляются в конец).
Важно:
- Порядок чтения файлов внутри каталогов
main.ini.dиmain.json.dне следует считать гарантированным. Не рекомендуется полагаться на «перезапись» одного и того же ключа в разных файлах внутри одного каталога. Если требуется предсказуемое поведение — храните конкретный ключ в одном месте.
Совместимость main.json.d между компонентами
Часть компонентов (в частности, некоторые Python-утилиты) исторически читает только файл:
/etc/webim/main.json.d/main.json
Другие компоненты (например, Admin Backend и PHP-часть) могут читать все *.json в каталоге main.json.d.
Рекомендация: чтобы настройки из main.json.d гарантированно подхватывались всеми компонентами, используйте файл:
/etc/webim/main.json.d/main.json
А дополнительные .json-файлы в main.json.d применяйте только если вы точно понимаете, какие компоненты их читают в вашей инсталляции.
Обязательные параметры
Наличие конкретных «обязательных» параметров зависит от режима работы (hosted/облако), подключённых компонентов и включённых интеграций.
При этом Webim Server в типовой инсталляции ожидает, что в суммарной конфигурации (из всех источников) будут присутствовать ключевые параметры:
-
параметры сервисной авторизации для внутренних запросов (например,
service_user,service_password,service_password_salt); -
сетевые параметры (например,
my_ips[],frontend_ips[]) — если они используются вашей схемой развёртывания; -
пути к рабочим директориям (например,
ready_images_dir,web_cache_dir, а также пути к данным аккаунтов).
Если включены дополнительные компоненты/интеграции, становятся обязательными и соответствующие параметры (например, mq_* для RabbitMQ, параметры Mailgun/SMTP для почты и т. п.).
Параметры
Ниже перечислены наиболее используемые параметры, которые могут встречаться в главных файлах настроек. Для main.json параметры задаются соответствующими ключами/объектами JSON.
| Параметр | Где задаётся | Обязательность | Тип | Пример | Значение |
|---|---|---|---|---|---|
service_user |
main.ini |
Да | строка | service |
Логин сервисного пользователя для внутренних запросов (Basic Auth). |
service_password |
main.ini |
Да | строка | secret |
Пароль сервисного пользователя для внутренних запросов (Basic Auth). |
service_password_salt |
main.ini |
Да | строка | some_salt |
Соль, используемая в механизмах сервисной авторизации (в т.ч. при проверке пароля сервисного доступа). |
accounts-base-local-dir |
main.ini |
Да | строка (путь) | /var/pro/client-data/cd |
Локальный путь к директории, где хранятся данные/конфиги учётных записей. |
my_ips[] |
main.ini |
Зависит | список строк (IP/CIDR) | 192.168.10.10 |
IP-адреса/подсети, на которых работает Webim Server. |
frontend_ips[] |
main.ini |
Зависит | список строк (IP/CIDR) | 192.168.10.10 |
IP-адреса, на которых расположен фронтэнд Webim Server. |
online_dir |
main.ini |
Зависит | строка (путь) | /var/cache/webim |
Директория для хранения онлайн-ресурсов и файлов. |
web_cache_dir |
main.ini |
Зависит | строка (путь) | /var/cache/webim |
Директория для кэша Webim Server. |
ready_images_dir |
main.ini |
Да | строка (путь) | /var/cache/webim |
Директория для сохранения обработанных изображений. |
logged_operators_dir |
main.ini |
Зависит | строка (путь) | /var/log/webim/operators |
Директория для служебных файлов, связанных с логированием активности операторов (если используется). |
secure_internal_requests |
main.ini |
Нет | bool | true |
Требование защищённых внутренних запросов (true — HTTPS, false — HTTP). |
nginx_upload_size |
main.ini |
Нет | int | 10 |
Максимальный размер загружаемого файла (МБ). |
blocked_notify_email |
main.ini |
Нет | строка (email) | somemail@example.com |
Адрес для отправки уведомлений о блокировках. |
server_monitoring_email |
main.ini |
Нет | строка (email) | somemail@example.com |
Адрес для уведомлений, связанных с мониторингом сервера. |
service_notifications_emails |
main.ini |
Зависит | строка (email) | somemail@example.com |
Адрес(а) для отправки сервисных уведомлений (используется отдельными сервисами, например биллингом). |
webim_support_email |
main.ini |
Нет | строка (email) | support@example.com |
Адрес службы поддержки. |
mq_host |
main.ini |
Зависит | строка | rabbitmq |
Хост RabbitMQ. |
mq_port |
main.ini |
Зависит | int | 5672 |
Порт RabbitMQ. |
mq_username |
main.ini |
Зависит | строка | user |
Имя пользователя RabbitMQ. |
mq_password |
main.ini |
Зависит | строка | password |
Пароль RabbitMQ. |
mailgun_key |
main.ini |
Зависит | строка | key-ExamPle3xAMPle |
API-ключ Mailgun (исторический параметр). |
channels_email_mailgun_api_key_v2 |
main.ini |
Зависит | строка | 3f9a1d... |
Новый API-ключ Mailgun для исходящих запросов. Указывать без префикса key-. |
channels_email_mailgun_webhook_signing_key |
main.ini |
Зависит | строка | 6c72bb... |
Ключ проверки подписи вебхуков Mailgun (timestamp/token/signature). |
mailgun_dev_domain |
main.ini |
Зависит | строка (домен) | sandbox1234.mailgun.org |
Домен Mailgun для dev-режима. |
hostedmode |
main.ini |
Зависит | bool | true |
Режим работы: true — hosted, false — облако. |
hostedmode_smtp_server |
main.ini |
Зависит | строка | smtp.mailgun.org |
SMTP-сервер для hosted-режима (legacy-настройки). |
hostedmode_smtp_port |
main.ini |
Зависит | int | 4242 |
Порт SMTP-сервера (legacy-настройки). |
hostedmode_smtp_username |
main.ini |
Зависит | строка | user |
Логин SMTP (legacy-настройки). |
hostedmode_smtp_password |
main.ini |
Зависит | строка | pass |
Пароль SMTP (legacy-настройки). |
hostedmode_smtp_encryption |
main.ini |
Зависит | enum | tls |
Шифрование SMTP: none, ssl, tls (legacy-настройки). |
hostedmode_smtp_auth_mode |
main.ini |
Зависит | enum | login |
Аутентификация SMTP: login, plain, cram-md5, либо пустое значение (legacy-настройки). |
hostedmode_smtp_timeout |
main.ini |
Зависит | int | 30 |
Таймаут SMTP (секунды, legacy-настройки). |
hostedmode_smtp_skip_ssl_check |
main.ini |
Нет | bool | true |
Игнорирование проверки SSL/TLS сертификатов (legacy-настройки). |
https_domains[] |
main.ini |
Нет | список строк (домен) | example.com |
Список доменов, для которых включается логика HTTPS (если используется). |
channels_proxy_base_url |
main.ini |
Зависит | строка (URL) | https://api.proxyserver.com |
Базовый URL сервиса прокси каналов. |
channels_proxy_api_url |
main.ini |
Зависит | строка (URL) | https://proxyserver.com |
URL proxy API (создание/удаление канала для hosted и т. п.). |
channels_proxy_api_secret_key |
main.ini |
Зависит | строка | s3cr3t |
Секретный ключ для операций с кастомными каналами через proxy API. |
channels_apple_chat_encrypted_data_length_check_disabled |
main.ini |
Нет | bool | false |
Включение/отключение проверки длины зашифрованных сообщений Apple Messages for Business. |
docker_sub_net |
main.ini |
Нет | строка (CIDR) | 172.195.0.0/28 |
Подсеть для Docker (если используется). |
browscap-path |
main.ini |
Нет | строка (путь) | /var/pro/browscap/browscap.ini |
Путь к browscap.ini для определения возможностей браузера. |
browscap-csv-path |
main.ini |
Нет | строка (путь) | /var/pro/browscap/browscap.csv |
Путь к browscap в формате CSV. |
nginx_geosearch |
main.ini |
Нет | bool | false |
Включение геопоиска на стороне NGINX (если используется). |
python_geosearch |
main.ini |
Нет | bool | true |
Включение геопоиска на стороне Python (если используется). |
registration_mail_jira |
main.ini |
Нет | строка (email) | somemail@example.com |
Адрес для уведомлений о регистрации (если используется). |
email_method_by_email_type |
main.json |
Нет | объект (map) | {"default":"smtp","php":"mailgun"} |
Выбор метода отправки почты по типу письма. Ключи — тип письма или default, значения — smtp или mailgun. |
password_hashers |
main.json |
Зависит | список объектов | см. пример выше | Список поддерживаемых алгоритмов хеширования паролей операторов. Элемент: {id, algo, salt}. Если параметр не задан, используется legacy-логика. |
encryption |
main.json |
Нет | список объектов | см. пример выше | Настройки расшифровки значений формата encrypted:<id>:<cipher>. Поддерживается algo=fernet-pbkdf2 (PBKDF2-SHA256). Элемент: {id, algo, password, salt}. |
partner_settings |
main.json |
Зависит | объект (map) | см. пример выше | Настройки партнёров (например, домены). Обычно содержит ключ default и опциональные ключи партнёров. |