1f8385e450
--- - 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 ---
22 lines
804 B
Bash
22 lines
804 B
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
mkdir -p /app/data/streams
|
|
mkdir -p /app/data/logs
|
|
mkdir -p /app/data/vnc-tokens
|
|
|
|
find /app/data/streams -name "*.sh" -exec chmod +x {} \;
|
|
|
|
# #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
|