Refatora infraestrutura de dados, build e provisionamento de streams
---
- Movido streams.json para /app/data/streams/streams.json; volume do compose mapeado especificamente em /app/data/streams, deixando logs fora do volume persistido;
- Adicionado scripts/reprovision.mjs que regenera stream.conf e tokens VNC a partir dos templates da imagem no startup, garantindo que updates de container não exijam recriar o volume;
- Removido autologin.template.sh por-stream; substituído por scripts/autologin.sh global na imagem, com variáveis passadas via environment= no supervisor conf (com valores entre aspas
para compatibilidade com valores vazios);
- Logs de processos por stream movidos de /app/data/streams/{id}/ para /app/data/logs/{id}/;
- Adicionada função recreateStream em supervisor.ts e rota POST /api/streams/[id]/recreate; botão "Recreate" adicionado ao menu do card para limpar chrome-profile e re-provisionar;
- Adicionado auto-disparo de captureThumb no GET /api/streams/[id]/thumb quando thumb.jpg não existe e nenhuma captura está em andamento;
- Dockerfile: adicionado --mount=type=cache para /var/cache/apt e /var/lib/apt/lists (não /var/lib/apt inteiro para evitar corrupção de estado); removido --no-cache do Makefile; remoção
de pacotes limitada a curl gnupg para evitar cascata em dependências do chromium/novnc;
- Migração automática de streams.json do caminho antigo adicionada ao entrypoint.sh;
---
This commit is contained in:
@@ -5,8 +5,8 @@
|
||||
command=Xvfb {{DISPLAY}} -screen 0 {{RESOLUTION}}x24 -ac
|
||||
autorestart=true
|
||||
priority=10
|
||||
stdout_logfile=/app/data/streams/{{STREAM_ID}}/xvfb.log
|
||||
stderr_logfile=/app/data/streams/{{STREAM_ID}}/xvfb.log
|
||||
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 \
|
||||
@@ -34,25 +34,25 @@ environment=DISPLAY={{DISPLAY}}
|
||||
autorestart=true
|
||||
priority=20
|
||||
startsecs=5
|
||||
stdout_logfile=/app/data/streams/{{STREAM_ID}}/chromium.log
|
||||
stderr_logfile=/app/data/streams/{{STREAM_ID}}/chromium.log
|
||||
stdout_logfile=/app/data/logs/{{STREAM_ID}}/chromium.log
|
||||
stderr_logfile=/app/data/logs/{{STREAM_ID}}/chromium.log
|
||||
|
||||
[program:autologin-{{STREAM_ID}}]
|
||||
command=/app/data/streams/{{STREAM_ID}}/autologin.sh
|
||||
command=/opt/scripts/autologin.sh
|
||||
autorestart=false
|
||||
priority=30
|
||||
startsecs=0
|
||||
environment=DISPLAY={{DISPLAY}}
|
||||
stdout_logfile=/app/data/streams/{{STREAM_ID}}/autologin.log
|
||||
stderr_logfile=/app/data/streams/{{STREAM_ID}}/autologin.log
|
||||
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/streams/{{STREAM_ID}}/vnc.log
|
||||
stderr_logfile=/app/data/streams/{{STREAM_ID}}/vnc.log
|
||||
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 \
|
||||
@@ -85,5 +85,5 @@ command=bash -c "sleep {{STREAM_DELAY}} && ffmpeg \
|
||||
autorestart=true
|
||||
startretries=999
|
||||
priority=60
|
||||
stdout_logfile=/app/data/streams/{{STREAM_ID}}/ffmpeg.log
|
||||
stderr_logfile=/app/data/streams/{{STREAM_ID}}/ffmpeg.log
|
||||
stdout_logfile=/app/data/logs/{{STREAM_ID}}/ffmpeg.log
|
||||
stderr_logfile=/app/data/logs/{{STREAM_ID}}/ffmpeg.log
|
||||
|
||||
Reference in New Issue
Block a user