Індекс журналуDockup / польова нотатка
Note / custom-domain-automatic-tls

Власний домен і автоматичний TLS у Dockup

Власний домен і автоматичний TLS у Dockup: додайте DNS-запис, підтвердьте право власності, підключіть HTTPS, відкрийте додаткові порти, перевірте перемикання та безпечно усувайте проблеми.

Налаштування власного домену й автоматичного TLS складається з трьох окремих рівнів: сервіс Dockup має працювати стабільно, DNS має вказувати hostname на платформу, а hostname має пройти перевірку перед випуском сертифіката. Якщо розглядати ці рівні окремо, перемикання стає передбачуваним, а помилки DNS не виглядають як збої застосунку.

Dockup також надає кожному сервісу адресу *.dockup.tech. Зберігайте цю адресу доступною під час поширення DNS-змін, щоб тестувати застосунок незалежно від власного hostname.

Що потрібно підготувати перед додаванням власного домену Dockup?

Почніть із сервісу, який уже працює та проходить перевірку готовності:

dockup status production/web --json
dockup health production/web --json

Відкрийте або перевірте наявну URL-адресу *.dockup.tech. Якщо застосунок не працює за цією адресою, додавання домену не вирішить проблему. Спочатку перевірте runtime-логи.

Зберіть таку інформацію:

ЕлементПрикладЧому це важливо
Точна цільproduction/webЗапобігає підключенню домену до неправильного сервісу
Hostnameapp.example.comDNS-ім’я, яке використовуватимуть користувачі
Доступ до DNSРеєстратор або DNS-провайдерПотрібен для створення запису
Поточний TTL300 секундВизначає швидкість поширення змін і відкату
Канонічна URL-адреса застосункуhttps://app.example.comМоже впливати на редиректи та cookies
Health route/healthПідтверджує працездатність сервісу перед перемиканням

Заздалегідь зменште поточний TTL DNS, якщо замінюєте активного провайдера. Не видаляйте старий запис, доки не будуть відомі ціль Dockup, конфігурація застосунку та план відкату.

Перевірте поведінку застосунку, яка залежить від host. Для нового HTTPS hostname можуть знадобитися зміни в authentication callbacks, CORS allowlist, cookie domains, OAuth redirect URLs, адресах webhook-ів і згенерованих абсолютних посиланнях.

Як додати та підтвердити домен?

Спочатку перегляньте поточні домени:

dockup domain list production/web --json

Додайте hostname:

dockup domain add app.example.com production/web --json

У відповіді буде DNS-ціль, яку потрібно налаштувати. Створіть вказаний CNAME-запис у DNS-провайдера. Не вигадуйте IP-адресу й не копіюйте значення з іншого сервісу — використовуйте ціль, яку повернуто саме для цього домену.

Після поширення DNS-змін підтвердьте домен за допомогою повернутого ідентифікатора домену:

dockup domain verify <domainId> production/web --json

Перевірка підтверджує, що публічний DNS-запис резолвиться належним чином. Помилка зазвичай має одну з чотирьох причин:

  1. Неправильне ім’я запису.
  2. Неправильна CNAME-ціль.
  3. Залишився старий конфліктний запис A, AAAA або CNAME.
  4. Кеші resolver-ів ще не оновилися до нового значення.

Перевіряйте authoritative DNS, а не видаляйте та створюйте домен повторно. Поширення змін — це процес розподіленого кешування, а не процес збірки Dockup.

Як випускається та підтримується сертифікат HTTPS?

Після успішної перевірки замовте сертифікат:

dockup domain ssl <domainId> production/web --json

Dockup обробляє випуск сертифіката для перевіреного hostname і обслуговує власний домен через HTTPS. Платформа керує життєвим циклом TLS, тому контейнеру застосунку не потрібно зберігати файли сертифікатів або запускати процес їх поновлення.

Перевірте результат ззовні платформи:

curl -I https://app.example.com

Переконайтеся, що:

  • Сертифікат відповідає hostname.
  • Відповідь надходить через HTTPS.
  • Редиректи не зациклюються.
  • Застосунок повертає очікуваний статус.
  • Authentication flows і callback-и використовують новий origin.
  • Статичні ресурси завантажуються без помилок mixed content.

