Зачем использовать кастомный домен для туннеля?
Кастомный домен превращает ваш локальный туннель в стабильную, профессиональную точку входа для разработки. Вместо 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».
Подготовка
Перед настройкой кастомного домена убедитесь, что у вас есть:
- Установленный fxTunnel CLI — если ещё не установлен, выполните команду быстрой установки.
- Платный тариф fxTunnel — кастомные домены доступны от $5/мес на fxtun.dev.
- Зарегистрированный домен — вам нужен доступ к DNS-настройкам принадлежащего вам домена (например,
example.com). - Токен аккаунта 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 |
|---|---|---|---|
| CNAME | dev | tunnel.fxtun.dev | 300 (5 мин) |
Если вы хотите использовать dev.example.com, в поле Name указывайте dev. Если хотите tunnel.example.com — указывайте tunnel. Можно использовать любой поддомен.
Важно: CNAME-записи работают только для поддоменов, а не для корневого домена (example.com). Если вам нужно использовать корневой домен, проверьте, поддерживает ли ваш DNS-провайдер CNAME flattening (Cloudflare поддерживает) или ALIAS-записи.
Примеры настройки DNS по провайдерам
Cloudflare:
- Перейдите в DNS > Records > Add record.
- Type:
CNAME, Name:dev, Target:tunnel.fxtun.dev. - Proxy status: DNS only (серая иконка). Не включайте проксирование Cloudflare — fxTunnel самостоятельно управляет TLS.
- TTL: Auto.
AWS Route 53:
- Откройте вашу hosted zone.
- Нажмите Create record.
- Record name:
dev, Record type:CNAME, Value:tunnel.fxtun.dev, TTL:300.
Namecheap:
- Перейдите в Domain List > Advanced DNS.
- Добавьте запись: Type
CNAME, Hostdev, Valuetunnel.fxtun.dev, TTL5 min.
GoDaddy:
- Перейдите в My Products > DNS.
- Добавьте запись: Type
CNAME, Namedev, Valuetunnel.fxtun.dev, TTL600.
Шаг 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. Сертификаты продлеваются автоматически до истечения срока действия. Вам никогда не нужно работать с файлами сертификатов вручную.
Как это работает
- Вы направляете
dev.example.comнаtunnel.fxtun.devчерез CNAME. - Сервер fxTunnel получает первый HTTPS-запрос для
dev.example.com. - Сервер использует ACME HTTP-01 challenge для подтверждения владения доменом перед Let’s Encrypt.
- Let’s Encrypt выдаёт сертификат, и сервер его сохраняет.
- Сертификат обновляется автоматически каждые 60 дней (сертификаты Let’s Encrypt действительны 90 дней).
Такой же подход используют CDN-провайдеры и современные инструменты туннелирования. Разница в том, что вам ничего настраивать не нужно — всё работает само.
Временные рамки выпуска сертификата
| Событие | Время |
|---|---|
| Распространение CNAME | 1-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/мес) |
|---|---|---|
| Формат URL | abc.fxtun.dev | dev.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 | *.app | tunnel.fxtun.dev | 300 |
Затем зарегистрируйте 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.
| Характеристика | fxTunnel | ngrok | Cloudflare Tunnel |
|---|---|---|---|
| Цена за кастомный домен | от $5/мес | от $10/мес (платные тарифы) | Бесплатно (требуется DNS на Cloudflare) |
| Управление сертификатами | Автоматическое (Let’s Encrypt) | Автоматическое | Автоматическое (Cloudflare CA) |
| Wildcard-домены | Да | Только на платных тарифах | Да |
| Сложность настройки | CNAME + 1 команда CLI | CNAME + настройка в дашборде | Требуется миграция 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, автоматически выпускает сертификаты и изолирует туннели друг от друга. Но несколько привычек не помешают:
- Не открывайте продакшен-данные — туннели предназначены для разработки и тестирования. Не подключайте туннель к продакшен-базе данных или сервису.
- Используйте авторизацию по токену — всегда аутентифицируйтесь с
--token, чтобы предотвратить несанкционированное создание туннелей на вашем домене. - Ротируйте токены — если член команды уходит, сгенерируйте новый токен и раздайте его оставшимся.
- Мониторьте через Inspector — Inspector (от $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, регистрируете вебхуки или показываете проект клиенту — адрес выглядит осмысленно, а не как временная ссылка.