NextNVR/README.md

116 lines
4.2 KiB
Markdown
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.

# NextNVR
A simple, single-binary IP camera recorder. Think of it as a dashcam for your property.
---
## Why NextNVR?
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.
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.
---
## Quick Install
```bash
curl -sSL https://git.lohmar.co.uk/cclohmar/NextNVR/raw/branch/main/setup.sh | bash
```
That's it. The script installs everything and starts NextNVR automatically.
---
## Supported Systems
| Distro | Package Manager | Architecture |
|---|---|---|
| Debian 12+ / Ubuntu 22.04+ | `apt` | amd64, arm64 |
| Fedora 40+ / RHEL 9+ | `dnf` / `yum` | amd64, arm64 |
| Arch Linux | `pacman` | amd64, arm64 |
| Alpine Linux | `apk` | amd64, arm64 |
| Raspberry Pi 5 | any above | arm64 |
---
## What It Does
| Feature | Detail |
|---|---|
| 📹 **Recording** | Up to 8 cameras simultaneously, 5-minute MP4 clips, zero transcoding |
| 💾 **Storage** | Flat per-camera directories, 7-day retention, auto-cleanup |
| 🖥️ **Live Wall** | 4×2 grid with auto-refreshing snapshots. Click for full live stream |
| 🔍 **Playback** | Browse recordings by camera and date with snapshot thumbnails |
| ⚙️ **Setup Wizard** | ONVIF auto-discovery + admin password setup on first run |
| 🔐 **Two-Port Auth** | `:8080` with master login, `:8090` open viewer for LAN guests |
| 🔒 **100% Local** | Everything runs on your hardware. No cloud, no subscriptions, no telemetry |
---
## Authentication
NextNVR runs two HTTP servers:
| Port | Audience | Auth | Access |
|---|---|---|---|
| `8080` | You (admin) | Master login | Live Wall, Playback, Settings |
| `8090` | Guests / LAN | None | Live Wall only |
**First run**: the setup wizard prompts you to set a master username and password. Until you do, both ports are open. Once saved, port 8080 requires login. Port 8090 stays open — ideal for a QR code at a guesthouse: "Watch what we watch."
**Viewer port 8090** can be disabled by setting `viewer.enabled: false` in `config.yaml`.
To reset the master password, edit `/opt/nextnvr/config.yaml` and set `auth.enabled: false`, then restart.
---
## Remote Access (Optional)
1. **Dynamic DNS** — use DuckDNS, No-IP, or Cloudflare for a domain name
2. **Port forwarding** — forward port `8080` to the NextNVR server (and `8090` if you want LAN guests to have open access)
3. For production, put NextNVR behind a reverse proxy (Zoraxy, Nginx) with HTTPS
---
## Roadmap
| Feature | Status |
|---|---|
| Continuous recording (`-c copy`, zero transcoding) | ✅ Done |
| ONVIF auto-discovery + web setup wizard | ✅ Done |
| Live wall with snapshot grid + focus view | ✅ Done |
| Playback browser with date presets | ✅ Done |
| 7-day retention with auto-cleanup | ✅ Done |
| **Camera-triggered recording** (ONVIF motion/person detection events via API) | 🔜 Planned |
| **NAS/SMB storage support** (record to network share) | 🔜 Planned |
| **Multi-platform builds** (Raspberry Pi, ARM SBCs) | 🔜 Planned |
### Not Planned
- ❌ Cloud connectivity of any kind
- ❌ AI/ML object detection (use your camera's built-in detection)
- ❌ Mobile apps (the web UI is responsive and PWA-ready)
---
## Server Commands
```bash
sudo systemctl status nextnvr # is it running?
sudo systemctl restart nextnvr # restart
sudo journalctl -u nextnvr -f # watch logs
```
Config file: `/opt/nextnvr/config.yaml`
Recordings: `/mnt/recordings/`
---
## License
MIT — see [LICENSE](LICENSE)
Built with ❤️ and AI in Mindelo, Portugal. 🇵🇹