- web: all URLs relative (imports ./web/..., fetches assets/...) so the app serves at / locally and under /scenegod/ behind nginx; esc() on dock innerHTML interpolations (ship-check XSS class) - server: capped_body on every POST (scenes 5MB, frames 25MB, meta/director 256KB-1MB), render begin sanity (fps<=60, dims<=4096, frame idx<=20000) - deploy/: Dockerfile (slim+ffmpeg), compose (project 'scenegod' — avoids the shared-'deploy'-project orphan trap with meshgod), nginx location (suite basic-auth), deploy.sh (rsync model, meshgod-style) - live: digalot.fyi/scenegod/ -> 401 unauthed, app healthy on dealgod_default Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
28 lines
1.2 KiB
YAML
28 lines
1.2 KiB
YAML
# Add scenegod to the dealgod stack (same pattern as meshgod). Deploy from a dev Mac:
|
|
# ./deploy/deploy.sh (rsync → VPS /opt/scenegod, compose build on the box)
|
|
# nginx proxies digalot.fyi/scenegod/ → scenegod:8020 behind the suite basic-auth.
|
|
name: scenegod # explicit — both meshgod+scenegod compose from dirs named "deploy";
|
|
# without this they share one project and see each other as orphans
|
|
services:
|
|
scenegod:
|
|
build:
|
|
context: ..
|
|
dockerfile: deploy/Dockerfile
|
|
container_name: scenegod
|
|
restart: unless-stopped
|
|
environment:
|
|
- SCENEGOD_ASSETS=/app/assets # mounted volume — synced from the Macs
|
|
- SCENEGOD_SCENES=/app/scenes
|
|
- SCENEGOD_RENDERS=/app/renders
|
|
# deliberately UNSET on the VPS (each 503s cleanly / hides its UI):
|
|
# SCENEGOD_LLM_URL / SCENEGOD_LLM_MODEL (tailnet Ollama — ultra-side feature)
|
|
# SCENEGOD_MB (MODELBEAST proxy — NEVER on the VPS)
|
|
volumes:
|
|
- /opt/scenegod-data/assets:/app/assets
|
|
- /opt/scenegod-data/scenes:/app/scenes
|
|
- /opt/scenegod-data/renders:/app/renders
|
|
networks: [dealgod_default]
|
|
networks:
|
|
dealgod_default:
|
|
external: true
|