Настройки config.json
config.json лежит рядом с сервером. Его создаёт мастер настройки или первый запуск; поля, которых нет в файле, берутся по умолчанию. После правки перезапустите сервер. Каналы, роли, блокировки и ники в config.json не хранятся - они в базе и меняются из клиента.
Поля
| Поле | По умолчанию | Значение |
|---|---|---|
version |
версия сервера | Какая версия записала файл (см. ниже) |
name |
AVOICE |
Название сервера |
welcome |
текст | Приветствие при подключении |
description |
- | Описание сервера (Markdown), видно в «О сервере» |
listen |
0.0.0.0:7700 |
Адрес и порт. Тот же номер используется для UDP |
publicIP |
- | Внешний IP при NAT или в Docker |
tls |
auto |
auto - свой сертификат; files - ваш (certFile, keyFile); off - без TLS, за HTTPS-прокси |
dataDir |
data |
База, файлы и сертификат |
maxUsers |
64 | Слотов на сервере |
maxRoomUsers |
25 | Человек в одной голосовой комнате |
maxUploadMB |
25 | Предел одного файла |
storageMB |
2048 | Общее место под файлы; старые удаляются, когда оно кончается |
storage |
local |
Где хранить файлы: local или s3 |
s3 |
- | Подключение к S3, см. Файлы, S3 и резервные копии |
listed |
false |
Показывать сервер в общем списке |
publicAddress |
- | Адрес для общего списка: домен или IP, с :порт, если не 7700 |
ownerId |
- | ID владельца |
ownerPassword |
случайный | Пароль владельца |
serverPassword |
- | Пароль на весь сервер: его спрашивают один раз у всех, кроме владельца. Сервер с паролем не попадает в общий список |
checkUpdates |
true |
Узнавать у сайта проекта о новой версии |
autoUpdate |
false |
Ставить новую версию самому, когда никого нет (только для службы) |
backupDays |
7 | Сколько дней хранить ежедневные копии базы; 0 - выключить |
trustProxy |
false |
Брать IP клиента из X-Forwarded-For (только за своим прокси) |
iceServers |
[] |
STUN/TURN для сетей, где UDP закрыт |
Пример
{
"name": "Ламповый уголок",
"listen": "0.0.0.0:7700",
"publicIP": "203.0.113.5",
"maxUsers": 32,
"ownerId": "1460bac4f4a6c0c6dcd80cbfeca27f66",
"ownerPassword": "длинный-случайный-пароль",
"listed": true,
"publicAddress": "voice.example.com"
}
Переменные окружения
Любое поле можно переопределить переменной - удобно в Docker: AVOICE_NAME, AVOICE_LISTEN, AVOICE_PUBLIC_IP, AVOICE_TLS, AVOICE_DATA_DIR, AVOICE_MAX_USERS, AVOICE_MAX_ROOM_USERS, AVOICE_MAX_UPLOAD_MB, AVOICE_STORAGE_MB, AVOICE_OWNER_ID, AVOICE_OWNER_PASSWORD, AVOICE_SERVER_PASSWORD, AVOICE_STORAGE, AVOICE_S3_ENDPOINT, AVOICE_S3_REGION, AVOICE_S3_BUCKET, AVOICE_S3_PREFIX, AVOICE_S3_ACCESS_KEY, AVOICE_S3_SECRET_KEY, AVOICE_S3_PATH_STYLE, AVOICE_S3_INSECURE, AVOICE_LISTED, AVOICE_PUBLIC_ADDRESS, AVOICE_CHECK_UPDATES, AVOICE_AUTO_UPDATE, AVOICE_TRUST_PROXY, AVOICE_ICE_SERVERS (JSON).
Значения из переменных никогда не записываются в config.json - например, секрет S3 из Docker не окажется в файле.
Когда сервер обновился
Новая версия при первом запуске со старым config.json дописывает в него новые настройки со значениями по умолчанию, не трогая ваши, и сохраняет прежний файл рядом как config.json.bak-<старая версия>. В журнале появится строка, какие поля добавлены. Настройки, которых эта версия не знает, сохраняются как есть.
Свой сертификат и домен
По умолчанию сервер сам выпускает себе сертификат, и клиенты один раз подтверждают его отпечаток. Если есть домен, можно поставить сервер за Caddy с сертификатом Let's Encrypt: "tls": "off", "listen": "127.0.0.1:7700", "trustProxy": true, а Caddy принимает HTTPS на 443 и передаёт AVOICE. Голос при этом по-прежнему идёт напрямую на UDP 7700. В клиенте такой сервер указывается как https://voice.example.com (порт 443).