DinD HostingПосібник
ENУК
РОЗДІЛ 02

Швидкий старт

Вам потрібні лише логін, проєкт і архів. Виберіть зручний шлях — усі три ведуть до того самого живого сайту.

Перш ніж почати#

Вам знадобляться три речі від того, хто адмініструє платформу:

  • адреса консолі (наприклад, https://hosting.example.com або http://10.10.10.10:8900 у мережі хоста);
  • обліковий запис — електронна пошта й пароль (облікові записи створюють адміністратори; сторінки реєстрації немає);
  • базовий домен, під яким житимуть ваші проєкти (ваші сайти матимуть адресу <slug>.<alias>.<base_domain>).

І щось, що можна розгорнути. Найменший можливий сайт — це один файл:

index.html
<!doctype html>
<meta charset="utf-8">
<title>Привіт від DinD Hosting</title>
<h1>Працює.</h1>

platform.yaml не потрібен

Середовище виконання визначається за вашими файлами: package.json → node, requirements.txt / pyproject.toml → python, composer.json або public/index.php → php, index.html → static.

Виберіть свій шлях#

  1. Увійдіть. Відкрийте адресу консолі та введіть електронну пошту й пароль. У верхній панелі є Проєкти і Токени (адміністратори також бачать Користувачі, Метрики і Платформа). Перемикач Мова у верхній панелі — і на сторінці входу — перемикає консоль між англійською та українською; ваш вибір запам'ятовується, а доки ви його не зробили, використовується мова браузера.
    hosting.example.com/login
    Увійти
    Сторінка входу. Перемикач мови розташовано праворуч угорі — тут і у верхній панелі на всіх інших сторінках.
  2. Створіть проєкт. На сторінці Проєкти натисніть + Новий проєкт. Вкажіть slug (hello), відображувану назву та базовий домен — підказка під полем це пояснює: сайти матимуть адресу slug.alias.domain.
  3. Запакуйте вихідний код. Запакуйте в zip або tar саму теку (а не її батьківську): tar czf site.tgz index.html або zip -r site.zip .
  4. Розгорніть. Відкрийте проєкт, залишайтеся на вкладці Розгортання, виберіть Завантаження архіву, оберіть файл і натисніть Розгорнути. Нове розгортання з'явиться у списку — відкрийте його Журнал збірки, щоб стежити за конвеєром наживо.
  5. Відкрийте сайт. Коли розгортання отримає статус працює, застосунок запущено. Перевірте вкладку Домени: перевірка має бути пройдено, а потім сертифікат — видано.
hosting.example.com/projects/7
Розгортання
Вкладка «Розгортання»: (1) виберіть тип джерела, (2) натисніть «Розгорнути», (3) стежте, як статус змінюється з «у черзі» через «збірка» до «працює».
bash
BASE=https://hosting.example.com        # адреса вашої консолі

# 1 · вхід — у відповіді є JWT, чинний 8 годин
TOKEN=$(curl -fsS -X POST "$BASE/api/v1/auth/login" \
  -H 'Content-Type: application/json' \
  -d '{"email":"you@example.com","password":"…"}' | python3 -c 'import json,sys;print(json.load(sys.stdin)["token"])')

# 2 · створюємо проєкт (повертає його числовий id)
PID=$(curl -fsS -X POST "$BASE/api/v1/projects" \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"slug":"hello","display_name":"Hello","base_domain":"example.com"}' \
  | python3 -c 'import json,sys;print(json.load(sys.stdin)["id"])')

# 3 · завантажуємо архів (ім'я поля multipart: file)
UPLOAD=$(curl -fsS -X POST "$BASE/api/v1/projects/$PID/uploads" \
  -H "Authorization: Bearer $TOKEN" -F file=@site.tgz \
  | python3 -c 'import json,sys;print(json.load(sys.stdin)["upload_id"])')

# 4 · запускаємо розгортання (202 Accepted) і стежимо за його журналом
curl -fsS -X POST "$BASE/api/v1/projects/$PID/deployments" \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d "{\"source\":{\"type\":\"archive\",\"upload_id\":\"$UPLOAD\"}}"

Розгортання виконуються у фоновому режимі. Опитуйте GET /api/v1/projects/$PID/deployments, доки найновіше не отримає статус running, або читайте журнал потоком із GET /api/v1/deployments/{id}/logs?stream=1.

Створіть токен на сторінці Токени, а потім один раз підключіть свого агента:

bash
claude mcp add --transport http dind-platform https://hosting.example.com/mcp/ \
  --header "Authorization: Bearer dt_…"

Тепер опишіть бажаний результат і дозвольте агентові викликати інструменти:

ВиСтвори проєкт «hello» на example.com і розгорни теку ./site.
create_project(slug="hello", display_name="Hello", base_domain="example.com") → id 7 · hello.alex.example.com
upload_archive(project=7, filename="site.tgz", content_base64="…") → upload_id 3f0c…e1.tgz
deploy_app(project=7, source_type="archive", upload_id="3f0c…e1.tgz") → deployment #1 queued
list_deployments(project=7) → #1 running · domain_status(project=7) → pre-check passed · certificate issued
АгентГотово — розгортання #1 працює, сертифікат видано. Ваш сайт доступний на https://hello.alex.example.com.

Задіяні інструменти: create_project, upload_archive (або create_upload_url для великих архівів), deploy_app, list_deployments і get_logs. Див. API-токени, REST і MCP.

Що щойно сталося#

Браузерhttps://blog.alex…1DNSA-запис → IP шлюзу2Ingressпроксі / nftables3dind-hosting10.10.10.10 :4434Traefikза Host(…)5Демон dind172.28.0.64:100006Застосунокapp-blog7Відвідувач відкриваєblog.alex.example.comІм'я вказує наадресу вашого ingressВи вирішуєте: пересилати:80/:443 на 10.10.10.10Єдина адреса, видимахосту; нічого не опублікованоЗавершує TLS, обираєфайл маршруту для HostМережа host: застосунок навласній IP демона + портСлухає 0.0.0.0:$PORTусередині цього демона
Від браузера відвідувача до контейнера вашого застосунку. Кроки 1–3 — це DNS і ваш вхідний шлюз (ingress), кроки 4–7 відбуваються всередині dind-hosting.

Коли ви натиснули Розгорнути, платформа (1) розпакувала ваш архів, (2) прочитала platform.yaml або визначила середовище виконання, (3) згенерувала Dockerfile для цього середовища, (4) зібрала образ усередині вашого демона, (5) запустила контейнер на вільному порту, (6) записала маршрут Traefik для hello.<alias>.<base_domain> і (7) перевірила DNS і маршрутизацію перед запитом сертифіката.

Наступні кроки#