ДокументацияДомены и сетьСвои домены

Свои домены

Каждый web-сервис и статический сайт получает бесплатный URL на muerte.app, но продакшен-трафик обычно живёт на вашем домене. Здесь — как добавить домен, какие DNS-записи опубликовать, как выпускаются TLS-сертификаты и что делать с apex, поддоменами, wildcard и проксированными схемами.

Свой домен подключается на уровне сервиса. Muerte Cloud проверяет владение через DNS, выпускает сертификат Let's Encrypt и переводит трафик, как только всё готово. Домены и сертификаты бесплатны.

Стандартный URL продолжает работать
Добавление своего домена не отключает встроенный адрес <name>.muerte.app. Оба ведут на один сервис и используют один TLS-конвейер — удобно для health-check'ов, вебхуков и внутренних инструментов.

Добавление домена#

  1. 1
    Откройте вкладку Settings сервиса
    Прокрутите до Custom domains и нажмите Add domain.
  2. 2
    Укажите хостнейм
    Введите точный хостнейм, который хотите обслуживать — example.com, www.example.com или api.example.com. Поддомены добавляются по одному; wildcard настраивается отдельно (см. ниже).
  3. 3
    Опубликуйте показанные DNS-записи
    Muerte Cloud покажет точные записи для вашего регистратора. Достаточно ALIAS/ANAME или CNAME — A-записи поддерживать не нужно.
  4. 4
    Дождитесь проверки
    После распространения DNS проверка обычно занимает меньше минуты. Статус домена меняется с Pending на Verifying и затем Live.

DNS-записи#

Тип записи зависит от того, apex это домен (example.com) или поддомен (www.example.com, api.example.com).

FieldDescription
ПоддоменОпубликуйте CNAME на дефолтный хостнейм сервиса, например www CNAME my-service.muerte.app. TTL 300 — хорошее значение по умолчанию.
Apex / кореньБольшинство регистраторов не разрешают CNAME на apex. Используйте ALIAS или ANAME, чтобы направить example.com на my-service.muerte.app. В Route 53 это называется Alias-запись.
Запасной вариант — A-записиЕсли регистратор не поддерживает ни ALIAS, ни ANAME, опубликуйте A-записи на anycast-адреса из панели. Учтите: ими управляем мы и они могут меняться — ALIAS/ANAME предпочтительнее.
AAAA не нужны
Muerte Cloud обрабатывает IPv6 на границе сети автоматически. Не публикуйте свои AAAA-записи — устаревшая AAAA может обойти edge и сломать TLS.

Пример зоны

text
; apex + www для example.com, указывающие на my-service.muerte.app
example.com.        300  IN  ALIAS  my-service.muerte.app.
www.example.com.    300  IN  CNAME  my-service.muerte.app.

; отдельный хостнейм для API на том же или другом сервисе
api.example.com.    300  IN  CNAME  api-service.muerte.app.

TLS-сертификаты#

Сертификаты выпускаются автоматически через Let's Encrypt сразу после подтверждения владения и обновляются заранее. Ничего загружать и ротировать вручную не нужно.

Автоматическое обновление
Сертификаты обновляются примерно за 30 дней до истечения с бесшовной заменой на edge. Без простоя и ручных шагов.
HTTP → HTTPS
Обычные HTTP-запросы постоянно редиректятся на HTTPS. HSTS включается по желанию для каждого сервиса.
TLS 1.2 и 1.3
Только современные наборы шифров. Старые версии TLS и слабые шифры отклоняются на границе сети.
Только SNI
Каждый запрос должен передавать Server Name Indication. Клиенты 2016 года и новее делают это по умолчанию.
CAA-записи
Если в зоне есть CAA-записи, они должны разрешать letsencrypt.org. Отсутствие этой строки — самая частая причина зависания в статусе Verifying:
example.com. IN CAA 0 issue "letsencrypt.org"

Wildcard-домены#

Один сервис может обслуживать все поддомены зоны — *.example.com — через wildcard-домен. Для wildcard нужен DNS-01 challenge, поэтому Muerte Cloud попросит опубликовать временную запись TXT в _acme-challenge.example.com при выпуске и обновлении сертификата.

Wildcard покрывает один уровень поддоменов. *.example.com подходит для foo.example.com, но не для foo.bar.example.com — для более глубокой вложенности добавьте второй wildcard.

Проксированные схемы (Cloudflare и подобные)#

Cloudflare, Fastly или другой прокси перед Muerte Cloud поддерживается, но это меняет TLS-проверку и IP клиентов, которые видит приложение.

FieldDescription
TLS-проверкаПрокси терминирует TLS, поэтому HTTP-01 challenge не доходит до Muerte Cloud. Включите DNS-01 в настройках домена и опубликуйте TXT-запись из панели.
Сертификат на originИспользуйте режим Full (strict) или аналогичный. Muerte Cloud всегда отдаёт валидный публично доверенный сертификат на origin.
Реальный IP клиентаПо умолчанию приложение видит IP прокси. Настройте прокси на добавление X-Forwarded-For и читайте этот заголовок в приложении.
КешированиеСтатические сайты можно спокойно кешировать на прокси. Для web-сервисов кешируйте HTML только если приложение явно выставляет Cache-Control.

Редиректы apex и www#

Обычно нужен один канонический хостнейм. Добавьте оба — example.com и www.example.com — отметьте один как основной, и Muerte Cloud поставит 301-редирект со второго. Редирект отрабатывает на границе сети, до вашего приложения — без затрат на рантайме.

Диагностика#

Застрял на Verifying
DNS ещё не распространился или CAA-запись блокирует Let's Encrypt. Проверьте: dig +short example.com и dig CAA example.com.
Сертификат не перевыпустился
Чаще всего дело в изменении DNS между выпуском и обновлением. Убедитесь, что ALIAS/CNAME по-прежнему указывает на хостнейм muerte.app.
Ошибка SSL в браузере
Клиент не отправляет SNI, либо промежуточный прокси терминирует TLS своим сертификатом. Проверьте: curl -v https://example.com.
Домен обслуживает не тот сервис
Два сервиса не могут делить один хостнейм. Удалите домен со старого сервиса, дождитесь применения изменений и добавьте его к новому.

Подробнее о конвейере деплоя — в разделе Как работают деплои, о настройке переменных — в разделе Переменные окружения.