● Настройка

Конфигурационный файл

Как описать несколько туннелей в fxtunnel.yaml и запустить их одной командой: создание файла, все параметры, порядок поиска, приоритет и переменные окружения.

3 мин чтенияОбновлено 23 сентября 2026 г.

Конфигурационный файл нужен, когда туннелей несколько или их параметры не хочется набирать каждый раз. Все туннели из файла запускаются одной командой.

Создание файла

bash
$fxtunnel init

Мастер спросит тип туннеля, имя и локальный порт, для HTTP — поддомен, для TCP и UDP — удалённый порт, и сохранит fxtunnel.yaml в текущей папке. Если файл уже есть, туннели можно добавить к нему или перезаписать его. Перед этим войдите по токену — «Аутентификация».

Файл можно написать и вручную:

yaml
# fxtunnel.yaml
tunnels:
  - name: web
    type: http
    local_port: 3000
    subdomain: myapp
    basic_auth: "team:SharedPass123"

  - name: ssh
    type: tcp
    local_port: 22
    remote_port: 12222
    allow_ips:
      - 203.0.113.0/24

Запуск

bash
# fxtunnel.yaml из текущей папки
$fxtunnel

# другой файл
$fxtunnel --config path/to/config.yaml

Туннели работают, пока запущен клиент. Чтобы они работали в фоне, запустите их через daemon-режим: fxtunnel up.

Заметка

Команды fxtunnel http, fxtunnel tcp и fxtunnel udp конфигурационный файл не читают — они открывают один туннель с параметрами из флагов.

Где клиент ищет файл

Без --config клиент берёт первый найденный:

  1. fxtunnel.yaml в текущей папке;
  2. client.yaml в текущей папке;
  3. configs/client.yaml;
  4. ~/.fxtunnel/client.yaml.

Параметры туннеля

Каждый элемент списка tunnels:

ПараметрОписаниеПо умолчанию
nameИмя туннеля, видно в логах и инспекторе
typehttp, tcp или udp; обязателен
local_portЛокальный порт, 1–65535; обязателен
local_addrАдрес локального сервиса, если он не на этом компьютере, например IP контейнераэтот компьютер
subdomainПоддомен, только для httpслучайный
remote_portПорт на сервере для tcp и udp; 0 — выбрать автоматически0
basic_authBasic Auth в формате user:password, пароль от 8 символов, только для http
allow_ipsРазрешённые IP и подсетивсе адреса
auto_closeЗакрытие при простое: 30m, 2h
max_lifetimeМаксимальное время жизни: 8h, 7d

Параметры повторяют флаги команд — подробнее в разделах «HTTP-туннели» и «TCP-туннели». Пароль из basic_auth клиент отправляет на сервер в виде bcrypt-хеша.

Остальные секции

yaml
server:
  token: "sk_fxtunnel_ваш_токен"
  compression: true

reconnect:
  enabled: true
  interval: 5s
  max_attempts: 0

inspect:
  enabled: true
  addr: "127.0.0.1:4040"
ПараметрОписаниеПо умолчанию
server.addressАдрес сервера host:port; без порта подставляется 4443tunnel.fxtun.ru:443
server.tokenAPI-токен
server.insecureПодключаться без TLSfalse
server.tls_verifyПроверять сертификат сервераtrue
server.compressionСжимать трафик между клиентом и серверомtrue
reconnect.enabledПереподключаться после обрываtrue
reconnect.intervalПауза перед повторной попыткой5s
reconnect.max_attemptsСколько попыток сделать; 0 — без ограничений0
inspect.enabledВключить инспекторtrue
inspect.addrАдрес инспектора127.0.0.1:4040
inspect.max_entriesСколько запросов хранить на каждый туннель1000
inspect.max_body_sizeСколько байт тела сохранять262144 (256 КБ)

Если сервер tunnel.fxtun.ru:443 недоступен, клиент сам пробует запасной адрес fxtun.ru:4443. Как устроено переподключение — в справочнике CLI, об инспекторе — в разделе «Инспектор трафика».

Приоритет настроек

Если параметр задан в нескольких местах, действует первый из списка:

  1. флаги командной строки: --server, --token, --no-inspect, --inspect-addr, --insecure;
  2. переменные окружения FXTUNNEL_*;
  3. конфигурационный файл;
  4. значения по умолчанию.

Токен и адрес сервера ищутся иначе: флаги -t и -s, затем FXTUNNEL_TOKEN и FXTUNNEL_SERVER_ADDRESS, затем токен, сохранённый командой fxtunnel login, и только потом server.token и server.address из файла.

Переменные окружения

Имя переменной — путь к параметру с префиксом FXTUNNEL_, заглавными буквами, точки заменены на _:

bash
$export FXTUNNEL_TOKEN="sk_fxtunnel_ваш_токен"
$export FXTUNNEL_SERVER_ADDRESS="tunnel.fxtun.ru:443"
$export FXTUNNEL_SERVER_COMPRESSION="false"
$export FXTUNNEL_RECONNECT_INTERVAL="10s"
$export FXTUNNEL_RECONNECT_MAX_ATTEMPTS="5"
$export FXTUNNEL_INSPECT_ENABLED="true"
$export FXTUNNEL_INSPECT_ADDR="127.0.0.1:4041"

Токен задаётся переменной FXTUNNEL_TOKEN. Переменные для туннелей не поддерживаются — туннели описываются только в файле.

Внимание

Команды fxtunnel http, tcp и udp понимают только FXTUNNEL_TOKEN и FXTUNNEL_SERVER_ADDRESS. Остальные переменные действуют на fxtunnel с конфигурационным файлом и на fxtunnel up.