Migrate to Chromium, unified VNC, thumbnails, autologin CDP detection
--- - Migrado base Docker de ubuntu:22.04 + Google Chrome para debian:bookworm-slim + Chromium - Dockerfile refatorado com multi-stage build (node:22-alpine builder + debian runtime) e single RUN layer para imagem menor - VNC unificado: removido novnc por stream, substituído por websockify global na porta 6080 com token-based routing - Implementado sistema de thumbnails por stream via ffmpeg (captura do HLS) com endpoint GET/POST e atualização no card - Autologin reescrito com detecção via Chrome DevTools Protocol: pula credenciais se já autenticado - Adicionado padrão desiredState (running/stopped) persistido no JSON, restaurado via restore-streams.sh ao reiniciar container - UI traduzida para inglês, formulário reorganizado com tooltips, seção avançada colapsável e GOP automático - Player simplificado: modos HLS e HTML unificados, removido modo m3u8 separado - Adicionado campo threads no ffmpeg; suporte a seccomp:unconfined no docker-compose ---
This commit is contained in:
+13
-5
@@ -1,13 +1,21 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Garante estrutura de dados persistente
|
||||
mkdir -p /app/data/streams
|
||||
mkdir -p /app/data/logs
|
||||
mkdir -p /app/data/vnc-tokens
|
||||
|
||||
# Restaura streams que existiam antes de um restart
|
||||
# O supervisord já vai incluir os stream.conf via [include]
|
||||
# Garante que os scripts têm permissão de execução
|
||||
find /app/data/streams -name "*.sh" -exec chmod +x {} \;
|
||||
|
||||
exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
|
||||
# #19 — restaura streams para o desiredState após restart do container
|
||||
NODE_PATH=/app/node_modules node -e "
|
||||
const fs = require('fs');
|
||||
const { execSync } = require('child_process');
|
||||
const streamsFile = '/app/data/streams.json';
|
||||
if (!fs.existsSync(streamsFile)) process.exit(0);
|
||||
const streams = JSON.parse(fs.readFileSync(streamsFile, 'utf-8'));
|
||||
// Apenas aguarda o supervisord estar pronto, o restore ocorre via script separado
|
||||
fs.writeFileSync('/app/data/.pending-restore', JSON.stringify(streams.map(s => ({ id: s.id, desiredState: s.desiredState }))));
|
||||
" 2>/dev/null || true
|
||||
|
||||
exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
|
||||
|
||||
Reference in New Issue
Block a user