● Туннели

HTTP-туннели

Как открыть локальный веб-сервер по HTTPS через HTTP-туннель fxTunnel: свой поддомен, защита паролем, доступ по IP и время жизни туннеля.

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

HTTP-туннель даёт локальному веб-серверу публичный адрес вида https://<поддомен>.fxtun.ru. WebSocket через него тоже работает.

bash
$fxtunnel http <порт> [флаги]

Свой поддомен

По умолчанию поддомен выбирается случайно. Чтобы задать его самому, укажите --domain:

bash
$fxtunnel http 3000 --domain myapp
→ HTTP:  http://myapp.fxtun.ru
→ HTTPS: https://myapp.fxtun.ru

--subdomain — то же самое, что --domain. В поддомене допустимы латинские буквы, цифры и дефис, длина — до 32 символов, дефис не может стоять первым или последним. Заглавные буквы приводятся к строчным.

Совет

Зарезервируйте поддомен в личном кабинете, в разделе «Домены». Тогда его не займёт другой пользователь, даже когда ваш туннель выключен.

Защита паролем

Флаг --auth включает HTTP Basic Auth: без логина и пароля туннель ответит 401 Unauthorized.

bash
$fxtunnel http 3000 --auth user:MySecurePass123

Проверка:

bash
$curl -u user:MySecurePass123 https://myapp.fxtun.ru
Внимание

Пароль — не короче 8 символов, логин — не пустой и без двоеточия. Иначе клиент не запустится и напишет, что не так.

Клиент отправляет на сервер не сам пароль, а его bcrypt-хеш.

Пресет со случайным паролем

Пресет openclaw придумывает пароль сам — случайные 16 символов, новые при каждом запуске — и печатает логин и пароль перед подключением:

bash
$fxtunnel http 3000 --preset openclaw
→ Preset 'openclaw' credentials:
→   Username: admin
→   Password: …

Если вместе с пресетом указан --auth, действует --auth. Список пресетов показывает команда fxtunnel presets, подробнее — в справочнике CLI.

Доступ только с нужных IP

Флаг --allow-ip пускает к туннелю только перечисленные адреса. Остальные получат 403 Forbidden. Флаг можно повторять или перечислить значения через запятую; поддерживаются одиночные IP и подсети в CIDR-нотации:

bash
$fxtunnel http 3000 --allow-ip 203.0.113.10 --allow-ip 10.0.0.0/8

Время жизни туннеля

Когда туннель закрывается по таймеру, клиент продолжает работать — остановите его Ctrl+C.

Закрытие при простое

Туннель закроется, если к нему не обращались указанное время. Каждый запрос сбрасывает таймер. Допустимо от 1m до 24h:

bash
$fxtunnel http 3000 --auto-close 30m

Максимальное время жизни

Жёсткий предел, независимо от активности. Допустимо от 1m до 7d:

bash
$fxtunnel http 3000 --max-lifetime 8h
Заметка

Отсчёт идёт с момента подключения к серверу. Если клиент переподключился, например после обрыва сети, отсчёт начинается заново.

Значение пишется числом с единицей m, h или d, единицы можно сочетать: 45m, 1h30m, 2d.

Предупредительная страница

Когда человек впервые открывает туннель в браузере, он видит страницу с предупреждением: сайт работает через туннель разработчика, содержимое не проверено. Это защита от фишинга. После кнопки «Продолжить» браузер получает cookie _fxt_consent_<поддомен> на 12 часов, и страница больше не показывается.

Предупреждение появляется, только если одновременно:

  • запрос — GET;
  • ваш сервер ответил HTML (text/html или application/xhtml+xml);
  • туннель открыт по поддомену fxtun.ru, а не по своему домену.

Поэтому запросы к API, отдающему JSON, и вебхуки методом POST проходят без предупреждения.

Пропуск заголовком

Для скриптов, тестов и мониторинга добавьте заголовок X-FxTunnel-Skip-Warning с любым непустым значением:

bash
$curl -H "X-FxTunnel-Skip-Warning: true" https://myapp.fxtun.ru

HTTP-заголовки

Сервер добавляет к запросу, который получает ваш локальный сервер:

ЗаголовокЗначение
X-Forwarded-HostАдрес, по которому обратились к туннелю, без порта — например myapp.fxtun.ru
X-Trace-IdИдентификатор запроса из 16 шестнадцатеричных символов — удобно искать в логах

Все флаги

ФлагОписаниеПо умолчанию
--domain, -dПоддомен; синоним — --subdomainслучайный
--authBasic Auth в формате user:password, пароль от 8 символов
--allow-ipРазрешённые IP или подсети, можно повторятьвсе адреса
--auto-closeЗакрытие при простое, от 1m до 24h
--max-lifetimeМаксимальное время жизни, от 1m до 7d
--presetПресет безопасности, сейчас есть openclaw