5.2 KiB
NODE.DC Platform Infra
Эта папка предназначена для локального и staging infra слоя:
- Authentik;
- reverse proxy;
- локальные домены;
- shared env examples;
- Map Gateway с persistent TileCache;
- будущие docker compose файлы.
Первый local dev слой проксирует текущие локальные приложения без физического переноса репозиториев:
auth.local.nodedc->authentik-server:9000;launcher.local.nodedc->host.docker.internal:5173;task.local.nodedc->host.docker.internal:8090.
Authentik построен по актуальной официальной Docker Compose схеме 2026.2: PostgreSQL 16, server и worker. Redis для Authentik в этой версии официального compose не используется.
Reverse proxy использует PLATFORM_PROXY_IMAGE=nodedc/plane-proxy:ru, потому что этот локальный образ уже содержит Caddy и не требует отдельного pull с Docker Hub. На чистой машине можно заменить значение на caddy:2-alpine.
Expected files
infra/
.env.example
scripts/init-dev-env.sh
docker-compose.dev.yml
docker-compose.staging.yml
reverse-proxy/
authentik/
Local start
- Check the local testing contract:
cd /Users/dcconstructions/Downloads/mnt/NODEDC/platform
sh infra/scripts/check-local-test-system.sh
The local testing canon is documented in docs/LOCAL_TESTING_SYSTEM.md. It keeps product apps local and allows the deployed AI Hub only as a remote Codex worker relay.
- Add local domains to
/etc/hosts:
127.0.0.1 auth.local.nodedc
127.0.0.1 launcher.local.nodedc
127.0.0.1 task.local.nodedc
This requires admin rights on macOS.
- Generate local secrets:
./infra/scripts/init-dev-env.sh
- Start infra:
docker compose --env-file infra/.env -f infra/docker-compose.dev.yml up -d
- Check services:
docker compose --env-file infra/.env -f infra/docker-compose.dev.yml ps
curl -I -H 'Host: auth.local.nodedc' http://127.0.0.1/
curl -I -H 'Host: launcher.local.nodedc' http://127.0.0.1/
curl -I -H 'Host: task.local.nodedc' http://127.0.0.1/
curl http://127.0.0.1:18103/healthz
Generated Authentik bootstrap credentials are stored only in infra/.env.
Map Gateway и offline TileCache
map-gateway добавлен как общий платформенный сервис на 127.0.0.1:18103. Его mutable live-cache монтируется как внешний named Docker volume nodedc-platform_map-live-tile-cache; offline snapshot — как nodedc-platform_map-offline-snapshot. Они не пишутся в platform/, не попадают в Git и не включаются в Docker image.
Оба тома намеренно объявлены external: docker compose down -v не должен уничтожать уже записанные тайлы. На чистой машине они создаются один раз до первого запуска:
docker volume create nodedc-platform_map-live-tile-cache
docker volume create nodedc-platform_map-offline-snapshot
Очистка кэша — только осознанной командой docker volume rm nodedc-platform_map-live-tile-cache при остановленном Gateway.
Для реального ion terrain/buildings положите CESIUM_ION_TOKEN только в неотслеживаемый infra/.env или deployment secret. Studio получает asset-scoped endpoint token, а master token остаётся внутри Gateway. Детали API, cache modes и production access boundary описаны в services/map-gateway/README.md.
- Bootstrap local Authentik groups and OIDC applications:
NODEDC_BOOTSTRAP_ADMIN_EMAIL=dcctouch@gmail.com infra/scripts/bootstrap-authentik-dev.sh
The script is idempotent. It creates NODE.DC groups, Launcher and Task Manager OAuth2 providers, application tiles, group access bindings and local OIDC client secrets in infra/.env.
Current local status
This stack was verified locally with PLATFORM_PROXY_IMAGE=nodedc/plane-proxy:ru:
auth.local.nodedcreturns302to the Authentik authentication flow through Caddy;launcher.local.nodedcreturns200from the current Vite launcher through Caddy;task.local.nodedcreturns200from the current Plane runtime through Caddy;- Authentik server, Authentik worker and PostgreSQL report healthy in Docker Compose.
- Authentik login via
auth.local.nodedchas been verified manually with the local admin user.
Browser testing still requires /etc/hosts entries on the host machine.
Troubleshooting
If Docker Hub pulls hang on caddy:2-alpine, keep PLATFORM_PROXY_IMAGE=nodedc/plane-proxy:ru on this workstation. If the local Plane proxy image is unavailable on a clean machine, set:
PLATFORM_PROXY_IMAGE=caddy:2-alpine
Current decision
Текущий Plane runtime не переносится в compose платформы до backup и отдельного шага миграции.