Documentation

Cameras & Retention

Cameras is the fleet-management table at /cameras, under NVR → Cameras in the sidebar. It lists every camera with its identity, stream health, and recording state, and is where you add, edit, and delete cameras. Viewing the table requires the cameras.view permission; adding, editing, deleting, recording, and bulk actions all require cameras.manage. The Owner ID column is superuser-only.

Cameras table

What you can do here

  • Browse, search, and paginate the camera fleet.
  • Add a camera (Discover or Manual) and Edit its full configuration.
  • Start/Stop recording and jump to View Live for provisioned cameras.
  • Delete a camera, or select several for bulk delete / bulk permission assignment.
  • Configure recording retention (in Settings).

The cameras table

Each row shows these columns:

Column Shows
(checkbox) Select the row for bulk actions
Name Camera name
IP IP address
Port RTSP port
Manufacturer / Model / Serial # / Firmware ONVIF device identity (back-filled when known)
Status provisioned, unknown, or another provisioning state
Stream Status ✓ Ready, ⚠ Disconnected, ✗ Error, — Not configured, or Disconnected when the Media Server is down
Recording 🔴 Recording or ⚫ Off
Owner ID Owning user’s ID (superuser only)
Active Yes / No
Actions Per-row buttons (below)

Row actions

  • Edit (pencil) — open the Edit Camera form. (requires cameras.manage)
  • Start / Stop Recording — toggle recording; shown only for cameras that are provisioned to the Media Server. (requires cameras.manage)
  • View Live — open the camera in Live View; shown only for provisioned cameras.
  • Delete (trash) — remove the camera after a confirmation prompt. (requires cameras.manage)

Search, filter & pagination

  • Search name or IP — type in the search box to filter.
  • Active only — a checkbox that limits the list to active cameras (on by default).
  • Page size — choose 10/page, 20/page, or 50/page.
  • Use Prev / Next to page through results.

Add a camera

Click Add Camera (top-right, requires cameras.manage) to open the shared Add New Camera dialog with its Discover and Manual tabs. The dialog and its fields are documented on the Live View page.

Edit a camera

Click the Edit (pencil) action on a row to open Edit Camera: <name>.

Fields

Field Required Example Notes
Name Front Door Display name
IP Address 192.168.1.100 Camera IP
Port 554 RTSP port; defaults to 554 (1–65535)
RTSP URL rtsp://192.168.1.100:554/stream1 Main stream; has a Scan QR button to read a URL from the OpenNVR Cam app
Substream URL Optional low-res feed for the camera agent’s live view
Username admin Camera login
Password Leave blank to keep existing
Location Lobby Free-text location label
VLAN Free-text VLAN label
Description Free-text notes
Active (checked) Uncheck to deactivate the camera

Click Update to save (the button shows Updating… while it saves), or Cancel to discard.

Cameras table with a camera row populated

Bulk actions

Tick one or more row checkboxes (or the header checkbox to select the page) to reveal bulk actions (requires cameras.manage):

  • Delete Selected (N) — delete every selected camera after confirmation.
  • Assign Permissions — opens a panel to grant selected cameras to a user. Search a user by username or email, tick can_view and/or can_manage, then click Apply to N selected.

Recording retention

Retention isn’t set on the Cameras table — it’s a global policy under Settings → Recording (Recording Settings), which is superuser-only. It has two sections:

Storage Location

  • Recording Path — where recordings are stored. Optional; if empty, a default is auto-detected (Docker: /app/recordings, Local: ./recordings).

Retention Policy

Setting Default Notes
Retention Days 30 Recordings older than this are deleted automatically (0–3650). Set 0 to keep all recordings
Protect Flagged Recordings (on) When enabled, flagged/bookmarked recordings are never auto-deleted
Minimum Free Space (GB) (empty) If free space drops below this, the oldest recordings are deleted until space is freed. Leave empty to disable

Save each section with its own Save Storage Settings / Save Retention Settings button.

[!WARNING] Setting Retention Days to 0 keeps recordings forever. Pair long retention with a sensible Minimum Free Space (GB) threshold so the disk can’t fill completely.

📸 Screenshots to capture

This page reuses cameratable.jpeg and cameratable with camerar.jpeg. New shots to add under opennvr-site/public/screenshots/:

  • cameras-edit-form.png — the Edit Camera dialog showing all fields (Name, IP, Port, RTSP URL, Substream URL, Username, Password, Location, VLAN, Description, Active).
  • cameras-bulk-assign.png — the Assign Permissions panel with a user selected and can_view / can_manage checkboxes.
  • cameras-retention-settings.png — the Recording Settings page showing Storage Location and Retention Policy.