feat: deploy_nvr.sh — stops service before rebuild, update instructions

This commit is contained in:
Claus Lohmar 2026-08-06 14:22:49 +01:00
parent 7c7c920f5e
commit aba58cf1a0
2 changed files with 27 additions and 7 deletions

View file

@ -8,7 +8,7 @@ A simple, single-binary IP camera recorder. Think of it as a dashcam for your pr
The open-source NVR landscape is rich with incredible projects — Frigate, Shinobi, ZoneMinder, Blue Iris alternatives — backed by passionate communities. They're powerful. They're feature-packed. But they've also become complex. Docker containers, AI pipelines, multi-service architectures, cloud integrations — for many users, it's too much. The open-source NVR landscape is rich with incredible projects — Frigate, Shinobi, ZoneMinder, Blue Iris alternatives — backed by passionate communities. They're powerful. They're feature-packed. But they've also become complex. Docker containers, AI pipelines, multi-service architectures, cloud integrations — for many users, it's too much.
**NextNVR is different.** It does one thing: continuously record your IP cameras to disk and let you review the footage. No AI, no cloud, no Docker — just a single Go binary you can run on a Raspberry Pi 5, an old thin client, or a VM. Deploy it in 30 seconds with a one-liner. **NextNVR is different.** It does one thing: continuously record your IP cameras to disk and let you review the footage. No AI, no cloud, no Docker — just a single Go binary you can run on a Raspberry Pi 5, an old thin client, or a VM. Deploy in 30 seconds — download, run, done.
This project was built with the help of AI — designed through conversation, refined through iteration, and shaped by the simple principle that surveillance software should be boring. It should just work. This project was built with the help of AI — designed through conversation, refined through iteration, and shaped by the simple principle that surveillance software should be boring. It should just work.
@ -17,15 +17,19 @@ This project was built with the help of AI — designed through conversation, re
## Quick Install ## Quick Install
```bash ```bash
curl -sSL https://git.lohmar.co.uk/cclohmar/NextNVR/raw/branch/main/setup.sh | bash curl -sSLO https://git.lohmar.co.uk/cclohmar/NextNVR/raw/branch/main/deploy_nvr.sh
chmod +x deploy_nvr.sh
./deploy_nvr.sh
``` ```
The script will ask where to store recordings. Press Enter for the default (`~/nvr_data`) or type your own path (e.g. `/mnt/recordings`). The script asks where to store recordings, then installs everything. Press Enter for the default (`~/nvr_data`) or type your own path.
**Want to pre-set the storage path without being asked?** **To update an existing installation** — run the same script again. It stops the service, pulls the latest code, rebuilds, and restarts.
**To pre-set the storage path:**
```bash ```bash
STORAGE_PATH=/mnt/recordings curl -sSL https://...setup.sh | bash STORAGE_PATH=/mnt/recordings ./deploy_nvr.sh
``` ```
--- ---

View file

@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
# NextNVR — Portable One-Line Deployment Script # NextNVR — Deploy & Update Script
# Usage: curl -sSL https://git.lohmar.co.uk/cclohmar/NextNVR/raw/branch/main/setup.sh | bash # Usage: curl -sSLO https://git.lohmar.co.uk/cclohmar/NextNVR/raw/branch/main/deploy_nvr.sh
# chmod +x deploy_nvr.sh && ./deploy_nvr.sh
# #
# Supports: Debian, Ubuntu, Fedora, RHEL, Rocky, Alma, Arch, Alpine # Supports: Debian, Ubuntu, Fedora, RHEL, Rocky, Alma, Arch, Alpine
# Requires: curl, sudo, systemd (or falls back to nohup for non-systemd) # Requires: curl, sudo, systemd (or falls back to nohup for non-systemd)
@ -33,6 +34,21 @@ echo " $(uname -m) / $(uname -s)"
echo "============================================" echo "============================================"
echo "" echo ""
# ── 0. Stop existing service (clean update) ──
if systemctl is-active --quiet "${SERVICE_NAME}" 2>/dev/null; then
log "Stopping existing NextNVR service..."
sudo systemctl stop "${SERVICE_NAME}"
log "Service stopped."
elif pgrep -f "/opt/nextnvr/nextnvr" > /dev/null 2>&1; then
warn "NextNVR is running outside systemd. Stopping..."
sudo pkill -f "/opt/nextnvr/nextnvr" 2>/dev/null || true
sleep 2
fi
# Clean up any lingering processes.
sudo pkill -f "go2rtc" 2>/dev/null || true
sudo pkill -f "ffmpeg.*rec_" 2>/dev/null || true
# ── Check for sudo ── # ── Check for sudo ──
if ! command -v sudo &>/dev/null; then if ! command -v sudo &>/dev/null; then
if [ "$(id -u)" -eq 0 ]; then if [ "$(id -u)" -eq 0 ]; then