Your cameras.
Your storage.
Your rules.
A free, open-source network video recorder that keeps live video and recordings on hardware you control—not in a required cloud account.
- Docker & TrueNAS
- RTSP & ONVIF
- No subscription
A capable NVR without the cloud baggage.
PlainNVR handles the everyday camera workflows you need while leaving ownership of the system—and its data—with you.
Record on your storage
Continuously record or use weekly schedules. Choose segment length and retention per camera, and keep ordinary MP4 files on storage you control.
Low-latency live view
Watch through go2rtc with MSE, HLS, and WebRTC compatibility paths—all behind PlainNVR authentication.
ONVIF discovery & PTZ
Find streams and media profiles, then expose pan, tilt, zoom, presets, and home controls only when the camera supports them.
Playback & export
Browse recording dates and segments, play clips in the browser, download them, or save selected clips from the companion app.
Health that means something
PlainNVR checks for fresh media output—not merely a running process—and restarts stalled recorders or live streams.
Home Assistant ready
Opt in to protected HLS and snapshot endpoints for compatible dashboards and automations—without exposing go2rtc directly.
Start with Docker.
Stay in control.
PlainNVR ships as a self-contained Docker deployment and is also available from the TrueNAS Community catalog.
- 1Choose a host
Any supported Docker host or a TrueNAS system with enough storage for your retention plan.
- 2Start PlainNVR
Clone the repository and launch the Compose stack. Persistent data stays in local directories.
- 3Add an RTSP camera
Test the stream, choose a schedule and retention period, then let PlainNVR record.
$ git clone https://github.com/endless1233214/plainnvr.git
$ cd plainnvr
$ docker compose up --build -d
# Open the local web interface
http://localhost:8787
Your NVR, in your pocket.
The native iPhone and iPad companion connects directly to the PlainNVR server you choose. Watch live video and audio, check recorder health, operate supported PTZ controls, and browse saved clips.
- ✓ Native SwiftUI interface
- ✓ WebRTC with HLS fallback
- ✓ Receive-only camera media
- ✓ No required PlainNVR cloud account
Hardened, documented, and honest about its limits.
Version 0.1.3 limits internal media services, validates origins and input, rate-limits failed authentication, bounds requests and connections, and runs its release container as an unprivileged user. The public audit documents exactly what was—and was not—reviewed.
Put your cameras back on your terms.
Free and open source. Bring the cameras and storage you already own.