This commit is contained in:
2026-05-30 00:15:16 +05:00
parent d3afd698b6
commit 43dee9f796
5 changed files with 58 additions and 2 deletions
+5 -1
View File
@@ -2,7 +2,7 @@ FROM python:3.12-slim
# ffmpeg/ffprobe — движок записи и перекодирования
RUN apt-get update \
&& apt-get install -y --no-install-recommends ffmpeg \
&& apt-get install -y --no-install-recommends ffmpeg openssl \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
@@ -12,6 +12,10 @@ RUN pip install --no-cache-dir -r requirements.txt
COPY backend/app ./app
COPY frontend ./frontend
COPY backend/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
EXPOSE 8090
# entrypoint генерирует self-signed TLS-сертификат при отсутствии, затем запускает CMD/команду
ENTRYPOINT ["/entrypoint.sh"]
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8090"]
+15
View File
@@ -280,3 +280,18 @@ async def delete_camera(cam_id: str, request: Request) -> dict:
await runtime.supervisor.remove_camera(cam_id)
await go2rtc.remove_camera_streams(runtime.config, cam_id)
return {"ok": True}
@router.post("/clear")
async def clear_cameras(request: Request) -> dict:
"""Удаляет ВСЕ камеры: чистит cameras.yaml, останавливает запись и потоки go2rtc.
Архив (nvr.db + файлы .mp4) НЕ трогает — очищается только список камер."""
require_role(request, "admin")
ids = [c.id for c in runtime.config.cameras]
runtime.config.cameras = []
save_config(runtime.config)
for cam_id in ids:
await runtime.supervisor.remove_camera(cam_id)
await go2rtc.remove_camera_streams(runtime.config, cam_id)
return {"ok": True, "removed": len(ids)}
+16
View File
@@ -0,0 +1,16 @@
#!/bin/sh
# Гарантирует наличие self-signed TLS-сертификата перед стартом uvicorn.
# Если cert.pem/key.pem отсутствуют (свежий деплой) — генерирует их;
# иначе использует существующие. Затем запускает переданную команду (CMD).
set -e
CERT_DIR=/app/certs
if [ ! -f "$CERT_DIR/cert.pem" ] || [ ! -f "$CERT_DIR/key.pem" ]; then
echo "[entrypoint] TLS cert not found in $CERT_DIR — generating self-signed (CN=${NVR_TLS_CN:-localhost})"
mkdir -p "$CERT_DIR"
openssl req -x509 -newkey rsa:2048 -nodes \
-keyout "$CERT_DIR/key.pem" -out "$CERT_DIR/cert.pem" \
-days 3650 -subj "/CN=${NVR_TLS_CN:-localhost}"
fi
exec "$@"