dvr_admin/dvr_admin_docker/entrypoint.sh
deeily 5415daefd5 dvr_admin: Fernet encrypt stream_key, Docker wine support, cleanup fixes
Security / шифрование:
- stream_key (128-byte KDF-derived key для encrypted H.265+) теперь
  шифруется Fernet как и пароль DVR. Добавлены _enc_stream_key /
  _dec_stream_key, расшифровка в _dvr_row, автомиграция plaintext→Fernet
  при старте для существующих записей
- dvrs_add / dvrs_edit шифруют stream_key на INSERT/UPDATE

Resource cleanup:
- release(buf): kill() теперь вне buf.lock + wait(timeout=2) чтобы
  не оставлять зомби-процессов (wine/ffmpeg) после disconnect
- view_playback: при смене ключа старый buffer также wait(timeout=2)

Docker:
- Dockerfile: установка wine + wine32 (i386) + xvfb для PlayCtrl.dll
- Предварительная инициализация WINEPREFIX=/app/.wine во время build
  (избегаем задержек первого wineboot в runtime)
- entrypoint.sh запускает Xvfb на :1, затем gunicorn
- COPY dvr_admin/wine_playm4/ в образ (директория gitignore'д —
  нужно положить вручную перед docker build, см. DEPLOY.md)
- DEPLOY.md: добавлена секция «Требования для сборки» с пояснением
  про wine_playm4/ и варианты без него

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 00:47:19 +03:00

16 lines
463 B
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Запускает Xvfb на DISPLAY :1 для wine PlayCtrl.dll, потом gunicorn.
set -e
# Xvfb в фоне. -nolisten tcp чтобы не ловили извне.
Xvfb :1 -screen 0 640x480x8 -nolisten tcp &
XVFB_PID=$!
# Xvfb обычно поднимается за <1с
sleep 1
trap "kill $XVFB_PID 2>/dev/null || true" EXIT
exec gunicorn --bind 0.0.0.0:8000 --workers 1 --threads 16 \
--timeout 3600 --worker-class gthread app:app