Випуск сертифіката може завершитися помилкою, навіть якщо сам застосунок працює належним чином. Розділяйте діагностику DNS і сервісу. Використовуйте domain verify для підтвердження права власності через DNS, а service logs — для перевірки поведінки застосунку.

У статті про розгортання без простою пояснюється незалежна перевірка готовності релізу.

Як перемкнути трафік без простою?

Безпечне перемикання передбачає, що старий маршрут залишається доступним, доки новий hostname не буде перевірено.

  1. Розгорніть і перевірте сервіс Dockup за його platform URL.
  2. Додайте власний домен у Dockup.
  3. Створіть DNS-запис.
  4. Перевірте DNS.
  5. Випустіть TLS.
  6. Напряму перевірте HTTPS.
  7. Оновіть callbacks, канонічні URL і monitoring.
  8. Якщо конфігурація DNS це дає змогу, спрямуйте невелику частину робочого трафіку.
  9. Спостерігайте за логами та доступністю.
  10. Відмовляйтеся від старого провайдера лише після стабілізації нового маршруту.

Перевірки доступності Dockup виконуються щохвилини та надають статистику часу відповіді, зокрема p95:

dockup uptime production/web --hours 24 --json

Для критичних доменів зберігайте незалежний external monitoring. Перевірка платформи підтверджує публічну доступність, а зовнішній monitor перевіряє шлях користувача з іншої системи.

Якщо власний домен замінює поточний production host, збережіть дані для відкату: попереднє значення DNS, попередній TTL, статус старого провайдера та умову, за якої потрібно виконати відкат.

Як працюють домени для додаткових портів?

Сервіс може відкривати другий HTTP-порт для admin UI, endpoint-а метрик або іншого web-процесу. Dockup може створити додатковий platform domain без власного DNS:

dockup port list production/web --json
dockup port add 8080 production/web --name admin --json

Повернутий домен спрямовує трафік на вибраний порт контейнера. Це окремий маршрут, незалежний від основного власного домену.

Не відкривайте порт лише тому, що процес на ньому слухає. З’ясуйте, чи має endpoint authentication, чи містить production-дані та чи повинен бути публічним узагалі. Внутрішній admin interface не має ставати доступним з інтернету лише задля зручності.

Видаляйте застарілий домен порту через підтримуваний domain interface лише після перевірки, що його більше не використовують monitor, callback або робочий процес оператора. Зміни доменів портів є mutations і відображаються в audit log.

Як усувати проблеми з DNS, TLS і застосунком?

Використовуйте пошарову діагностику:

СимптомЩо перевірити спочаткуКоманда Dockup
Домен не резолвитьсяDNS-запис і поширення змінdomain verify
Сертифікат не випущеноСтатус перевірки доменуdomain list, domain ssl
HTTPS працює, але застосунок повертає помилкуRuntime logslogs --json
Циклічний редиректНалаштування proxy/host у застосункуenv list, runtime logs
Platform URL працює, а власний host — ніРівень DNS/TLSDomain commands
Не працюють обидві URL-адресиDeployment і runtimestatus, build/runtime logs
Не працює додатковий портПрив’язка port-domain і процесport list, runtime logs

Переглядайте вивід сервісу, не змішуючи його з висновками щодо DNS:

dockup logs production/web --json
dockup status production/web --json

Якщо нещодавня зміна середовища додала канонічну URL-адресу, пам’ятайте, що для неї потрібен redeploy:

dockup env set APP_URL=https://app.example.com \
  -s production/web \
  --json

dockup deploy production/web --wait --json

У посібнику зі змінних середовища та секретів описано цей життєвий цикл.

Видалення домену та відкат

Видалення прив’язки Dockup є руйнівною операцією для маршруту, тому спочатку перемістіть або видаліть публічний DNS-запис і підтвердьте заплановану заміну. Потім видаліть прив’язку через підтримуваний domain interface, використовуючи точний ідентифікатор домену.

