13f6d1452198410fce40033e1397c5abdb7af00e
The dashboard sees containers Maestro did not create (each repo dev debug compose), and treating them as installs made start/uninstall/config act on a project file that never created them. Mark them external, refuse start/update/uninstall with a message pointing at their own compose project, and let stop work at the container level. Inject runtime env (config-signing public key, plaintext shared-DB DSN) on the managed start path, and keep the external flag a property of the service so a debug sibling cannot flip a managed service.
Maestro
Dcntrlized project coordinator service
Access & transport
The dashboard ships session cookies (instance-owner gate), so the deployment
default is loopback-only: docker-compose.yaml binds
127.0.0.1:8080:8080, making the listener unreachable from the LAN unless you
deliberately opt out. Maestro itself stays plaintext HTTP; TLS terminates in a
reverse proxy (D6 — no TLS machinery inside the process).
Single host
Reach the UI over SSH from your workstation:
ssh -L 8080:127.0.0.1:8080 <host>
# then open http://localhost:8080
Reverse proxy (LAN / public)
Put Caddy, Traefik or nginx in front of http://127.0.0.1:8080 and terminate
TLS there:
maestro.example.org {
reverse_proxy 127.0.0.1:8080
}
- WebSocket: the UI uses
/api/ws. Caddy and Traefik proxy upgrades automatically; nginx needs explicit headers:location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } - Cookies behind the proxy: set
COOKIE_SECURE=truein Maestro's environment so both session cookies (maestro_access/maestro_refresh) are markedSecure. - Host header: mutating requests carry an Origin/Referer CSRF check that
compares hosts. A proxy that preserves
Hostworks unchanged; if you rewrite the host, keep forwardingX-Forwarded-*and serve the UI on the same host you proxy to.
Languages
Go
63.9%
TypeScript
32.3%
CSS
3.3%
HTML
0.3%
Dockerfile
0.2%