Зачем использовать кастомный домен для туннеля?

Кастомный домен превращает ваш локальный туннель в стабильную, профессиональную точку входа для разработки. Вместо abc.fxtun.dev ваш туннель отвечает по адресу dev.yourcompany.com — URL, который никогда не меняется, работает для всей команды и выглядит убедительно на демонстрациях клиентам. Настройка занимает около 5 минут.

Пробовали вписать случайный поддомен в OAuth redirect URI или в настройки вебхука Stripe? Стандартные поддомены fxtun.dev отлично подходят для личной разработки, но как только появляются интеграции со сторонними сервисами, командная работа или демо для клиентов — случайный поддомен начинает мешать. OAuth-провайдеры требуют стабильные redirect URI, вебхуки ломаются при смене URL, а клиенты ожидают нормальный адрес, а не что-то временное.

Вот что решает кастомный домен:

  • Стабильные URL для вебхуков — сервисы вроде Stripe, GitHub и Telegram продолжают работать после перезапуска туннеля, потому что домен остаётся прежним. Не нужно обновлять настройки эндпоинтов. Подробнее — в статье «Тестирование вебхуков через туннель».
  • Интеграция с OAuth и SSO — провайдеры вроде Google, Auth0 и Okta позволяют зарегистрировать https://dev.yourcompany.com/auth/callback как постоянный redirect URI, что избавляет от необходимости обновлять его в процессе разработки.
  • Профессиональные демонстрации — покажите клиенту https://demo.yourcompany.com вместо случайного поддомена. Это вызывает доверие и выглядит осознанно.
  • Единообразие в команде — каждый разработчик в команде подключается к одному домену. QA может добавить URL в закладки. Ссылки в документации остаются актуальными.
  • Автоматический HTTPS — fxTunnel выпускает валидный TLS-сертификат для вашего кастомного домена через Let’s Encrypt. Никакого ручного управления сертификатами. Механика описана в статье «HTTPS на localhost».

Подготовка

Перед настройкой кастомного домена убедитесь, что у вас есть:

  1. Установленный fxTunnel CLI — если ещё не установлен, выполните команду быстрой установки.
  2. Платный тариф fxTunnel — кастомные домены доступны от $5/мес на fxtun.dev.
  3. Зарегистрированный домен — вам нужен доступ к DNS-настройкам принадлежащего вам домена (например, example.com).
  4. Токен аккаунта fxTunnel — вы будете использовать его для авторизации CLI.
# Установка fxTunnel (Linux/macOS)
curl -fsSL https://fxtun.dev/install.sh | bash

# Проверка установки
fxtunnel --version

# Авторизация в аккаунте
fxtunnel auth login

Пошаговая настройка кастомного домена

Всё сводится к трём шагам: добавить CNAME-запись у DNS-провайдера, зарегистрировать домен в аккаунте fxTunnel и запустить туннель с флагом --domain. TLS-сертификат выпускается автоматически при первом запросе.

Шаг 1. Добавление CNAME-записи в DNS

Войдите в панель управления DNS-провайдера (Cloudflare, Route 53, GoDaddy, Namecheap и др.) и добавьте CNAME-запись, указывающую нужный поддомен на tunnel.fxtun.dev.

Тип записиИмяЗначениеTTL
CNAMEdevtunnel.fxtun.dev300 (5 мин)

Если вы хотите использовать dev.example.com, в поле Name указывайте dev. Если хотите tunnel.example.com — указывайте tunnel. Можно использовать любой поддомен.

Важно: CNAME-записи работают только для поддоменов, а не для корневого домена (example.com). Если вам нужно использовать корневой домен, проверьте, поддерживает ли ваш DNS-провайдер CNAME flattening (Cloudflare поддерживает) или ALIAS-записи.

Примеры настройки DNS по провайдерам

Cloudflare:

  1. Перейдите в DNS > Records > Add record.
  2. Type: CNAME, Name: dev, Target: tunnel.fxtun.dev.
  3. Proxy status: DNS only (серая иконка). Не включайте проксирование Cloudflare — fxTunnel самостоятельно управляет TLS.
  4. TTL: Auto.