Не видаляйте домен під час тимчасової проблеми із сертифікатом або поширенням DNS, якщо цього не вимагає план відновлення. Збережена конфігурація дасть змогу успішно пройти перевірку після оновлення кешів.

Переглядайте mutations за допомогою:

dockup audit --search domains --json

В audit trail має бути видно, хто додав, підтвердив, захистив або видалив hostname.

Чекліст передачі в production

Повна передача власного домену й автоматичного TLS має містити ціль сервісу, hostname, ідентифікатор домену, тип і ціль DNS-запису, результат перевірки, результат випуску сертифіката, зміни application callback-ів, URL моніторингу та значення DNS для відкату.

Не зберігайте приватний ключ сертифіката в repository або контейнері. Керована TLS-границя Dockup існує саме для того, щоб команда застосунку могла працювати з hostname без поширення матеріалів сертифіката.

Щоб дізнатися про всі поточні flags, скористайтеся довідником Dockup CLI. Щоб виконати початкове розгортання перед роботою з доменом, дотримуйтеся інструкцій у статті Від Git repository до production.

Планування apex і subdomain

Subdomain на кшталт app.example.com зазвичай є найпростішим hostname для застосунку, оскільки DNS-провайдери можуть представити його за допомогою CNAME. Apex на кшталт example.com може вимагати специфічної для провайдера flattening- або alias-поведінки. Дотримуйтеся DNS-цілі, яку повертає Dockup, і можливостей authoritative DNS-провайдера.

Оберіть один canonical host і налаштуйте redirect альтернатив на рівні застосунку або routing. Обслуговування одночасно www та apex без canonical policy може розділити cookies, аналітику, cache entries і пошукове індексування.

Перевірка припущень щодо поновлення сертифіката

Керований TLS усуває потребу запускати renewal client у контейнері, але hostname має й надалі коректно резолвитися. Майбутня міграція DNS, зміна proxy або видалений запис можуть зламати валідацію.

Додавайте статус доменів до регулярних перевірок:

dockup domain list production/web --json
dockup uptime production/web --hours 24 --json

У runbook для власного домену й автоматичного TLS потрібно вказати відповідального за DNS, контакт для питань поновлення та дату останньої зовнішньої перевірки сертифіката. Це допоможе не з’ясовувати відповідальних лише під час інциденту із сертифікатом.

Захист non-production hostname

Staging- і preview-hostname можуть розкривати незавершені функції та дані, схожі на production. За потреби використовуйте authentication на рівні застосунку, визначте policy індексації на рівні застосунку та обмежте поширення non-production URL.

Директиви для пошукових систем не є access control. Захищене середовище все одно потребує authentication і належного поводження з даними.

Повторна перевірка після поширення змін

Повторіть зовнішні HTTPS- і callback-тести після повного завершення початкового DNS TTL.

Почніть із deployment, який можна перевірити

Спочатку підключіть некритичний hostname, збережіть platform URL на час поширення DNS-змін і зафіксуйте точне значення DNS, потрібне для відкату.

Почніть безкоштовно на app.dockup.ai. План Free коштує $0 на місяць, включає початковий кредит $10 і підтримує один workspace, три databases та три deployments.

FAQ

Який DNS-запис потрібен власному домену Dockup?

Виконайте dockup domain add і створіть DNS-запис, указаний у відповіді команди. Використовуйте повернуту ціль, а не копіюйте значення з іншого сервісу.

Коли Dockup може випустити TLS для власного домену?

Після того як DNS-запис hostname пройде перевірку домену в Dockup, замовте випуск сертифіката за допомогою задокументованої команди domain ssl.

Чи потрібно контейнеру зберігати TLS-сертифікати?

Ні. Dockup керує TLS для перевіреного власного домену, тому контейнеру застосунку не потрібні файли сертифіката або процес поновлення.

Чи може Dockup відкрити додатковий порт контейнера?

Так. Команди port можуть створити окремий автоматично згенерований домен для додаткового публічного порту без потреби у власному DNS.

Що перевірити, якщо platform URL працює, а власний домен — ні?

Зосередьтеся на DNS-записах, поширенні змін, перевірці домену та статусі сертифіката. Справна platform URL свідчить, що рівень застосунку, імовірно, працює.