deeily 3da61f09ca Release dvr_admin v1.5
- Archive player: loading spinner on stream start/seek/timeline click
- Archive player: live clock updates every second during playback
- Timeline: removed segment overlays, hourly labels (0–24)
- Clip download: split time inputs into separate HH/MM/SS fields
- Clip download: cancel button aborts fetch and kills ffmpeg on server
- Security: CSRF protection, HttpOnly/SameSite cookies, XSS escaping,
  parameter validation, access control on ping endpoint
- Dashboard: user-specific DVR cards, live clock and version widgets
- Preview channels resume after closing fullscreen player
- Docker: moved SDK libs into dvr_admin/, cleaned up dvr_admin_docker/
2026-04-06 22:46:19 +03:00

2.9 KiB
Raw Blame History

DVR Admin — сборка и деплой Docker-контейнера

Первый запуск (локально)

cd /home/deeily/git/ISAPI
docker compose -f dvr_admin_docker/docker-compose.yml up -d --build

Приложение будет доступно на http://localhost:5001
Логин по умолчанию: admin / admin
БД и ключ шифрования создаются автоматически в /home/deeily/docker/dvr_admin/


Обновление (пересборка образа)

cd /home/deeily/git/ISAPI/dvr_admin_docker

# Пересобрать и перезапустить (данные сохраняются)
docker compose up -d --build

Перенос на другой сервер

1. Собрать и экспортировать образ

cd /home/deeily/git/ISAPI/dvr_admin_docker
docker build -t dvr_admin:latest .
docker save dvr_admin:latest | gzip > dvr_admin.tar.gz

2. Скопировать на сервер

scp dvr_admin.tar.gz user@server:/opt/dvr_admin/

Также скопировать docker-compose.yml, заменив build: . на image: dvr_admin:latest:

services:
  dvr_admin:
    image: dvr_admin:latest        # вместо build: .
    container_name: dvr_admin
    restart: unless-stopped
    ports:
      - "5001:8000"
    volumes:
      - /opt/dvr_admin/data:/data  # папка для БД на сервере
    environment:
      - SECRET_KEY=<сгенерировать>
      - DATA_DIR=/data
      - FERNET_KEY=<сгенерировать>

3. Запустить на сервере

docker load < dvr_admin.tar.gz
docker compose up -d

Обновление на удалённом сервере

# На локальной машине — пересобрать и экспортировать
# Запускать из корня проекта — app.py и lib/ берутся из dvr_admin/ автоматически
cd /home/deeily/git/ISAPI
# --no-cache обязателен, иначе Docker использует старый кэш и упакует старый app.py
docker build --no-cache -f dvr_admin_docker/Dockerfile -t dvr_admin:latest .
docker save dvr_admin:latest | gzip > dvr_admin_docker/dvr_admin.tar.gz
scp dvr_admin.tar.gz user@server:/opt/dvr_admin/

# На сервере — загрузить новый образ и перезапустить (данные сохраняются)
docker stop dvr_admin && docker rm dvr_admin
docker load < dvr_admin.tar.gz
docker compose up -d

Генерация ключей

# SECRET_KEY
python3 -c "import secrets; print(secrets.token_hex(32))"

# FERNET_KEY
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

Просмотр логов

docker logs dvr_admin -f