- 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>
16 lines
718 B
Plaintext
16 lines
718 B
Plaintext
# Lives in /opt/dealgod/nginx/dealgod-servers.conf inside the digalot.fyi server
|
|
# block (dealgod-nginx container). Same suite login as meshgod.
|
|
location = /scenegod { return 301 /scenegod/; }
|
|
location /scenegod/ {
|
|
auth_basic "meshgod - mates only";
|
|
auth_basic_user_file /opt/dealgod/le/meshgod.htpasswd;
|
|
proxy_pass http://scenegod:8020/;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_set_header X-Remote-User $remote_user;
|
|
client_max_body_size 30m; # render frames <=25MB + slack
|
|
proxy_read_timeout 300s; # encode status polling
|
|
}
|