Подключение своего домена
В этой статье мы подробно расскажем как подключить к платформе Tuna собственный домен и опубликовать локальный сайт в интернет без публичного IP, сложных конфигураций сети вроде VPN и без публикации кода на какой либо сервер или хостинг.
Публикация на собственном домене может быть интересна для Демо стендов, когда вы презентуете какое-то решение заказчику. Клиент видит законченное решение при этом вы не потратили и минуты на подготовку окружения, а также можете править какое-то мелочи прямо на ходу. Впрочем кейсов применения может быть значительно больше.
Подключение домена
Покупка домена
Для начала вам понадобится собственный домен (если у вас его нет), вы можете купить его например у Рег.ру или namecheap или любого другого регистратора доменов. Для примеров в этой статье мы используем домен tuna-dev.ru.
Подключение к Tuna и получение настроек
Перейдите на страницу управления доменами в личном кабинете и нажмите Добавить домен cправа вверху.
Выберите тип Свой домен и в поле Домен введите свой домен. В нашем случае это api.tuna-dev.ru. Если у вас Unicode домен например в одной из таких зон .РФ, .ДЕТИ, .ҚАЗ, то нужно указывать конвертированный punycode вариант.
После указания своего домена вы увидите нужные настройки для DNS.
Настройка DNS
Перейдите в панель управления DNS-записями и создайте запись, которую показал кабинет. Для поддомена вроде api.tuna-dev.ru это CNAME: он указывает на инфраструктуру Tuna целиком, а не на конкретный сервер, поэтому домен работает с отказоустойчивостью. Корневой домен вроде tuna-dev.ru через CNAME не подключить, для него есть отдельный вариант. Если у вас указана AAAA запись для выбранного домена, то её нужно удалить, так как работа по IPv6 пока не поддерживается.
Ожидание подтверждения
После создания DNS записи, можно вернуться в личный кабинет и нажать Добавить, домен перейдёт в режим проверки.
Валидация обычно занимает от 15 минут до 2 часов, но может растянуться и на пару дней, зависит от TTL на DNS запись. Процесс проверки ограничен 24 часами, и разбит на 2 основных этапа:
- Проверка DNS - проверяем, что ваш домен настроен корректно
- Проверка TLS - выпускаем Let's Encrypt сертификат для вашего домена
Если процесс добавления завершился ошибкой DNS, проверьте, что вы верно создали DNS запись и она указывает на нужный сервер. Если всё корректно, возможно ещё не обновился DNS кэш и нужно ждать, тогда просто возобновите проверку. Если процесс добавления завершился ошибкой TLS, проверьте нет ли явных ошибок в настройке DNS: AAAA записи, рекурсивно зацикленные указатели. Если самостоятельно разобраться не получается, обратитесь в поддержку.
Использование
После успешной верификации домена, вы получите письмо с уведомлением.
Теперь его можно начать использовать, для этого к команде tuna http <ваш_порт> укажите флаг --domain или его короткий вариант -d или переменную окружения и ваш домен, например:
tuna http 8080 --domain=api.tuna-dev.ru
tuna http 8080 -d api.tuna-dev.ru
export TUNA_DOMAIN=api.tuna-dev.ru
tuna http 8080
Корневой домен
Корневой домен — это сам домен без поддомена: example.com, а не www.example.com. По правилам DNS на него нельзя поставить CNAME, только A-записи на конкретные адреса. Такой домен работает, но без отказоустойчивости: если один из адресов сменится или станет недоступен, часть посетителей не откроет сайт.
Поэтому, когда вы добавляете корневой домен, кабинет предлагает выбрать способ подключения.
Сайт на поддомене, с отказоустойчивостью
Этот вариант мы рекомендуем. Туннель работает на поддомене: по умолчанию это www.example.com, но можно выбрать свой, например shop.example.com. Поддомен подключается через CNAME, корень — через A-записи. Когда оба домена пройдут проверку DNS, Tuna сама создаст шлюз с постоянным перенаправлением (код 308) с example.com на поддомен. Путь страницы сохраняется: example.com/catalog откроет www.example.com/catalog.
После добавления кабинет покажет DNS-записи для обоих доменов и команду для запуска туннеля на поддомене:
tuna http 8080 --domain=www.example.com
Когда оба домена пройдут проверку, у корня в списке появится пометка о перенаправлении:
Пара доменов занимает два места в лимите своих доменов. Если свободно только одно, вариант с поддоменом недоступен, а рядом появится ссылка на расширение подписки.
Что стоит знать о перенаправлении:
- Строка запроса при перенаправлении не сохраняется:
example.com/catalog?utm_source=mailоткроетwww.example.com/catalog. Ссылки с UTM-метками давайте сразу на поддомен. - Шлюз перенаправления виден в разделе Шлюзы. Если его удалить, перенаправление выключится, а в карточке корневого домена появится кнопка, чтобы включить его снова.
- Пока на корне работает шлюз, туннель на
example.comне запустится: сервер ответитDomain already reserved by gateway. - Если удалить поддомен, шлюз корня останется и продолжит перенаправлять на удалённый адрес. Удалите его в разделе Шлюзы вручную.
Только корневой домен
Корень подключается A-записями на каждый адрес ячейки, туннель запускается на example.com. Отказоустойчивости у такого домена нет, и кабинет об этом предупреждает.
Как перевести уже подключённый домен
Корневые домены, подключённые раньше, и поддомены на A-записях помечены в списке значком предупреждения.
Для корневого домена в карточке есть пошаговый переезд:
- Добавьте поддомен для сайта. Кабинет покажет CNAME-запись, которую нужно создать у регистратора.
- Запустите туннель на поддомене вместо корня. Туннель на корне остановите: пока он работает, перенаправление не включится.
- Включите перенаправление на поддомен. Кнопка станет доступна, когда поддомен пройдёт проверку DNS. Перенаправление начинает работать примерно через минуту.
Старые ссылки продолжат работать: посетители с example.com попадут на те же страницы поддомена.
Если поддомен подключён A-записями, менять туннель и настройки не нужно. Замените A-записи одной CNAME-записью из карточки домена. Предупреждение пропадёт после ближайшей перепроверки DNS, она проходит раз в сутки.
