# NODA1 Safe Deploy (Canonical Workflow) **Goal:** синхронізувати ноут ↔ GitHub ↔ NODA1 ↔ реальний Docker-стек так, щоб не ламати працюючий прод і не плодити "невидимі" гілки. **Canonical source of truth:** GitHub `origin/main`. --- ## Ролі директорій на NODA1 - `/opt/microdao-daarion` — legacy checkout (може мати роз'їхавшу історію). Не використовувати для `git pull/rebase`, якщо є конфлікти. - `/opt/microdao-daarion.repo` — canonical deployment checkout (git worktree на `origin/main`). Деплой робимо тільки звідси. --- ## Golden rules 1. Жодних ручних правок коду/доків на NODA1 (крім аварійного hotfix з наступним PR). 2. Жодних гілок/розробки на NODA1. 3. Docker compose завжди з однаковим project name: `-p microdao-daarion`. 4. Secrets не комітяться; для них тримати `*.example` + короткий опис розміщення. --- ## Safe sync (NODA1) ```bash ssh root@144.76.224.179 cd /opt/microdao-daarion git fetch origin cd /opt/microdao-daarion.repo git pull --ff-only git rev-parse --short HEAD ``` --- ## Safe deploy одного сервісу (мінімальний ризик) ### Router ```bash cd /opt/microdao-daarion.repo docker compose -p microdao-daarion -f docker-compose.node1.yml build router docker compose -p microdao-daarion -f docker-compose.node1.yml up -d --no-deps --force-recreate router curl -fsS http://127.0.0.1:9102/health ``` ### Gateway ```bash cd /opt/microdao-daarion.repo docker compose -p microdao-daarion -f docker-compose.node1.yml build gateway docker compose -p microdao-daarion -f docker-compose.node1.yml up -d --no-deps --force-recreate gateway curl -fsS http://127.0.0.1:9300/health ``` --- ## Runtime snapshot ```bash cd /opt/microdao-daarion.repo ./scripts/node1/snapshot_node1.sh > "/opt/backups/node1_snapshot_$(date +%Y%m%d-%H%M%S).txt" ```