AWS Route 53:

  1. Откройте вашу hosted zone.
  2. Нажмите Create record.
  3. Record name: dev, Record type: CNAME, Value: tunnel.fxtun.dev, TTL: 300.

Namecheap:

  1. Перейдите в Domain List > Advanced DNS.
  2. Добавьте запись: Type CNAME, Host dev, Value tunnel.fxtun.dev, TTL 5 min.

GoDaddy:

  1. Перейдите в My Products > DNS.
  2. Добавьте запись: Type CNAME, Name dev, Value tunnel.fxtun.dev, TTL 600.

Шаг 2. Регистрация домена в fxTunnel

После создания DNS-записи зарегистрируйте домен в вашем аккаунте fxTunnel. Это укажет серверу принимать трафик для вашего кастомного домена и выпустить TLS-сертификат.

# Регистрация кастомного домена
fxtunnel domain add dev.example.com

# Верификация домена (проверяет DNS)
fxtunnel domain verify dev.example.com

Ожидаемый вывод:

Domain: dev.example.com
Status: verified
CNAME:  tunnel.fxtun.dev ✓
TLS:    certificate will be provisioned on first request

Если DNS-запись ещё не распространилась, вы увидите:

Domain: dev.example.com
Status: pending
CNAME:  not found — check your DNS settings

Подождите несколько минут и повторите попытку. Распространение DNS обычно занимает от 1 до 30 минут.

Шаг 3. Запуск туннеля с кастомным доменом

После верификации домена запустите туннель с флагом --domain:

# Запуск туннеля на кастомном домене
fxtunnel http 8080 --domain dev.example.com

Вывод:

fxTunnel v1.x — tunnel is active
Custom domain: https://dev.example.com
Forwarding:    https://dev.example.com -> http://localhost:8080
TLS:           certificate provisioned (Let's Encrypt)

Откройте https://dev.example.com в браузере. Вы увидите зелёный замок — TLS-сертификат валидный и доверенный. Весь трафик с https://dev.example.com теперь перенаправляется на ваш localhost:8080.

Шаг 4. Проверка настройки

Выполните быструю проверку, чтобы убедиться, что всё работает:

# Проверка DNS-резолва
dig dev.example.com CNAME +short
# Ожидаемый результат: tunnel.fxtun.dev.

# Проверка HTTPS
curl -I https://dev.example.com
# Ожидаемый результат: HTTP/2 200

# Проверка деталей сертификата
openssl s_client -connect dev.example.com:443 -servername dev.example.com < /dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates
# Ожидаемый результат:
# subject=CN = dev.example.com
# issuer=O = Let's Encrypt
# notBefore=...
# notAfter=...

Управление TLS-сертификатами

fxTunnel управляет TLS-сертификатами для кастомных доменов автоматически. При первом обращении к вашему кастомному домену сервер выпускает сертификат от Let’s Encrypt по протоколу ACME. Сертификаты продлеваются автоматически до истечения срока действия. Вам никогда не нужно работать с файлами сертификатов вручную.

Как это работает

  1. Вы направляете dev.example.com на tunnel.fxtun.dev через CNAME.
  2. Сервер fxTunnel получает первый HTTPS-запрос для dev.example.com.
  3. Сервер использует ACME HTTP-01 challenge для подтверждения владения доменом перед Let’s Encrypt.
  4. Let’s Encrypt выдаёт сертификат, и сервер его сохраняет.
  5. Сертификат обновляется автоматически каждые 60 дней (сертификаты Let’s Encrypt действительны 90 дней).

Такой же подход используют CDN-провайдеры и современные инструменты туннелирования. Разница в том, что вам ничего настраивать не нужно — всё работает само.

Временные рамки выпуска сертификата

СобытиеВремя
Распространение CNAME1-30 минут (обычно менее 5)
Первый выпуск сертификата10-30 секунд после первого запроса
Продление сертификатаАвтоматически, за 30 дней до истечения
Тип сертификатаRSA 2048-bit или ECDSA P-256
ИздательLet’s Encrypt

Решение проблем с сертификатами

ПроблемаПричинаРешение
Сертификат не выпущенCNAME не распространилсяПодождите распространения DNS, проверьте с помощью dig
Предупреждение о невалидном сертификатеВключено проксирование CloudflareОтключите проксирование Cloudflare (используйте DNS-only режим)
Сертификат истёкОшибка обновления (редко)Выполните fxtunnel domain verify для запуска обновления
Неправильный домен в сертификатеКонфликт с wildcardУбедитесь, что нет конфликтующих DNS-записей

Кастомный домен vs. стандартный поддомен

Бесплатный тариф даёт вам постоянный поддомен fxtun.dev — для личной разработки его более чем достаточно. Кастомный домен добавляет брендирование, стабильность и удобство для команды. Вот как они соотносятся.

ХарактеристикаСтандартный поддомен (бесплатно)Кастомный домен (от $5/мес)
Формат URLabc.fxtun.devdev.example.com
Сохраняется при перезапускеДаДа
TLS-сертификатАвтоматическийАвтоматический (Let’s Encrypt)
БрендированиеБрендинг fxTunnelВаш домен
OAuth redirect URIРаботает, но может потребовать обновленияНастроил один раз — работает всегда
Webhook-эндпоинтыСтабильные, но не брендированныеПрофессиональные, постоянные
Демонстрации клиентамВыглядит временноВыглядит как продакшен
Использование в командеУ каждого разработчика свой URLОбщий URL для всей команды
Inspector + ReplayНе включёнВключён
Максимум туннелей1До 5 (до 10+ на тарифе $10/мес)

Продвинутая настройка

Несколько кастомных доменов

На тарифе от $5/мес можно зарегистрировать до 5 кастомных доменов. На тарифе от $10/мес можно запускать 10+ туннелей одновременно. Это полезно для микросервисных архитектур, где каждому сервису нужна собственная публичная точка входа.

# Регистрация нескольких доменов
fxtunnel domain add api.example.com
fxtunnel domain add app.example.com
fxtunnel domain add admin.example.com

# Запуск туннелей для каждого сервиса
fxtunnel http 3000 --domain api.example.com
fxtunnel http 3001 --domain app.example.com
fxtunnel http 3002 --domain admin.example.com

Каждый туннель получает собственный TLS-сертификат и перенаправляет трафик независимо.

Wildcard-поддомены

Если ваше приложение использует динамические поддомены (например, tenant1.app.example.com, tenant2.app.example.com), можно настроить wildcard CNAME:

Тип записиИмяЗначениеTTL
CNAME*.apptunnel.fxtun.dev300

Затем зарегистрируйте wildcard-домен в fxTunnel:

fxtunnel domain add "*.app.example.com"
fxtunnel http 8080 --domain "*.app.example.com"

Любой запрос к tenant1.app.example.com, tenant2.app.example.com и т.д. будет перенаправлен на ваш localhost. Заголовок Host сохраняется, поэтому приложение может определить, какой тенант делает запрос.

Использование кастомных доменов с Docker-контейнерами

Кастомные домены отлично работают с Docker-контейнерами и туннелями. Направьте туннель на порт контейнера вместо локального процесса:

# Запуск приложения в Docker
docker run -d -p 8080:80 my-web-app

# Открытие туннеля с кастомным доменом
fxtunnel http 8080 --domain dev.example.com

Процесс идентичен — туннелю всё равно, откуда идёт трафик: из процесса на хосте или из контейнера.

Домены для разных окружений

Распространённый паттерн — использование разных поддоменов для разных окружений:

# Разработка
fxtunnel http 3000 --domain dev.example.com

# Staging
fxtunnel http 3000 --domain staging.example.com

# QA
fxtunnel http 3000 --domain qa.example.com

Для каждого поддомена нужна своя CNAME-запись и регистрация домена. Это даёт командам чёткое разделение между окружениями, при этом всё остаётся доступным через стабильные URL.

Командная работа с кастомными доменами

Именно в командной работе кастомные домены раскрываются по-настоящему. Единый брендированный URL упрощает взаимодействие, снижает расхождение конфигураций и избавляет QA, продакт-менеджеров и клиентов от вопроса «а какой сегодня URL?».

Общее окружение разработки

Тимлид настраивает кастомный домен один раз. Любой авторизованный разработчик может затем запустить туннель на этом домене:

# Разработчик A запускает туннель утром
fxtunnel http 8080 --domain dev.example.com --token fxt_team_token

# Разработчик B подхватывает днём
# (Разработчик A сначала останавливает туннель)
fxtunnel http 8080 --domain dev.example.com --token fxt_team_token

QA добавляет https://dev.example.com в закладки и всегда видит последнюю версию приложения — вне зависимости от того, кто запустил туннель.

Webhook-интеграции для команды

С кастомным доменом URL-адреса вебхуков остаются стабильными, независимо от того, кто из разработчиков запустил туннель. Настройте вебхук один раз в Stripe, GitHub или Telegram — и он продолжит работать, когда другой член команды возьмёт работу на себя:

# Webhook-эндпоинт Stripe (настраивается один раз)
# URL: https://dev.example.com/webhooks/stripe

# Любой разработчик может принимать вебхуки, запустив туннель
fxtunnel http 8080 --domain dev.example.com

Больше никаких «вебхук перестал работать, потому что URL изменился» — домен постоянный.

CI/CD preview-окружения

Кастомные домены хорошо работают с CI/CD preview-окружениями. Ваш CI-пайплайн может запустить туннель на поддомене, привязанном к ветке:

# В вашем CI-скрипте
BRANCH_SLUG=$(echo $CI_BRANCH | tr '/' '-' | tr '[:upper:]' '[:lower:]')
fxtunnel http 8080 --domain "${BRANCH_SLUG}.preview.example.com"

Это создаёт preview-URL вроде feature-login.preview.example.com для каждой ветки — полностью доступные по HTTPS с валидным сертификатом.

Тарифы fxTunnel для кастомных доменов

Кастомные домены доступны начиная от $5/мес. Оплаты за запросы или ограничений по трафику нет.

ТарифЦенаКастомные доменыТуннелиInspector + Replay
Free$0Нет1Нет
Proот $5/месДо 5До 5Да
Teamот $10/месБез ограничений10+Да

Все тарифы включают:

  • Поддержку HTTP, TCP и UDP туннелей
  • Без ограничений трафика и подключений
  • Постоянные URL при перезапуске
  • Шифрование TLS 1.3

Тариф Pro добавляет кастомные домены и Inspector с Replay — веб-интерфейс для просмотра всех HTTP-запросов, проходящих через туннель, с возможностью повторить любой запрос одним кликом. Тариф Team добавляет поддержку 10+ одновременных туннелей и приоритетную поддержку, что идеально для крупных команд разработки.

Зарегистрируйтесь на fxtun.dev, чтобы начать. Исходный код доступен на GitHub.

Сравнение: кастомные домены у разных инструментов

Если кастомные домены для вас важны, вот как fxTunnel смотрится рядом с ngrok и Cloudflare Tunnel.

ХарактеристикаfxTunnelngrokCloudflare Tunnel
Цена за кастомный доменот $5/месот $10/мес (платные тарифы)Бесплатно (требуется DNS на Cloudflare)
Управление сертификатамиАвтоматическое (Let’s Encrypt)АвтоматическоеАвтоматическое (Cloudflare CA)
Wildcard-доменыДаТолько на платных тарифахДа
Сложность настройкиCNAME + 1 команда CLICNAME + настройка в дашбордеТребуется миграция DNS на Cloudflare
TCP/UDP с кастомным доменомTCP да, UDP да (по портам)Только TCP (платно)Только HTTP
Inspector + Replayот $5/месот $10/месНет встроенного инспектора
Open sourceДаНетЧастично (cloudflared — OSS)
Ограничения бесплатного тарифаБез ограничений трафика1 агент, rate limitsБез ограничений трафика

Стартовая цена ниже, чем у ngrok, поддержка протоколов шире, чем у Cloudflare Tunnel, а исходный код полностью открыт. И в отличие от Cloudflare Tunnel, вам не нужно переносить весь DNS на Cloudflare — достаточно добавить одну CNAME-запись у любого провайдера.

Безопасность

Кастомный домен, подключённый к туннелю, безопасен для использования в разработке — fxTunnel шифрует весь трафик через TLS 1.3, автоматически выпускает сертификаты и изолирует туннели друг от друга. Но несколько привычек не помешают:

  1. Не открывайте продакшен-данные — туннели предназначены для разработки и тестирования. Не подключайте туннель к продакшен-базе данных или сервису.
  2. Используйте авторизацию по токену — всегда аутентифицируйтесь с --token, чтобы предотвратить несанкционированное создание туннелей на вашем домене.
  3. Ротируйте токены — если член команды уходит, сгенерируйте новый токен и раздайте его оставшимся.
  4. Мониторьте через Inspector — Inspector (от $5/мес) показывает все входящие запросы. Используйте его для обнаружения неожиданного трафика.
  5. Отключайте туннели, когда они не используются — останавливайте туннель, когда заканчиваете разработку. Кастомный домен просто перестанет разрешаться на какой-либо сервер.
# Генерация нового командного токена
fxtunnel token generate --name "team-q1-2026"

# Отзыв старого токена
fxtunnel token revoke fxt_old_token_here

# Список активных токенов
fxtunnel token list

Решение проблем

Домен не резолвится

# Проверьте, правильно ли настроен CNAME
dig dev.example.com CNAME +short
# Ожидаемый результат: tunnel.fxtun.dev.

# Если пусто — DNS-запись ещё не распространилась
# Подождите 5-30 минут и попробуйте снова

ERR_CONNECTION_REFUSED

Домен резолвится, но ничего не отвечает. Убедитесь, что туннель запущен:

fxtunnel http 8080 --domain dev.example.com
# Убедитесь, что ваш локальный сервер тоже запущен на порту 8080

Ошибка SSL-сертификата

Если включено проксирование Cloudflare, вы увидите ошибки сертификата, потому что Cloudflare терминирует TLS раньше, чем fxTunnel сможет это сделать. Отключите проксирование (переключите в режим DNS-only в Cloudflare).

Домен уже используется

Если вы видите «domain already registered by another account», это значит, что кто-то другой уже зарегистрировал этот домен в fxTunnel. Убедитесь, что используете правильный аккаунт, или обратитесь в поддержку.

Туннель запускается, но кастомный домен не работает

Проверьте статус верификации домена:

fxtunnel domain list
fxtunnel domain verify dev.example.com

Если статус «pending», CNAME ещё не обнаружен. Перепроверьте DNS-настройки и подождите распространения.

FAQ

Можно ли использовать свой домен с fxTunnel?

Конечно. На платных тарифах можно подключить кастомные домены — до 5 на Pro. Направляете CNAME-запись на tunnel.fxtun.dev, запускаете fxtunnel http 8080 --domain myapp.example.com, и fxTunnel сам выпустит TLS-сертификат. Адрес https://myapp.example.com начинает работать сразу.

Нужно ли настраивать HTTPS-сертификаты вручную?

Нет, сертификаты полностью автоматизированы. При первом запросе к вашему домену fxTunnel получает сертификат от Let’s Encrypt и дальше продлевает его самостоятельно. Вам не придётся прикасаться к файлам сертификатов. Подробнее об архитектуре — в статье про сервер туннеля.

Что делать, если DNS распространяется медленно?

Обычно распространение завершается за несколько минут, хотя в редких случаях может затянуться до 48 часов. Пока CNAME не разрешится на tunnel.fxtun.dev, кастомный домен не ответит. Следить за прогрессом можно через dig myapp.example.com CNAME или любой онлайн-сервис проверки DNS. А пока ваш стандартный поддомен fxtun.dev продолжает работать.

Могут ли несколько членов команды использовать один кастомный домен?

Да. Тимлид настраивает домен один раз, а дальше любой, у кого есть нужный токен, может поднять на нём туннель. Это удобно для общего staging-окружения, QA и демонстраций. На тарифе Team доступно 10+ одновременных туннелей, если понадобится.

В чём разница между кастомным доменом и стандартным поддоменом fxtun.dev?

Стандартный поддомен вроде abc.fxtun.dev назначается автоматически и работает на любом тарифе, включая бесплатный. Кастомный домен вроде dev.example.com использует ваш DNS, и это существенно, когда вы настраиваете OAuth redirect URI, регистрируете вебхуки или показываете проект клиенту — адрес выглядит осмысленно, а не как временная ссылка.