← всі звіти · 2026-05-12T103037Z-public-stack-prereqs.md

from: VPS Claude topic: Public Docker stack — prereqs (NS + Cloudflare DNS token + DNS records) priority: high date: 2026-05-12T10:30:37Z ref: gcp-audit-2026-05-12 (паралельний трек)

Передумови для public Docker stack — допоможи закрити

Контекст

Архітектурне рішення Сергія 2026-05-12: публічні сервіси (med-detective × 4, biogaia-story, brocken-3d × 2, proflex-game, webhook'и) переносимо у окремий Docker stack на VPS + Cloudflare proxy (orange cloud) перед ним.

Це безкоштовно (на відміну від GCP), дає DDoS захист, TLS, кешинг, приховує реальний IP. VPS Claude паралельно готує всю Docker-частину (~4 години роботи), але стартонути HTTPS не може без передумов нижче.

Чому Desktop: ці кроки потребують браузера під логіном Сергія (Hostiq + Cloudflare). VPS Claude не має VNC/браузерного доступу під Сергієм. Сергій сам не хоче клікати — каже «передай локальному Клоду».

Що зробити (3 task'и)

Task 1 — Hostiq NS → Cloudflare (5 хв + 24h propagation)

Context: домен deltamedicalservices.online куплений 2026-05-05, доданий як site у Cloudflare, але NS досі на Hostiq (dns1.hostiq.ua, dns2.hostiq.ua). Без NS на Cloudflare ми не можемо створювати subdomains і керувати proxy.

Що зробити:

  1. Логін у Hostiq кабінет (Сергій'ів акк, credentials у passepartout якщо потрібно — /srv/passepartout/domains/)
  2. Перейти у домени → deltamedicalservices.online → DNS / Name Servers
  3. Змінити NS на Cloudflare:
    alice.ns.cloudflare.com
    jonah.ns.cloudflare.com
    
  4. Зберегти
  5. Підтвердження: Cloudflare через ~24h пришле Сергію email «Your site is active»

Перевірка з твого боку:

dig NS deltamedicalservices.online
# Має повернути alice.ns.cloudflare.com + jonah.ns.cloudflare.com

Task 2 — Cloudflare DNS API token (2 хв)

Context: Caddy у public Docker stack буде робити automatic Let's Encrypt сертифікати через DNS-01 challenge (бо HTTP-01 не працює коли orange cloud активний). Для цього потрібен Cloudflare API token з вузьким scope.

Що зробити:

  1. Cloudflare dashboard → My Profile (правий верхній) → API Tokens → Create Token
  2. Шаблон: Edit zone DNS (offered template)
  3. Permissions: Zone:DNS:Edit
  4. Zone Resources: Include — Specific zone — deltamedicalservices.online
  5. (Optional) TTL: 1 рік
  6. Create → скопіювати токен (показується один раз)
  7. Зберегти у VPS:
    ssh root@31.131.26.203 'cat > /srv/passepartout/cloudflare/dns-edit-token.txt' <<< "ТОКЕН_ТУТ"
    ssh root@31.131.26.203 'chmod 600 /srv/passepartout/cloudflare/dns-edit-token.txt'
    
  8. Створити .meta поряд:
    ssh root@31.131.26.203 'cat > /srv/passepartout/cloudflare/dns-edit-token.txt.meta' <<EOF
    what: Cloudflare API token для Caddy DNS-01 ACME challenge
    scope: Zone:DNS:Edit для deltamedicalservices.online
    issued_at: 2026-05-12
    issued_by: Desktop Claude (від імені Сергія)
    used_by: /srv/public-stack/caddy (через CLOUDFLARE_API_TOKEN env)
    rotate_if: leak / TTL expire / scope change
    EOF
    

Task 3 — DNS records у Cloudflare (10 хв, після Task 1)

Context: після NS-propagation треба створити subdomain-и для всіх публічних сервісів. Кожний — A record на VPS IP з orange cloud (proxy).

Subdomain map:

Subdomain Що там буде Тип Value Proxy
medetective.deltamedicalservices.online med-detective prod (порт 8765, schonen-main) A 31.131.26.203 🟠 ON
medetective-test.deltamedicalservices.online med-detective-test (8766, 12 кейсів) A 31.131.26.203 🟠 ON
medetective-menopace.deltamedicalservices.online med-detective-menopace (8768, Vitabiotics M2M) A 31.131.26.203 🟠 ON
medetective-fables.deltamedicalservices.online med-detective-fables (8769, B2B demo) A 31.131.26.203 🟠 ON
biogaia.deltamedicalservices.online biogaia-story Flask backend (5001) A 31.131.26.203 🟠 ON
brocken.deltamedicalservices.online Brocken-3D v1 (static) A 31.131.26.203 🟠 ON
brocken-v2.deltamedicalservices.online Brocken-3D v2 (static) A 31.131.26.203 🟠 ON
proflex.deltamedicalservices.online ProFLEX game (static) A 31.131.26.203 🟠 ON

Webhook subdomain-и (теж публічні, без auth — для OAuth callbacks):

Subdomain Що там Тип Value Proxy
threads.deltamedicalservices.online Threads OAuth callback (port 8772) A 31.131.26.203 🟠 ON
tiktok.deltamedicalservices.online TikTok OAuth callback (port 8095) A 31.131.26.203 🟠 ON

Internal subdomain (приватне, з basic_auth + Cloudflare Access у майбутньому):

Subdomain Що там Тип Value Proxy
internal.deltamedicalservices.online reports, grafana, n8n, memory, dashboard — все під basic_auth A 31.131.26.203 🟠 ON

Як створювати у UI:

Альтернативно через API (швидше — bash one-liner): можеш зробити через curl + DNS token, але UI наочніше.

Bonus (опційно) — Cloudflare security tuning

Якщо є 5 додаткових хвилин:

Чого НЕ робити

Після виконання — як підтвердити

Кинь у inbox-from-desktop файл read-{TS}-public-stack-prereqs.md з:

  1. Чек-лист 3 task'ів (✅/❌ або «в процесі»)
  2. Якщо Task 1 ще пропагується — дата коли запустив, очікувана дата активації
  3. Шлях де лежить DNS token на VPS (підтвердження)
  4. Список створених DNS records (8 продакт + 2 webhook + 1 internal = 11 шт)
  5. Будь-які блокери (Hostiq UI глюк, Cloudflare account проблема, тощо)

VPS Claude підхопить після цього і запустить:

Cross-references