diff --git a/.env.synology.example b/.env.synology.example new file mode 100644 index 0000000..b4bd717 --- /dev/null +++ b/.env.synology.example @@ -0,0 +1,14 @@ +# Synology/NODE.DC production BIM Viewer environment. +# Copy to the live BIM deployment env and fill secrets from platform .env.synology. + +NODEDC_BIM_HOST_PORT=18100 +NODEDC_BIM_SERVICE_SLUG=bim-viewer +NODEDC_BIM_AUTH_REQUIRED=1 +NODEDC_BIM_PUBLIC_URL=https://bim.nodedc.tech +NODEDC_BIM_ALLOWED_ORIGINS=https://hub.nodedc.ru,https://ops.nodedc.ru,https://bim.nodedc.tech +NODEDC_BIM_COOKIE_SECURE=1 +NODEDC_BIM_COOKIE_SAMESITE=None + +NODEDC_LAUNCHER_BASE_URL=https://hub.nodedc.ru +NODEDC_LAUNCHER_INTERNAL_URL=https://hub.nodedc.ru +NODEDC_INTERNAL_ACCESS_TOKEN=replace-with-platform-internal-token diff --git a/docker-compose.beam.yml b/docker-compose.beam.yml index e79edbb..86a71a2 100644 --- a/docker-compose.beam.yml +++ b/docker-compose.beam.yml @@ -6,14 +6,20 @@ services: restart: unless-stopped environment: PORT: "8080" + NODEDC_BIM_SERVICE_SLUG: "${NODEDC_BIM_SERVICE_SLUG:-bim-viewer}" NODEDC_BIM_AUTH_REQUIRED: "${NODEDC_BIM_AUTH_REQUIRED:-0}" NODEDC_BIM_PUBLIC_URL: "${NODEDC_BIM_PUBLIC_URL:-http://localhost:8080}" + NODEDC_BIM_DATA_ROOT: "${NODEDC_BIM_DATA_ROOT:-}" + NODEDC_BIM_SESSION_COOKIE: "${NODEDC_BIM_SESSION_COOKIE:-nodedc_bim_session}" + NODEDC_BIM_SESSION_TTL_MS: "${NODEDC_BIM_SESSION_TTL_MS:-43200000}" + NODEDC_BIM_COOKIE_SECURE: "${NODEDC_BIM_COOKIE_SECURE:-0}" + NODEDC_BIM_COOKIE_SAMESITE: "${NODEDC_BIM_COOKIE_SAMESITE:-}" NODEDC_LAUNCHER_BASE_URL: "${NODEDC_LAUNCHER_BASE_URL:-http://localhost:5173}" NODEDC_LAUNCHER_INTERNAL_URL: "${NODEDC_LAUNCHER_INTERNAL_URL:-http://host.docker.internal:5173}" NODEDC_INTERNAL_ACCESS_TOKEN: "${NODEDC_INTERNAL_ACCESS_TOKEN:-}" NODEDC_BIM_ALLOWED_ORIGINS: "${NODEDC_BIM_ALLOWED_ORIGINS:-http://localhost:5173,http://localhost:8090}" ports: - - "8080:8080" + - "${NODEDC_BIM_HOST_PORT:-8080}:8080" volumes: - ./:/beam diff --git a/server/README.md b/server/README.md index e4fc1e3..919a760 100644 --- a/server/README.md +++ b/server/README.md @@ -28,14 +28,22 @@ API: - `docker compose -f docker-compose.beam.yml up ndc-beam-viewer` - `docker compose -f docker-compose.beam.yml up nodedc-bim-converter` +Synology Beam compose: +- скопировать `.env.synology.example` в `.env` рядом с `docker-compose.beam.yml`; +- заполнить `NODEDC_INTERNAL_ACCESS_TOKEN` тем же значением, что и в platform `.env.synology`; +- запустить `docker compose -f docker-compose.beam.yml up -d ndc-beam-viewer nodedc-bim-converter`. + Поле `ownerId` пока всегда `null`, но оставлено для будущих пользователей/шаринга. NODE.DC auth/share: - `NODEDC_BIM_AUTH_REQUIRED=1` включает вход через Launcher handoff. +- `NODEDC_BIM_SERVICE_SLUG=bim-viewer` должен совпадать со slug сервиса в Launcher. - `NODEDC_INTERNAL_ACCESS_TOKEN` должен совпадать с Launcher internal token. - `NODEDC_LAUNCHER_BASE_URL` — публичный Launcher URL для редиректа на login/launch. - `NODEDC_LAUNCHER_INTERNAL_URL` — внутренний URL Launcher для `/api/internal/handoff/consume`. -- `NODEDC_BIM_PUBLIC_URL` — публичный URL viewer-а для share-ссылок, на проде `https://bim.nodedc.ru`. +- `NODEDC_BIM_PUBLIC_URL` — публичный URL viewer-а для share-ссылок, на проде `https://bim.nodedc.tech`. +- `NODEDC_BIM_HOST_PORT` — host-port для `docker-compose.beam.yml`; на Synology BIM публикуется как `18100:8080`. +- `NODEDC_BIM_COOKIE_SAMESITE=None` и `NODEDC_BIM_COOKIE_SECURE=1` нужны для BIM в iframe на `ops.nodedc.ru`. - `NODEDC_BIM_DATA_ROOT` — опциональный корень файлового storage вместо `server/data`. - `POST /api/shares` создаёт публичную read-only ссылку на upload artifact; `/share/` открывает viewer в guest mode. - `GET /api/models` возвращает личные активные модели текущего пользователя.