5.8 KiB
DEPLOY-RUNBOOK: лендинг simbiot.cil.by
Создан day-тиком 2026-10-05 (эскалация e-261004110909-bd70b0). Отвечает на вопрос «как лендинг попадает на прод и кто что правит». Обновлять при изменении топологии.
1. Топология (факты, проверены 2026-10-04…05)
| Что | Где | Проверка |
|---|---|---|
| Прод-хост | 204.168.232.21, Caddy (server: Caddy, h3) |
getent hosts simbiot.cil.by |
| На проде живут | cil.by (портал, /root/coop), git.cil.by (Forgejo), simbiot.cil.by (лендинг, docroot в главном Caddyfile — simbiot в RESERVED_SUBDOMAINS, это НЕ sites/*) |
curl |
| Хост харнеса | hermes-mon = 94.130.177.31 (Hetzner) — этот хост, НЕ прод | hostname -I |
| Docroot лендинга | на проде, точный путь — в блоке simbiot.cil.by /etc/caddy/Caddyfile (см. §4 шаг 1) |
— |
2. Источник истины лендинга
| Файл | Статус |
|---|---|
simbiot-harness: docs/simbiot-landing-v2-live.html |
✅ канон. Синхронизирован с продом 2026-10-04 + фикс showcase-стилей (коммит d5aff30, в origin/master). Все 4 фикса аудита t-261002151425 + стили секции live-product в основном <style> |
portal-репо: sites/simbiot/index.html |
❌ протух (версия от 2026-08-25, d2e6d79a; 28.7KB vs прод 41.1KB). НЕ эталон. Править только если вернуть prod→repo pull-деплой (см. §6) |
Прод /…/index.html |
текущая живая версия; changable только с прода |
Правки лендинга всегда начинать с канона в harness-репо, не с прода.
3. Почему харнес не деплоит сам (осознанное ограничение)
- SSH-ключей на хосте харнеса нет по политике (KEYS-REGISTRY §3–4:
~/.sshпуст, доступ наружу по SSH не хранится). - Портал (cil.by) имеет write-API на прод (
/api/project/*/repo/*, Caddy-patch), но требует человеческую session-логин — и правильно. - Auto-commit прода (
scripts/auto_commit.shв portal-репо) только пушит prod→git; pull-деплоя лендинга нет вообще. - ⇒ Деплой в docroot = одна ручная команда владельца прода (§4).
4. Деплой (Alex / любой, у кого SSH на прод) — 1 команда
# из корня simbiot-harness на hermes-mon:
ssh root@204.168.232.21 'bash -s' < scripts/deploy_landing.sh
Скрипт сам: найдёт docroot в /etc/caddy/Caddyfile → забэкапит (держит 10
последних) → скачает канон из git.cil.by (токен берёт из FORGEJO_PULL_TOKEN
env или /root/coop/.alfa_env на прода; можно передать inline) → проверит
содержимое (noscript чист, стили/мета на месте; при провале — откат, ничего
не ставит) → установит → проверит живой сайт. Идемпотентен. Caddy перезагружать
не нужно (file_server отдаёт сразу), кэш браузера — Ctrl-F5.
Если хочется руками (то же самое по шагам):
# 1) docroot: grep -A4 'simbiot.cil.by' /etc/caddy/Caddyfile → root * /path
# 2) curl -fsSL -H "Authorization: token <read-токен Forgejo>" \
# https://git.cil.by/symbiot/simbiot-harness/raw/branch/master/docs/simbiot-landing-v2-live.html \
# -o <DOCROOT>/index.html
# 3) верификация: ./scripts/landing_verify.sh # exit 0 = прод == канону
Бэкап перед деплоем (по желанию): на проде cp <DOCROOT>/index.html index.html.bak-$(date +%F).
5. Верификация без скрипта
curl -s https://simbiot.cil.by/ | grep -c 'SHOWCASE' # 0 = ок (стили не в noscript)
curl -s https://simbiot.cil.by/ | grep -c 'prefers-reduced-motion' # >0
curl -s https://simbiot.cil.by/ | awk '/<noscript>/,/<\/noscript>/' | grep -c moc-grid # 0
curl -sI https://simbiot.cil.by/og.png | head -1 # 200
sha256sum <(curl -s https://simbiot.cil.by/) docs/simbiot-landing-v2-live.html # равные
6. Долгосрочное лечение дрейфа (бэклог, L-кандидат)
Прод деплоится руками → источник в git протухает → «прод ≠ репо». Варианты:
- deploy-hook в портале: кнопка/эндпоинт «redeploy simbiot landing» = curl из git.cil.by в docroot (использует уже существующий на прода git+forgejo);
- перенести docroot лендинга в
/root/coop/sites/simbiot/(сейчас RESERVED) — тогда auto-commit прода начнёт его сам зеркалить в git, а правки можно вести через harness-репо + один ручной rsync/checkout; - оставить как есть + этот runbook (мин-цикл верифицирует дрейф скриптом §4.3).
7. Чangelog
- 2026-10-05: создан; git-push канал харнеса восстановлен (pushurl на admin-токен Forgejo, см. KEYS-REGISTRY §1), висящие коммиты cbacc99..0d5dd17 запушены. Ожидается ручной деплой d5aff30 на прод (§4) — фикс showcase-стилей.