Files
Kralot 1a164f9138 Corrige VNC remoto: proxy via Next.js e fix de hidratação SSR
---

- Adicionado docker/server.mjs, entry point customizado que monkey-patcha http.createServer antes do Next.js standalone subir, injetando handler de upgrade para fazer pipe TCP de WebSocket (ws://host:3000/websockify?token=...) direto para localhost:6080;
- Adicionado src/app/api/novnc/[...path]/route.ts, proxy HTTP dos assets estáticos do noVNC (vnc.html, JS, CSS) para localhost:6080, seguindo o mesmo padrão do proxy HLS;
- Corrigido bug de hidratação SSR em src/app/vnc/[id]/page.tsx: URL do iframe agora é computada apenas client-side via useEffect/useState, usando path relativo /api/novnc/ em vez de http://host:6080/;
- Atualizado config/supervisord.conf para iniciar Next.js com node /opt/server.mjs;
- Atualizado docker/Dockerfile para copiar docker/server.mjs para /opt/server.mjs;

---
2026-04-27 09:19:51 -03:00

54 lines
1.7 KiB
Plaintext

[supervisord]
nodaemon=true
logfile=/app/data/logs/supervisord.log
logfile_maxbytes=10MB
logfile_backups=3
pidfile=/tmp/supervisord.pid
[unix_http_server]
file=/tmp/supervisor.sock
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock
[rpcinterface:supervisor]
supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface
# ── Serviços base ────────────────────────────────────────────────────────────
[program:mediamtx]
command=/usr/local/bin/mediamtx /etc/mediamtx.yml
autorestart=true
priority=1
stdout_logfile=/app/data/logs/mediamtx.log
stderr_logfile=/app/data/logs/mediamtx.log
[program:nextjs]
directory=/app
command=node /opt/server.mjs
environment=PORT=3000,HOSTNAME=0.0.0.0,DATA_DIR=/app/data
autorestart=true
priority=2
stdout_logfile=/app/data/logs/nextjs.log
stderr_logfile=/app/data/logs/nextjs.log
# ── Streams dinâmicas ────────────────────────────────────────────────────────
# Cada stream gera /app/data/streams/{id}/stream.conf
# O supervisord inclui todos automaticamente
[program:novnc]
command=websockify --web /usr/share/novnc --target-config /app/data/vnc-tokens 6080
autorestart=true
priority=3
stdout_logfile=/app/data/logs/novnc.log
stderr_logfile=/app/data/logs/novnc.log
[program:restore-streams]
command=/opt/scripts/restore-streams.sh
autorestart=false
priority=4
stdout_logfile=/app/data/logs/restore.log
stderr_logfile=/app/data/logs/restore.log
[include]
files = /app/data/streams/*/stream.conf