fxTunnel
Self-hosted reverse tunnel — альтернатива ngrok и Cloudflare Tunnel. HTTP, TCP, UDP проброс, кастомные поддомены, веб-панель, десктоп-клиент на Wails.
fxTunnel появился из практической необходимости. В работе у меня несколько проектов одновременно, и постоянно нужно давать доступ к локальным сервисам: показать заказчику фронтенд, протестировать вебхуки маркетплейсов, отладить интеграцию с внешним API, дать коллеге посмотреть ветку на dev-сервере. ngrok ограничивает бесплатный план одним туннелем и рандомными поддоменами. Cloudflare Tunnel привязывает к экосистеме Cloudflare. frp мощный, но конфигурация через TOML-файлы на каждый туннель утомляет.
Хотелось простого: поставил сервер на VPS, указал домен, поднял туннель одной командой. С кастомным поддоменом, HTTPS из коробки, без лимитов.
Как устроен
Сервер написан на Go, работает как reverse proxy. Клиент подключается к серверу через TCP-соединение, поверх которого работает yamux — мультиплексор, позволяющий гонять множество логических потоков через одно физическое соединение. Это эффективнее, чем открывать отдельный коннект на каждый запрос.
HTTP-туннели работают через виртуальные хосты: сервер принимает запрос на subdomain.your-domain.com, находит соответствующий туннель и проксирует трафик клиенту. TLS-сертификаты получаются автоматически через Let’s Encrypt.
TCP и UDP проброс работают через выделенные порты на сервере. Это позволяет туннелировать не только HTTP, но и базы данных, SSH, игровые серверы — что угодно.
Что есть сейчас
- HTTP, TCP, UDP туннели с кастомными поддоменами
- Автоматический TLS через Let’s Encrypt
- Веб-панель для управления туннелями и пользователями
- REST API для программного управления
- GUI-клиент на Wails (Go + Vue 3) под Windows, macOS и Linux
- CLI-клиент для серверных сценариев
- SQLite для хранения конфигурации — без внешних зависимостей
Проект open source и доступен на GitHub.