Configuration ru - Pa-dej/Vex GitHub Wiki
Конфигурация (Русский)
Здесь перечислены все поля vex.toml. Примеры — валидный TOML.
[listener]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
bind (string) |
"0.0.0.0:25577" |
Адрес для входящих подключений. | bind = "0.0.0.0:25577" |
max_packet_size (int) |
2097152 |
Жёсткий лимит размера фрейма (байты). | max_packet_size = 2097152 |
read_timeout_ms (int) |
15000 |
Таймаут чтения сокета (мс). | read_timeout_ms = 15000 |
write_timeout_ms (int) |
15000 |
Таймаут записи сокета (мс). | write_timeout_ms = 15000 |
Пример:
[listener]
bind = "0.0.0.0:25577"
max_packet_size = 2097152
read_timeout_ms = 15000
write_timeout_ms = 15000
[auth]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
mode (string) |
"auto" |
offline, online или auto. |
mode = "online" |
online_timeout_ms (int) |
5000 |
Таймаут проверки сессии (мс). | online_timeout_ms = 5000 |
session_server (string) |
"https://sessionserver.mojang.com" |
URL сервера сессий Mojang. | session_server = "https://sessionserver.mojang.com" |
Пример:
[auth]
mode = "auto"
online_timeout_ms = 5000
session_server = "https://sessionserver.mojang.com"
[forwarding.velocity]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
enabled (bool) |
false |
Включить Velocity modern forwarding. | enabled = true |
secret (string) |
"change-me" |
HMAC‑секрет, общий с бэкендом. | secret = "change-me-velocity" |
Пример:
[forwarding.velocity]
enabled = true
secret = "change-me-velocity"
[routing]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
strategy (string) |
"least_connections" |
Алгоритм выбора бэкенда. | strategy = "least_connections" |
allow_degraded (bool) |
true |
Работать, даже если все бэкенды unhealthy. | allow_degraded = true |
health_check_enabled (bool) |
true |
Включить активные проверки. | health_check_enabled = true |
connect_timeout_ms (int) |
3000 |
Таймаут подключения к бэкенду (мс). | connect_timeout_ms = 3000 |
retry_on_fail (bool) |
true |
Переходить на другой бэкенд при ошибке. | retry_on_fail = true |
routing.backends
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
name (string) |
(обязательно) | Имя бэкенда в логах/плагинах. | name = "paper-1" |
address (string) |
(обязательно) | host:port бэкенд‑сервера. |
address = "127.0.0.1:25565" |
weight (int) |
100 |
Вес в балансировке. | weight = 100 |
max_connections (int) |
2000 |
Лимит подключений на бэкенд. | max_connections = 2000 |
force_online_mode (bool) |
false |
Принудительный online‑auth для бэкенда. | force_online_mode = false |
Пример:
[routing]
strategy = "least_connections"
allow_degraded = true
health_check_enabled = true
connect_timeout_ms = 3000
retry_on_fail = true
[routing.backends](/Pa-dej/Vex/wiki/routing.backends)
name = "paper-1"
address = "127.0.0.1:25565"
weight = 100
max_connections = 2000
force_online_mode = false
[limits]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
max_connections (int) |
20000 |
Глобальный лимит активных соединений. | max_connections = 20000 |
max_connections_per_ip (int) |
50 |
Лимит активных соединений на IP. | max_connections_per_ip = 50 |
handshake_timeout_ms (int) |
3000 |
Таймаут завершения handshake. | handshake_timeout_ms = 3000 |
login_timeout_ms (int) |
8000 |
Таймаут завершения логина. | login_timeout_ms = 8000 |
idle_timeout_ms (int) |
30000 |
Разрыв при простое. | idle_timeout_ms = 30000 |
Пример:
[limits]
max_connections = 20000
max_connections_per_ip = 50
handshake_timeout_ms = 3000
login_timeout_ms = 8000
idle_timeout_ms = 30000
[anti_bot]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
enabled (bool) |
true |
Главный переключатель антибота. | enabled = true |
global_conn_cap (int) |
25000 |
Глобальный лимит до репутации. | global_conn_cap = 25000 |
per_ip_rate_per_sec (int) |
10 |
Пополнение токенов на IP. | per_ip_rate_per_sec = 10 |
per_subnet_rate_per_sec (int) |
200 |
Пополнение токенов на /24. | per_subnet_rate_per_sec = 200 |
early_reject (bool) |
true |
Ранний дроп кривых фреймов. | early_reject = true |
attack_mode_enabled (bool) |
true |
Авто‑включение attack mode. | attack_mode_enabled = true |
attack_mode_threshold_rps (int) |
3000 |
Порог RPS для attack mode. | attack_mode_threshold_rps = 3000 |
attack_mode_cooldown_secs (int) |
60 |
Время спокойствия до выключения. | attack_mode_cooldown_secs = 60 |
Пример:
[anti_bot]
enabled = true
global_conn_cap = 25000
per_ip_rate_per_sec = 10
per_subnet_rate_per_sec = 200
early_reject = true
attack_mode_enabled = true
attack_mode_threshold_rps = 3000
attack_mode_cooldown_secs = 60
[reputation]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
enabled (bool) |
true |
Включить репутационный скоринг. | enabled = true |
neutral_score (int) |
50 |
Стартовый score для новых IP. | neutral_score = 50 |
min_score (int) |
0 |
Нижняя граница score. | min_score = 0 |
max_score (int) |
100 |
Верхняя граница score. | max_score = 100 |
decay_interval_secs (int) |
60 |
Интервал затухания к нейтрали. | decay_interval_secs = 60 |
decay_step (int) |
1 |
Шаг изменения к нейтрали. | decay_step = 1 |
delay_score_25_49_ms (int) |
200 |
Задержка для score 25–49. | delay_score_25_49_ms = 200 |
delay_score_10_24_ms (int) |
500 |
Задержка для score 10–24. | delay_score_10_24_ms = 500 |
block_duration_1_secs (int) |
30 |
Длительность первого блока. | block_duration_1_secs = 30 |
block_duration_2_secs (int) |
120 |
Длительность второго блока. | block_duration_2_secs = 120 |
block_duration_3_secs (int) |
600 |
Длительность третьего блока. | block_duration_3_secs = 600 |
Пример:
[reputation]
enabled = true
neutral_score = 50
min_score = 0
max_score = 100
decay_interval_secs = 60
decay_step = 1
delay_score_25_49_ms = 200
delay_score_10_24_ms = 500
block_duration_1_secs = 30
block_duration_2_secs = 120
block_duration_3_secs = 600
[health]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
interval_ms (int) |
1500 |
Интервал между проверками. | interval_ms = 1500 |
status_timeout_ms (int) |
1000 |
Таймаут status ping. | status_timeout_ms = 1000 |
tcp_timeout_ms (int) |
800 |
Таймаут TCP fallback. | tcp_timeout_ms = 800 |
unhealthy_threshold (int) |
3 |
Ошибок до unhealthy. | unhealthy_threshold = 3 |
healthy_threshold (int) |
2 |
Успехов до healthy. | healthy_threshold = 2 |
Пример:
[health]
interval_ms = 1500
status_timeout_ms = 1000
tcp_timeout_ms = 800
unhealthy_threshold = 3
healthy_threshold = 2
[observability]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
log_level (string) |
"info" |
Уровень логов. | log_level = "info" |
log_format (string) |
"pretty" |
pretty или json. |
log_format = "json" |
metrics_enabled (bool) |
true |
Экспорт Prometheus‑метрик. | metrics_enabled = true |
metrics_bind (string) |
"0.0.0.0:9100" |
Адрес HTTP для метрик. | metrics_bind = "0.0.0.0:9100" |
metrics_path (string) |
"/metrics" |
Путь HTTP для метрик. | metrics_path = "/metrics" |
Пример:
[observability]
log_level = "info"
log_format = "json"
metrics_enabled = true
metrics_bind = "0.0.0.0:9100"
metrics_path = "/metrics"
[admin]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
bind (string) |
"127.0.0.1:8080" |
Адрес Admin API. | bind = "127.0.0.1:8080" |
auth_token (string) |
"change-me" |
Токен для x-admin-token. |
auth_token = "change-me" |
allow_reload (bool) |
true |
Разрешить POST /reload. |
allow_reload = true |
allow_shutdown (bool) |
true |
Разрешить POST /shutdown. |
allow_shutdown = true |
Пример:
[admin]
bind = "127.0.0.1:8080"
auth_token = "change-me"
allow_reload = true
allow_shutdown = true
[shutdown]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
drain_seconds (int) |
10 |
Время drain до принудительного disconnect. | drain_seconds = 10 |
disconnect_message (string) |
"Proxy shutting down" |
Сообщение при остановке. | disconnect_message = "Proxy restarting" |
Пример:
[shutdown]
drain_seconds = 10
disconnect_message = "Proxy shutting down"
[protocol_map]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
path (string) |
"config/protocol_map.toml" |
Файл карты протоколов. | path = "config/protocol_map.toml" |
Пример:
[protocol_map]
path = "config/protocol_map.toml"
[plugins]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
enabled (bool) |
true |
Включить хост плагинов. | enabled = true |
dir (string) |
"plugins" |
Директория плагинов. | dir = "plugins" |
event_handler_timeout_ms (int) |
500 |
Максимум времени обработчика. | event_handler_timeout_ms = 500 |
intercept_plugin_messages (bool) |
false |
Перехват plugin‑сообщений. | intercept_plugin_messages = true |
watch (bool) |
true |
Watcher файлов плагинов. | watch = true |
watch_debounce_ms (int) |
250 |
Debounce для reload. | watch_debounce_ms = 250 |
Пример:
[plugins]
enabled = true
dir = "plugins"
event_handler_timeout_ms = 500
intercept_plugin_messages = false
watch = true
watch_debounce_ms = 250
[status]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
motd (string) |
"Vex Proxy" |
MOTD по умолчанию. | motd = "Vex Proxy" |
max_players (int) |
1000 |
Отображаемый max игроков. | max_players = 1000 |
show_real_online (bool) |
true |
Показывать реальный online. | show_real_online = true |
sample_players (array) |
[] |
Sample players в статусе. | sample_players = ["Vex", "Proxy"] |
Пример:
[status]
motd = "Vex Proxy"
max_players = 1000
show_real_online = true
sample_players = ["Vex", "Proxy"]
[cluster]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
enabled (bool) |
false |
Включить кластеризацию. | enabled = true |
node_id (string) |
"node-1" |
Уникальный ID ноды. | node_id = "edge-1" |
heartbeat_interval_secs (int) |
5 |
Интервал heartbeat. | heartbeat_interval_secs = 5 |
heartbeat_ttl_secs (int) |
15 |
TTL записи ноды. | heartbeat_ttl_secs = 15 |
allow_degraded (bool) |
true |
Работать без Redis. | allow_degraded = true |
Пример:
[cluster]
enabled = true
node_id = "edge-1"
heartbeat_interval_secs = 5
heartbeat_ttl_secs = 15
allow_degraded = true
[cluster.redis]
| Поле (тип) | Default | Описание | Пример |
|---|---|---|---|
url (string) |
"redis://127.0.0.1:6379" |
URL подключения к Redis. | url = "redis://127.0.0.1:6379" |
connect_timeout_ms (int) |
1000 |
Таймаут первичного подключения. | connect_timeout_ms = 1000 |
command_timeout_ms (int) |
500 |
Таймаут команд Redis. | command_timeout_ms = 500 |
circuit_breaker_errors (int) |
5 |
Ошибки до открытия breaker. | circuit_breaker_errors = 5 |
circuit_breaker_reset_ms (int) |
5000 |
Пауза до сброса breaker. | circuit_breaker_reset_ms = 5000 |
pubsub_channel (string) |
"vex.cluster" |
Канал pub/sub. | pubsub_channel = "vex.cluster" |
Пример:
[cluster.redis]
url = "redis://127.0.0.1:6379"
connect_timeout_ms = 1000
command_timeout_ms = 500
circuit_breaker_errors = 5
circuit_breaker_reset_ms = 5000
pubsub_channel = "vex.cluster"