Files
decap-stream/scripts/stream.template.conf
T
Kralot ca7299c646 Adiciona autenticação opcional, VNC integrado, GPU por stream, proxy HLS e melhorias de segurança
---

- Adicionado sistema de autenticação opcional via AUTH_USER/AUTH_PASS: middleware Next.js, página de login, cookie rolling de
30 dias, timingSafeEqual para comparação segura de credenciais;
- Adicionado proxy HLS em /api/hls/[...path] que roteia para localhost:8888 internamente; player e player-static atualizados
para usar a rota proxy;
- Adicionada página /vnc/[id] integrada na UI (iframe + botão Back com auto-hide), substituindo abertura em nova aba;
- Adicionado campo gpu: boolean por stream; controlado via {{GPU_FLAGS}} no template do Chromium e no reprovision.mjs;
- Ajustado delay da primeira thumbnail para stream.delay + 60 para garantir conclusão do autologin antes da captura;
- Atualizado docker-compose.yml: porta 6080 vinculada a localhost, portas 1935 e 8888 comentadas por padrão;
- Traduzidos todos os comentários de código do português para o inglês;
- Adicionado crédito riguetto.dev no header com underline no hover;
- README e CLAUDE.md atualizados com arquitetura, portas e features corretas;

---
2026-04-26 03:09:57 -03:00

89 lines
2.9 KiB
Plaintext

# Gerado automaticamente pela API — não editar manualmente
# Stream: {{STREAM_ID}}
[program:xvfb-{{STREAM_ID}}]
command=Xvfb {{DISPLAY}} -screen 0 {{RESOLUTION}}x24 -ac
autorestart=true
priority=10
stdout_logfile=/app/data/logs/{{STREAM_ID}}/xvfb.log
stderr_logfile=/app/data/logs/{{STREAM_ID}}/xvfb.log
[program:chromium-{{STREAM_ID}}]
command=bash -c "rm -rf \
/app/data/streams/{{STREAM_ID}}/chrome-profile/Singleton* \
/app/data/streams/{{STREAM_ID}}/chrome-profile/.org.chromium.* \
'/app/data/streams/{{STREAM_ID}}/chrome-profile/Default/Crash Reports' \
/app/data/streams/{{STREAM_ID}}/chrome-profile/Default/.org.chromium.* \
&& chromium \
--no-sandbox \
--test-type \
{{GPU_FLAGS}} --window-size={{CHROME_SIZE}} \
--start-fullscreen \
--user-data-dir=/app/data/streams/{{STREAM_ID}}/chrome-profile \
--no-first-run \
--disable-extensions \
--disable-background-networking \
--disable-sync \
--disable-background-timer-throttling \
--remote-debugging-port={{DEBUG_PORT}} \
--password-store=basic \
--disable-features=PasswordManagerRedesign,PasswordSuggestions \
'{{STREAM_URL}}'"
environment=DISPLAY={{DISPLAY}}
autorestart=true
priority=20
startsecs=5
stdout_logfile=/app/data/logs/{{STREAM_ID}}/chromium.log
stderr_logfile=/app/data/logs/{{STREAM_ID}}/chromium.log
[program:autologin-{{STREAM_ID}}]
command=/opt/scripts/autologin.sh
autorestart=false
priority=30
startsecs=0
environment=DISPLAY="{{DISPLAY}}",LOGIN_USER="{{USER}}",LOGIN_PASS="{{PASS}}",DEBUG_PORT="{{DEBUG_PORT}}",STREAM_DELAY="{{STREAM_DELAY}}"
stdout_logfile=/app/data/logs/{{STREAM_ID}}/autologin.log
stderr_logfile=/app/data/logs/{{STREAM_ID}}/autologin.log
[program:x11vnc-{{STREAM_ID}}]
environment=DISPLAY={{DISPLAY}}
command=bash -c "while [ ! -e /tmp/.X11-unix/X$(echo $DISPLAY | cut -d: -f2 | cut -d. -f1) ]; do sleep 0.2; done; exec x11vnc -nopw -listen 0.0.0.0 -rfbport {{VNC_PORT}} -xkb -forever -shared -threads"
autorestart=true
priority=40
stdout_logfile=/app/data/logs/{{STREAM_ID}}/vnc.log
stderr_logfile=/app/data/logs/{{STREAM_ID}}/vnc.log
[program:ffmpeg-{{STREAM_ID}}]
command=bash -c "sleep {{STREAM_DELAY}} && ffmpeg \
-loglevel warning \
-threads {{THREADS}} \
-f x11grab \
-video_size {{RESOLUTION}} \
-framerate {{FPS}} \
-i {{DISPLAY}} \
-f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 \
-shortest \
-c:v libx264 \
-preset {{PRESET}} \
-tune {{TUNE}} \
-profile:v baseline \
-level 3.1 \
-pix_fmt yuv420p \
-g {{GOP}} \
-keyint_min {{GOP}} \
-sc_threshold 0 \
-b:v {{BITRATE}} \
-maxrate {{BITRATE}} \
-bufsize {{BUFSIZE}} \
-c:a aac \
-b:a 128k \
-ar 44100 \
-ac 2 \
-vsync cfr \
-f flv rtmp://localhost:1935/live/{{STREAM_ID}}"
autorestart=true
startretries=999
priority=60
stdout_logfile=/app/data/logs/{{STREAM_ID}}/ffmpeg.log
stderr_logfile=/app/data/logs/{{STREAM_ID}}/ffmpeg.log