Перейти к содержанию

Справочник по конфигурации сервера

Полная справочная информация по всем полям в server.toml.


Поля верхнего уровня

Все поля находятся в секции [server] или на корневом уровне (оба варианта допустимы).

Поле Тип По умолчанию Описание
bind_address string "0.0.0.0:443" Адрес и порт для прослушивания. Используйте "0.0.0.0:443" для всех интерфейсов или "127.0.0.1:8443" только для localhost (за обратным прокси).
tls_cert_file path "certs/cert.pem" Путь к TLS-сертификату (формат PEM).
tls_key_file path "certs/key.pem" Путь к приватному ключу TLS (формат PEM).
identity_key_file path "server_identity.key" Путь к ключу идентификации X3DH сервера. Генерируется командой rvpn-server keygen.
websocket_path string "/api/v1/ws" Путь WebSocket эндпоинта. Изменяйте для каждого развёртывания во избежание обнаружения.
http_port integer (отключён) Если задан, также слушать на этом порту для обычного HTTP (например, 80) для ACME-вызовов и перенаправлений HTTP->HTTPS.
redirect_http_to_https bool true Когда задан http_port, перенаправлять все HTTP-запросы на HTTPS.
decoy_root path (нет) Путь к каталогу статических файлов для отображения неаутентифицированным браузерам. Сервер выглядит как обычный веб-сайт.
prekey_rotation_hours integer 168 Как часто (в часах) сервер ротирует подписанный предключ X3DH. По умолчанию 7 дней.
one_time_prekey_count integer 100 Сколько одноразовых предключей генерировать и публиковать в пакете предключей.
prekey_bundle_file path (нет) Если задан, загружать ключи X3DH из этого файла вместо генерации новых. Используйте для восстановления из резервной копии идентичности.

[server.rate_limit]

Управляет количеством подключений, которые может установить один IP-адрес.

Поле Тип По умолчанию Описание
max_connections_per_ip integer 500 Максимальное количество одновременных подключений с одного IP-адреса.
max_handshakes_per_minute integer 2000 Максимальное количество попыток новых рукопожатий с одного IP в минуту. Помогает предотвратить перебор.
[server.rate_limit]
max_connections_per_ip     = 10
max_handshakes_per_minute  = 20

[server.network]

Сетевые настройки на стороне сервера, используемые при работе в режиме TUN / полного туннеля.

Поле Тип По умолчанию Описание
nat_enabled bool true Включить NAT (маскарадинг) для трафика, выходящего с сервера. Необходимо для доступа клиентов в интернет через туннель.
dhcp_range string "10.200.0.0/24" Пул IP для назначения туннельных адресов клиентам.
dns_servers list ["1.1.1.1"] DNS-серверы, передаваемые клиентам для подключений в режиме туннеля.
[server.network]
nat_enabled  = true
dhcp_range   = "10.200.0.0/24"
dns_servers  = ["1.1.1.1", "8.8.8.8"]

[server.tun]

Настройки для режима TUN-to-TUN. При включении сервер создаёт TUN-интерфейс и маршрутизирует пакеты клиентов через него.

Поле Тип По умолчанию Описание
enabled bool false Включить TUN-режим. При false сервер использует режим ретрансляции (в стиле Brook).
tun_ip string "10.200.0.1/24" IP-адрес TUN-интерфейса и префикс подсети.
mtu integer 1420 MTU TUN-интерфейса.
interface_name string "tun0" Имя создаваемого TUN-интерфейса.
[server.tun]
enabled = true
tun_ip = "10.200.0.1/24"
mtu = 1420
interface_name = "tun0"

Полный пример

[server]
bind_address           = "0.0.0.0:443"
tls_cert_file          = "/etc/rvpn/certs/cert.pem"
tls_key_file           = "/etc/rvpn/certs/key.pem"
identity_key_file      = "/etc/rvpn/server_identity.key"
websocket_path         = "/api/v1/ws"
http_port              = 80
redirect_http_to_https = true
decoy_root             = "/var/www/decoy"
prekey_rotation_hours  = 168
one_time_prekey_count  = 100

[server.rate_limit]
max_connections_per_ip    = 500
max_handshakes_per_minute = 2000

[server.network]
nat_enabled  = true
dhcp_range   = "10.200.0.0/24"
dns_servers  = ["1.1.1.1"]

[server.tun]
enabled = true
tun_ip = "10.200.0.1/24"
mtu = 1420
interface_name = "tun0"

Режим обратного прокси

При работе за Caddy, nginx или другим обратным прокси с терминацией TLS установите bind_address на порт localhost и предоставьте прокси обработку TLS. Направьте пересылку WebSocket прокси на тот же путь:

[server]
bind_address      = "127.0.0.1:8443"
tls_cert_file     = ""      # не используется -- TLS обрабатывает прокси
tls_key_file      = ""
websocket_path    = "/api/v1/ws"

Пример для Caddy:

your.domain.com {
    handle /api/* {
        reverse_proxy 127.0.0.1:8443
    }
    handle {
        root * /var/www/html
        file_server
    }
}

Сопоставитель пути должен быть /api/* (совпадение по префиксу), а не /api (точное совпадение).