Конфигурация

Все настройки сервера хранятся в одном файле config.toml. На этой странице описано каждое поле.

Основные настройки

Поле Описание Пример
domain Доменное имя вашего сервера "chat.example.com"
listen_addr Адрес прослушивания ":443" или ":8080"
data_dir Путь к каталогу данных (БД + файлы) "./data"
transport Режим транспорта "https", "cloudflare" или "vless"

Безопасность

Поле Описание
secret 64-символьная hex-строка. Мастер-секрет для генерации ключей JWT и шифрования через HKDF. Генерируется мастером настройки. Никогда не раскрывайте. Если запустить freedom-mess protect-secret, на диске поле будет пустым, а зашифрованный контейнер появится в [encrypted_secret].
[encrypted_secret] Необязательный AES-256-GCM контейнер для текущего мастер-секрета. Ключ разблокировки выводится из серверной passphrase через Argon2id. Старые секреты хранятся в [[encrypted_previous_secrets]]. Для автоматических перезапусков используйте FREEDOM_MESS_CONFIG_PASSPHRASE_FILE или systemd credentials.
previous_secrets Массив старых секретов. При ротации мастер-секрета старый перемещается сюда. Старые сообщения продолжают расшифровываться. В защищённом конфиге они хранятся как записи [[encrypted_previous_secrets]].
salt 64-символьная hex-строка. Используется в HKDF вместе с секретом.
bootstrap_token UUID для первой ссылки-приглашения. Используется один раз при начальной настройке.

Защита мастер-секрета

Актуальные Linux-скрипты защищают новые конфиги автоматически. Старые конфиги с открытым secret продолжают работать; чтобы зашифровать такой конфиг на месте, выполните:

freedom-mess protect-secret

При интерактивном запуске сервер спросит passphrase. Для автоматического systemd-перезапуска храните passphrase в файле только для владельца и передайте путь сервису:

sudo install -d -o freedom-mess -g freedom-mess -m 700 /etc/freedom-mess
sudo sh -c 'umask 077; cat > /etc/freedom-mess/config-passphrase'
sudo chown freedom-mess:freedom-mess /etc/freedom-mess/config-passphrase
Environment=FREEDOM_MESS_CONFIG_PASSPHRASE_FILE=/etc/freedom-mess/config-passphrase

На современных systemd-серверах лучше использовать credentials:

LoadCredential=freedom-mess-config-passphrase:/etc/freedom-mess/config-passphrase

TURN-сервер

Поле Описание По умолчанию
public_ip Публичный IP-адрес сервера для TURN Автоопределение
turn_port UDP-порт для TURN-сервера 3478

Секция [acme] (режим HTTPS)

Поле Описание
email Email для уведомлений Let's Encrypt
cert_dir Каталог для хранения TLS-сертификатов
http_addr Адрес для HTTP-01 challenge (по умолчанию ":80")

Секция [cloudflare] (режим Cloudflare)

Поле Описание
trust_proxy Доверять заголовку CF-Connecting-IP
origin_cert Путь к origin-сертификату Cloudflare (необязательно)
origin_key Путь к origin-ключу Cloudflare

Секция [stealth] (режим VLESS)

Поле Описание
keys.uuid UUID клиента VLESS
keys.private_key Приватный ключ X25519 для REALITY
keys.public_key Публичный ключ X25519 (передаётся клиентам)
keys.short_id Короткий ID для аутентификации клиентов
sni Server Name Indication (по умолчанию "www.microsoft.com")
fallback_addr Куда перенаправляется не-VLESS трафик (сайт-прикрытие)

Пример config.toml

domain = "chat.example.com"
listen_addr = ":443"
data_dir = "./data"
transport = "https"

secret = "a1b2c3d4...64-символьный-hex..."
salt = "e5f6a7b8...64-символьный-hex..."
bootstrap_token = "uuid-здесь"

public_ip = "203.0.113.10"
turn_port = 3478

[acme]
email = "[email protected]"
cert_dir = "./certs"
http_addr = ":80"
Файл config.toml содержит мастер-секрет, пока не выполнен protect-secret. Храните резервные копии конфига и passphrase разблокировки отдельно. Сервер требует права доступа 0600 и предупреждает, если файл более доступен.