deeily fa730238d0 Release dvr_admin v1.6
Переведено скачивание клипов на Hikvision SDK (PlayBackByTime_V40 +
data callback) — точное время по часам DVR без seek-смещения.
Исправлена загрузка SDK-библиотек через self-restart с LD_LIBRARY_PATH.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 12:26:38 +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
docker build -f dvr_admin_docker/Dockerfile -t dvr_admin:latest .
docker save dvr_admin:latest | gzip > dvr_admin_docker/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