4.2 KiB
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
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)
- Dynamic DNS — use DuckDNS, No-IP, or Cloudflare for a domain name
- Port forwarding — forward port
8080to the NextNVR server (and8090if you want LAN guests to have open access) - 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
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
Built with ❤️ and AI in Mindelo, Portugal. 🇵🇹