Configuration
Configuration
OpenNVR is built on open standards. Configuration is accomplished using a combination of the web interface or specific files such as server/.env and docker-compose.yml.
📺 Video Tutorials Available
We regularly publish visual setup guides to help you deploy OpenNVR effectively. Watch our official configuration guides below!
[
Click to watch the full Configuration & Setup guide on YouTube.
Setting Up Your Cameras
You must use the OpenNVR UI to map endpoints since NVR routing configurations are dynamic:
- Navigate to the Cameras page in the UI.
- Select Add Camera.
- Name your Camera.
- Paste the
rtsp://,rtmps://, orhttp://stream endpoint from your IP Camera. - In the next section, configure Retention Policies (E.g., “Retain Continuous Recording for 14 Days” or “Retain Events for 30 Days”).
✅ ONVIF Discovery (Auto-Scan): From Live View → Add Camera → Scan, OpenNVR will broadcast ONVIF discovery and list reachable cameras on your network. On Windows/macOS (Bridge mode) auto-discovery is limited; on Linux Host mode it fully enumerates cameras. You can still paste RTSP manually if discovery is blocked by network/firewall rules.
Storage Configurations
Recordings are saved locally via Docker Volumes by default. For production deployments, map a physical drive or a NAS (Network Attached Storage).
In docker-compose.yml under the OpenNVR/MediaMTX services:
volumes:
- /mnt/nvr_storage/recordings:/app/recordings
Modify /mnt/nvr_storage/recordings to point to the block storage of your choice. Ensure the Docker daemon has read/write permissions for that directory.
Securing Your Setup (Certificates)
By default, OpenNVR runs on standard HTTP ports locally. It is required to configure TLS (Transport Layer Security) when exposing the UI publicly.
We provide utility scripts within the byok-test-certs and scripts directories.
Run generate-secrets.sh (or generate-secrets.ps1 on Windows) to dynamically build an internal CA and apply local certificates to your OpenNVR UI and backend streams.
Logs
All logs are emitted via stdout to Docker. You can monitor OpenNVR’s core operations anytime:
docker compose logs -f opennvr-core