Все статьи
comparisonCloudflare Tunnellocalhost tunnelingopen source

PortPreview против Cloudflare Tunnel: разные инструменты

Это не совсем противостояние. Cloudflare Tunnel (cloudflared) и PortPreview живут в разных комнатах. Cloudflare Tunnel держит сервис постоянно онлайн за краем Cloudflare — Zero Trust, именованные туннели, кастомные домены. PortPreview — для следующих двадцати минут вашей dev-сессии: тестирование вебхуков, мобильный QA, поделиться веткой с дизайнером. Выбор между ними в основном зависит от того, какая задача у вас на самом деле.

В чём хорош Cloudflare Tunnel

cloudflared построен для одного: вывести сервис в интернет, не открывая ни одного входящего порта и не раскрывая ваш origin IP. Запустите его на сервере, привяжите именованный туннель к имени хоста на вашем домене Cloudflare, и трафик потечёт через край Cloudflare к вашему origin по исходящему соединению, которое инициировала ваша машина.

Что он делает хорошо:

  • Продакшен-маршрутизация. Функция именованного туннеля долговечна. Можно запустить cloudflared как сервис, и имя хоста продолжает работать после перезапусков.
  • Политики доступа Zero Trust. Защитите туннель за SSO, MFA или IP-allowlist для экспонирования внутренних инструментов.
  • Кастомные домены. Приведите свой домен на Cloudflare. Туннель терминируется на ваш-домен.com, а не на поддомене вендора.
  • WARP-маршрутизация. Достучитесь до приватных сервисов с любого устройства в сети Cloudflare без настройки VPN.

Ничто из этого не про отладку вебхуков.

Где Cloudflare Tunnel становится неудобным для dev

Режим quick tunnel (cloudflared tunnel --url localhost:3000) — это самое близкое к dev-инструменту, к чему подходит cloudflared, и он работает. Вы получаете URL *.trycloudflare.com, указывающий на ваш локальный порт. Но:

  • URL ротируется каждую сессию, как у большинства dev-туннелей.
  • Нет встроенного инспектора запросов. Вы видите то, что логирует ваш dev-сервер, и больше ничего. Захват payload вебхука для повтора позже требует прикручивания отдельного прокси или логгера.
  • Настройка именованных туннелей (версия со стабильным URL) включает аккаунт Cloudflare, DNS-записи и конфиг-файл. Оправдано для долгоживущего сервиса; избыточно для сессии итераций вебхука.

Где вписывается PortPreview

PortPreview — это CLI для туннелирования localhost для dev-цикла. Одна команда, публичный HTTPS-URL, захват и повтор запросов встроены.

npx portpreview 3000

Мы оптимизируем момент между «я изменил обработчик вебхука Stripe» и «я знаю, работает ли он». Этот момент должен длиться секунды. Захватите payload, почините обработчик, повторяйте, пока не станет зелёным, всё без повторного запуска upstream-события.

Бок о бок

ПотребностьCloudflare TunnelPortPreview
Быстрая сессия отладки вебхукаВозможно (quick tunnel)Сделан для этого
Захват и повтор запросовНетДа
Стабильное именованное имя хостаДа (с настройкой)Не главный фокус
Кастомный доменДаПоддомен туннеля
Политика доступа Zero TrustДаНет
Сложность настройкиНизкая для quick, средняя для namedОдна команда
Работать вечно как сервисДаСпроектирован для сессий
Open-source клиентДа (cloudflared)Да

Когда использовать каждый

Используйте Cloudflare Tunnel, когда

  • Нужен сервис онлайн 24/7 без открытия портов файрвола.
  • Нужен SSO-защищённый доступ к внутреннему дашборду или админ-инструменту.
  • Нужен стабильный URL с кастомным доменом, подкреплённый настоящим CA-сертификатом и вашим существующим DNS Cloudflare.
  • Вы уже на Cloudflare, и предельная стоимость настройки мала.

Используйте PortPreview, когда

  • Вы итерируете обработчик вебхука и хотите повтор в один клик.
  • Хотите поделиться веткой с дизайнером на десять минут.
  • Тестируете OAuth-колбэки или мобильные потоки без настройки DNS.
  • Предпочитаете не управлять аккаунтом Cloudflare только ради теста события Stripe.

Они хорошо сосуществуют

Несколько команд, с которыми мы говорили, используют оба. Cloudflare Tunnel для всегда включённого внутреннего инструмента, которому нужен фиксированный URL и SSO. PortPreview для ежедневной отладки вебхуков, которой нужны повтор и одна команда. Они не конфликтуют — просто обслуживают разные части дуги dev-to-prod.

Если вы также взвешиваете ngrok или localtunnel, эти сравнения могут быть более прямо релевантны. Запишитесь в лист ожидания PortPreview для стороны dev-цикла.

Часто задаваемые вопросы

Является ли Cloudflare Tunnel заменой PortPreview?
Не совсем. Cloudflare Tunnel оптимизирован под удержание сервиса постоянно онлайн с краем Cloudflare — именованные туннели, кастомные домены, Zero Trust. PortPreview оптимизирован под dev-цикл — сессии в одну команду с захватом и повтором запросов. Они решают разные задачи и хорошо сосуществуют.
Поддерживает ли Cloudflare Tunnel инспекцию запросов вебхуков?
Не нативно. cloudflared форвардит трафик без встроенного инспектора запросов. Чтобы инспектировать или повторять вебхуки, придётся прикрутить отдельный прокси или слой логирования. PortPreview включает захват и повтор в CLI.
Можно ли использовать Cloudflare Tunnel для быстрых dev-сессий?
Да, через режим quick tunnel (cloudflared tunnel --url localhost:3000). Годится для базового экспонирования, но не включает инспекцию запросов, повтор или стабильный URL без дополнительной настройки именованного туннеля.