Домены¶
Подключение домена¶
- Раздел Домены -> «Добавить домен».
- Впишите имя хоста (
sub.example.com). Регистр и лишнее значения не имеют: трекер сам приводит имя к канонической форме - убирает схему, путь, порт, завершающую точку и переводит в нижний регистр.HTTPS://Example.COM/pathсохранится какexample.com. - Привяжите домен к кампании (нужно для «голого» домена - когда ссылка идёт без идентификатора кампании). Домен можно добавить и из карточки кампании: вкладка Tracking -> «+ Добавить новый».
- У регистратора направьте A-запись (и
AAAA, если есть IPv6) на IP сервера. Тот же IP печатает установщик в конце работы; если он задан в настройках установки, панель показывает его плашкой в тулбаре раздела «Домены» (по клику копируется). Смена DNS расходится по миру от нескольких минут до нескольких часов. - При первом заходе по HTTPS Caddy сам выпустит сертификат Let's Encrypt. Сертификат выпускается только для доменов, заведённых в этом разделе - иначе любой, кто направит свой домен на ваш IP, заказывал бы сертификаты за ваш счёт.
Один домен обслуживает сколько угодно кампаний по пути домен/<идентификатор>. «Голый»
домен (домен/) ведёт на ту кампанию, к которой привязан.
Хост, которого нет в разделе «Домены», трекер не обслуживает - на него отдаётся честный 404, и в лог движка пишется строка с именем хоста и подсказкой. Это же означает, что удаление домена из панели действительно выключает его: раньше удалённый домен продолжал показывать воронку, потому что его подхватывал домен-ловушка. Сертификат удалённого домена убирает ежедневное задание.
Wildcard-домены¶
Чтобы одним махом обслужить все поддомены, заведите домен с маской - именно в таком виде, со звёздочкой в имени:
Правила совпадения те же, что у DNS: маска покрывает ровно одну метку слева.
a.example.com под неё попадает, a.b.example.com - нет, сам example.com - тоже нет
(для него заводится отдельная запись). Если подходят несколько масок, выигрывает самая
длинная. Флаги и кампания wildcard-записи действуют на все её поддомены.
Как трекер выбирает кампанию¶
По порядку:
домен/<идентификатор>- первый сегмент пути совпал с идентификатором (алиасом) или токеном кампании;- кампания домена - для «голого» домена, если он привязан к кампании;
- домен-ловушка - если ни то ни другое не подошло, а в базе есть домен с флагом Catch-all, трафик достаётся его кампании;
- иначе - 404.
Флаги домена¶
Галочек «SSL» и «Wildcard» здесь больше нет (убраны 2026-08-07). Сертификат
выпускается автоматически для любого домена из этого раздела при первом заходе по
HTTPS - галочка ничего не включала. Маску задаёт само имя хоста (*.example.com),
см. выше; в списке она показывается меткой «Wildcard» по имени, а не по флагу.
- Только HTTPS - запрос по http перенаправляется на https (301).
- Разрешить индексацию - по умолчанию трекер отдаёт
X-Robots-Tag: noindex, nofollow(клоакинг). Флаг снимает запрет - нужен, если домен должен попадать в поиск. - Catch-all - домен-ловушка: подхватывает запросы к заведённым доменам, для которых не нашлось кампании. Ловушка одна на установку - берётся первая такая запись.
- Домен админки - заход на голый корень домена перекидывает на
/admin/. Сама панель и без флага доступна по/admin/на любом домене. - Проксируется через Cloudflare - см. следующий раздел.
- Cloudflare Zone ID, Заметки - справочные поля.
Подключить домен через Cloudflare (в один клик)¶
Кнопка «Через Cloudflare» в разделе «Домены». Трекер сам заведёт A-запись в вашей зоне и добавит домен - вместо пяти шагов в двух системах.
Что нужно один раз: API-токен Cloudflare с правом Zone -> DNS -> Edit на нужные
зоны. Заводится в Cloudflare: My Profile -> API Tokens -> Create Token -> шаблон «Edit
zone DNS». Глобальный ключ аккаунта не подходит и не нужен - он даёт слишком много.
Токен хранится только на вашем сервере, обратно в панель не отдаётся (видны последние 4 символа) и доступен только администратору: он позволяет править DNS всех зон аккаунта.
Домен должен быть уже добавлен в Cloudflare - трекер работает с существующей зоной, а не переносит домен к регистратору.
Галочка «Проксировать через Cloudflare»:
- выключена (серое облако) - обычный выбор. Сертификат выпишет трекер, адрес посетителя будет настоящим, ничего дополнительно настраивать не нужно;
- включена (оранжевое облако) - в Cloudflare обязательно выставьте режим SSL/TLS Full, иначе домен ляжет. Подробности - в следующем разделе.
Маску *.example.com так подключить нельзя: сертификат на неё выписывается только через
проверку по DNS, и «подключил в один клик» кончилось бы доменом без HTTPS. Заводите её
обычной кнопкой «Добавить», а A-запись * - в Cloudflare вручную.
Повторное подключение того же домена не ломается: если A-запись уже есть, она будет поправлена, а не создана второй раз.
Домен за Cloudflare¶
Если домен проксируется Cloudflare («оранжевое облако»), поставьте в его карточке флаг «Проксируется через Cloudflare». Это не косметика: от него зависит, чей IP трекер считает адресом посетителя.
- Флаг включён - трекер верит заголовку
CF-Connecting-IP, то есть видит настоящий адрес человека. Страна, город, провайдер, фильтр по IP и уникальность считаются правильно. - Флаг выключен, а Cloudflare перед доменом стоит - заголовок игнорируется намеренно (иначе его подделал бы кто угодно одной строкой в запросе и обошёл весь клоакинг). Адресом посетителя станет адрес узла Cloudflare, и гео у всего трафика этого домена съедет на страну их дата-центра. Трекер замечает такой случай и пишет об этом в лог один раз на домен.
В самом Cloudflare режим SSL/TLS должен быть Full, не Strict: на сервере в этом случае стоит самоподписанный сертификат.
Важно: зелёный замок в браузере за Cloudflare не означает, что домен указывает на ваш сервер - сертификат там свой. Проверять надо статусом домена (ниже).
Мониторинг и статус¶
Фоновый чекер каждые ~2 минуты берёт очередную порцию доменов. Здоровый домен перепроверяется раз в 6 часов, домен с ошибкой - раз в 30 минут. Проверяются:
- доступность origin (TCP :443, при неудаче :80);
- на нашем ли сервере домен - по сигнатуре
X-TrafMate, которую трекер отдаёт на/health. Cloudflare пробрасывает заголовки origin, поэтому способ работает и за прокси, где сравнение IP бесполезно; - сертификат - TLS-рукопожатие и срок действия.
Колонка «Статус»¶
- 🟢 на нашем сервере (плюс бейдж SSL со сроком) - домен реально указывает на ваш трекер.
- ⚪ не на нашем сервере - домен отвечает, но за ним не наш origin: DNS ещё не переключён, или трафик всё ещё идёт на старый трекер.
- 🔴 недоступен - origin не отвечает.
Бейдж SSL становится оранжевым, когда до истечения сертификата меньше 14 дней.
Ручная проверка¶
- «Проверить все (N)» в тулбаре - все домены сразу, параллельно, с прогрессом.
- Отметьте чекбоксами и нажмите «Проверить (N)» - только выбранные.
- Кнопка «Проверить» в строке - один домен.
Переключая домены на новый сервер, удобно смотреть именно сюда: по мере расхождения DNS статусы меняются с серого на зелёный.
Сертификаты: почему домен не открывается по HTTPS¶
Раздел Обслуживание -> Сертификаты (только для администратора). Он показывает не результат проверки со стороны, а то, что видел сам трекер: Caddy спрашивает разрешение на выписку перед каждым сертификатом, и раздел показывает эти запросы.
Читать надо колонку «Состояние»:
| Состояние | Что произошло | Что делать |
|---|---|---|
| Выпущен | сертификат есть и действует | ничего |
| Скоро истечёт | меньше 14 дней | обычно продлевается сам; проверьте, что домен всё ещё ведёт сюда |
| Истёк | продление не прошло | чаще всего домен перестал вести на этот сервер |
| Ждём выписки | мы разрешили, сертификата ещё нет | отказал сам ACME: не прошла проверка домена или упёрлись в лимит Let's Encrypt. Подождите |
| Отказано | домена нет в списке | опечатка в имени; либо wildcard не покрывает нужный поддомен |
| Запросов не было | Caddy ни разу не спросил | соединение до сервера не дошло |
Последняя строка - главная и самая частая. «Запросов не было» означает, что до трекера не долетело ни одного TLS-рукопожатия, и вопрос не к трекеру, а к маршруту:
- A-запись DNS указывает не на этот сервер (или ещё не разошлась);
- домен спрятан за чужим прокси - в Cloudflare нужно серое облако, иначе сертификат выписывает Cloudflare, а не мы (см. «Домен за Cloudflare»);
- порт 443 закрыт файрволом или занят другим сервисом.
Ниже доменов из списка идут хосты, которых в списке нет, но кто-то направил их на
этот сервер. Это либо опечатка (завели example.com, а DNS ведёт www.example.com -
видно сразу), либо чужой домен. Поддомены, покрытые wildcard-записью, помечены
«по *.example.com» и отдельного заведения не требуют.
Сертификат на саму запись *.example.com не выписывается никогда: wildcard требует
проверки через DNS, а мы выписываем по обращению. Поэтому у wildcard-записи в колонке
«Действует до» пусто, а сертификаты появляются у конкретных поддоменов - это норма.
Срок действия берётся у того же фонового чекера, что заполняет статус в списке доменов: он делает настоящее TLS-рукопожатие, то есть показывает сертификат, который видит посетитель, а не файл на диске. Колонка «Проверено» говорит, насколько эти данные свежие; чтобы обновить их сразу, нажмите «Проверить» у домена в разделе «Домены».
Добавить сразу несколько доменов¶
Кнопка «Добавить списком» в разделе «Домены». Разделитель любой: перевод строки, запятая, точка с запятой или пробел - список обычно приходит из буфера обмена. Ссылку можно вставлять целиком, хост будет взят из неё.
Отчёт идёт по каждому имени: в списке из двадцати доменов один обычно уже заведён или набран с опечаткой, и остальные девятнадцать из-за него не теряются.
За раз принимается до 100 имён: каждый домен - это выпуск сертификата, и пачка больше упрётся в лимиты Let's Encrypt, после которых не выпустится уже ничего.
Имя домена проверяется. Кириллические имена приводятся к punycode автоматически
(пример.рф -> xn--e1afmkfd.xn--p1ai): Caddy и движок сравнивают хосты побайтово, и без
преобразования домен просто не нашёлся бы. Отклоняются имена без точки, с пробелами и
подчёркиваниями, с дефисом по краям части, а также IP-адрес, введённый в поле домена.