7.2 KiB
NODE.DC Synology deploy
Эта папка фиксирует текущий воспроизводимый NAS-deploy для nodedc-platform на Synology RS1221RP+.
Правила
- Не выполнять
docker stop,docker restart,docker compose down,docker system pruneдля старых проектов. - Новый compose project:
nodedc-platform. - Новая папка на NAS:
/volume1/docker/nodedc-platform. - Внутренний HTTP edge использует
18080, Tasker upstream —18090, Ops Agents Gateway upstream —18190. - Старые порты
9000и5678заняты старымnodedc-demoи не используются.
Текущие внешние домены
https://id.nodedc.ru -> Authentik
https://hub.nodedc.ru -> Launcher / Hub
https://ops.nodedc.ru -> Tasker / Operational Core
https://ops-agents.nodedc.ru -> Ops Agents Gateway / MCP
В Caddyfile.http эти домены проксируются через локальный HTTP edge, но upstream получает X-Forwarded-Proto: https и X-Forwarded-Port: 443.
Локальные домены для первичной проверки
На Mac для первичной проверки добавить в /etc/hosts:
172.22.0.222 auth.nas.nodedc
172.22.0.222 launcher.nas.nodedc
172.22.0.222 task.nas.nodedc
Первичные URL:
http://auth.nas.nodedc:18080
http://launcher.nas.nodedc:18080
http://task.nas.nodedc:18080
http://task.nas.nodedc:18090
Что входит
docker-compose.platform-http.ymlподнимает новый Authentik, Launcher и Caddy edge.Caddyfile.httpмаршрутизирует локальныеauth/launcher/task.nas.nodedcи внешниеid/hub/ops.nodedc.ru.deploy-current.shсинхронизирует compose, Caddyfile, Authentik templates и опционально Launcher source в NAS mount.backup-current.shделает snapshot Launcher runtime/uploads/Auth templates/config и готовит командуpg_dumpдля Authentik Postgres.- Tasker поднимается отдельным compose из
NODEDC_TASKMANAGER/plane-app/docker-compose.yamlна порту18090. - Ops Agents Gateway поднимается отдельным compose из
NODEDC_TASKMANAGER_CODEXAPI/docker-compose.synology.ymlна172.22.0.222:18190; Synology reverse proxy должен вестиops-agents.nodedc.ruна этот порт, а не на18090.
Синхронизация текущего состояния
С Mac, при смонтированном /Volumes/docker:
cd /Users/dcconstructions/Downloads/mnt/NODEDC/platform
NAS_ROOT=/Volumes/docker/nodedc-platform \
LAUNCHER_REPO=/Users/dcconstructions/Downloads/mnt/data/nodedc_launcher \
TASKER_REPO=/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER \
TASKER_CHANGED_BASE=533f8c6 \
GATEWAY_REPO=/Users/dcconstructions/Downloads/mnt/data/NODEDC_TASKMANAGER_CODEXAPI \
./infra/synology/deploy-current.sh
Скрипт не запускает Docker сам: на NAS sudo интерактивный, поэтому команды применения печатаются в конце.
Что синхронизируется:
- Platform compose/Caddy/Auth templates.
- Launcher source в
/volume1/docker/nodedc-platform/launcher/source. - Tasker
plane-app/docker-compose.yamlи, если заданTASKER_CHANGED_BASE, только изменённые source-файлы из диапазонаTASKER_CHANGED_BASE..HEAD. - Ops Agents Gateway source в
/volume1/docker/nodedc-platform/ops-agents.
Полный sync Tasker source по SMB тяжёлый для Plane fork. Использовать его только осознанно:
TASKER_SYNC_SOURCE=1 ./infra/synology/deploy-current.sh
Секретные runtime env-файлы не перетираются:
/volume1/docker/nodedc-platform/platform/.env.synology/volume1/docker/nodedc-platform/tasker/plane-app/.env.synology/volume1/docker/nodedc-platform/ops-agents/.env
Backup текущего состояния
С Mac, при смонтированном /Volumes/docker:
cd /Users/dcconstructions/Downloads/mnt/NODEDC/platform
NAS_ROOT=/Volumes/docker/nodedc-platform ./infra/synology/backup-current.sh
Файловый backup создаётся в /Volumes/docker/nodedc-platform/backups/platform-current-*.
Для Authentik Postgres dump нужно выполнить напечатанную команду на Synology, потому что Docker доступен через интерактивный sudo:
bash /volume1/docker/nodedc-platform/backups/platform-current-YYYYMMDD-HHMMSS/run-authentik-db-dump-on-synology.sh
Если планируются изменения Tasker backend/schema, дополнительно выполнить:
bash /volume1/docker/nodedc-platform/backups/platform-current-YYYYMMDD-HHMMSS/run-tasker-db-dump-on-synology.sh
Если Ops Agents Gateway уже был запущен и там есть production tokens/grants/audit, дополнительно выполнить:
bash /volume1/docker/nodedc-platform/backups/platform-current-YYYYMMDD-HHMMSS/run-ops-agents-db-dump-on-synology.sh
Что нужно перед запуском
- Собрать или загрузить
linux/amd64images:nodedc/launcher:localnodedc/plane-frontend:runodedc/plane-admin:runodedc/plane-space:runodedc/plane-live:localnodedc/plane-backend:localnodedc/plane-proxy:ru
- Для Ops Agents Gateway отдельный registry image пока не обязателен: deploy из source repo выполняется через
docker compose --env-file .env -f docker-compose.synology.yml up -d --build. - Создать
.env.synologyиз.env.synology.exampleи заменить всеreplace-with-*. - Создать
plane.env.synologyдля Tasker изplane.env.staging.example, но с HTTP URL на*.nas.nodedc:18080и портами18090/18490.
Обязательные runtime-права
Launcher пишет runtime snapshot и uploads под пользователем node (uid=1000). После создания NAS-папок:
cd /volume1/docker/nodedc-platform/platform
sudo mkdir -p ../launcher/server-storage ../launcher/uploads
sudo chown -R 1000:1000 ../launcher/server-storage ../launcher/uploads
sudo chmod -R u+rwX,g+rwX ../launcher/server-storage ../launcher/uploads
Проверка внутри контейнера:
sudo /usr/local/bin/docker exec nodedc-platform-launcher-1 sh -lc \
'touch /app/server/storage/.write-test /app/server/storage/uploads/.write-test && rm /app/server/storage/.write-test /app/server/storage/uploads/.write-test && echo storage-ok'
Проверки после деплоя
curl -k -sS --compressed https://id.nodedc.ru/if/flow/default-authentication-flow/ \
| grep -aE 'hub.nodedc.ru|launcher.local|getLauncherBaseUrl|Запросить доступ'
В выводе должны быть id.nodedc.ru -> hub.nodedc.ru и не должно быть launcher.local.