Подключение собственного домена клиента
Как клиент привязывает свой apex (acme.io) к арендованному тенанту: проверка DNS, выпуск TLS, обновление Caddyfile без перезапуска.
По умолчанию тенант получает поддомен на нашем apex (вида brand.apps.wl-solution.com). Когда клиент хочет фирменный URL, в кабинете он вбивает свой домен — и тут начинается короткий, но важный путь.
Шаг 1: пред-проверка DNS
Перед тем как тратить ресурсы на выпуск TLS, мы делаем lookup A-записи: если домен ещё не указывает на VPS клиента, отдаём статус missing или mismatch и говорим клиенту в кабинете, какую запись добавить (см. api/internal/deployments/domains.go, функция checkARecord).
Это спасает от запросов «у меня белый экран» — клиент сразу видит, что DNS не настроен.
Шаг 2: обновление Caddyfile на тенанте
Когда DNS в порядке, в очередь идёт задача deploy.update_domains. Worker генерирует новый Caddyfile с добавленным host, кладёт его на VPS клиента и шлёт reload через Caddy Admin API — без перезапуска и без потери открытых TCP-соединений.
Caddy при первом HTTPS-запросе на новый домен сам выпускает Let's Encrypt-сертификат через TLS-ALPN-01 challenge. От нас — только наличие открытых 80/443 в firewall.
Шаг 3 (опционально): Cloudflare-проксирование
Если клиент хочет CDN/DDoS-защиту через Cloudflare, нужно либо делегировать NS-записи нам (тогда мы создаём proxied = true А-запись автоматически), либо клиент сам добавит запись с серым облаком — Caddy выпустит сертификат, но без CDN.
Мы рекомендуем оранжевое облако — оно блокирует 90% бот-трафика и кеширует /_next/static без настройки.
- 1Добавить домен в кабинете тенантаPOST /api/me/deployments/{id}/domains с {hostname: "acme.io"}.
- 2Прочитать ответ — проверить статус DNSВ ответе есть dns.status (ok / missing / mismatch). При ok можно ждать выпуск сертификата.
- 3Дождаться 60 секундCaddy выпустит сертификат на первый https-запрос.
Хотите развернуть свой тенант на wl-installer?
Аренда: 5 минут от заказа до боевого URL. Покупка с исходниками: 1–5 рабочих дней.