Mosaic-NVR

A network video recorder for your IP cameras — it records them around the clock or on a schedule, shows the recordings and what the cameras detected on a timeline in your browser, and serves live and recorded video, encrypted, to Mosaic-CCTV, VLC or FFmpeg.

Download the Raspberry Pi image Mac, Linux & Windows
Raspberry Pi 5 recommended (also Pi 4, Pi 3 and Zero 2 W) · or one binary for macOS, Linux and Windows on x86-64 or ARM64 · Updates from its own settings page
Free for personal use with up to three cameras · Commercial use requires a license

Use at your own risk. Mosaic-NVR is under active development and is provided “as is”, without warranty of any kind. It is not a certified security or surveillance product: don’t rely on it as the only way to keep recordings of anything that matters. Juvex Oy is not liable for any loss or damage arising from its use.

Mosaic-NVR records your cameras’ own video stream as it arrives — no re-encoding, no cloud account, no vendor app — into ordinary MP4 files on drives you choose. Everything is managed from a web page, and everything it serves is encrypted and needs a login.

Recording that keeps going

Each camera records continuously or on a weekly schedule, from its main or sub stream. A stream that isn’t recorded is connected only while someone watches it. After a crash or a power cut, at most about a second is lost, and old recordings are removed by age or when the drives fill up.

Add a camera in seconds

Enter a camera’s address and login and press Auto detect: the NVR asks Foscam and Reolink cameras for their streams, or tries the usual ports and the stream paths of 19 brands. H.264, H.265/HEVC, MJPEG and AAC audio over RTSP or RTSPS.

A timeline in your browser

Browse a day’s recordings on a zoomable timeline, with the motion, people, vehicles and animals the cameras detected, and pictures of the events. Play recordings in the browser and download any stretch as an MP4 clip.

Live and playback for players

Live video and recordings are served over RTSPS to Mosaic-CCTV, VLC or FFmpeg, with seeking, pausing and playback from 1× to 32×. Each app can sign in with its own device token, revoked on its own.

Camera controls and talk

Pan, tilt, zoom, focus, presets, lights, infrared and sound settings, and talk through the camera’s speaker, passed on to Foscam, Reolink and ONVIF cameras — so Mosaic-CCTV controls them through the NVR as it would directly.

Storage you can grow

Record to one or more drives as a pool, move recordings to a second tier as they age, and mirror the important cameras to another drive. On the Raspberry Pi, USB and NVMe drives mount by themselves and a new one can be formatted from the web page.

Secure by default

HTTPS and RTSPS only, with a certificate it makes itself or one you upload. Users are administrators or viewers of chosen cameras, camera passwords are stored encrypted, and repeated failed logins lock an account out for a while.

Updates from its own page

The NVR checks for a new version once a day and installs it from Settings → System. Only releases signed by Juvex are installed, and the version before is kept: if a new one doesn’t start, the previous one is put back by itself.

On a Raspberry Pi

The image is Raspberry Pi OS Lite (64-bit) with Mosaic-NVR installed and started at boot. No keyboard, screen or SSH is needed: the setup is finished in a browser.

  1. Download the image and flash it with Raspberry Pi Imager (Choose OS → Use custom), preferably to an NVMe or USB SSD rather than an SD card.
  2. Connect the network cable and power. The first boot takes a minute or two.
  3. Open https://mosaic-nvr.local:8443/, or the Pi’s IP address on port 8443. The browser warns about the certificate, which the NVR made itself; continue to the page.
  4. Choose the administrator’s password right away — until then anyone on your network who opens the page could. Then plug in a drive for the recordings, add it under Settings → Storage, and add your cameras.

The image also has a firewall, SSH sign-in with keys and Debian’s automatic security updates, each turned on or off from the web page. SHA-256 checksum

On a Mac, Linux or Windows

Mosaic-NVR is one self-contained program: it needs no FFmpeg and no database server. Download the one for your computer:

Linux

x86-64 ARM64

Windows

x64 ARM64

Or install it from a terminal. Each of these downloads the latest release, writes a configuration file that says where the NVR keeps its data, starts it as a service (systemd, launchd or a Windows service) that starts again at boot, and shows the one-time administrator password.

Linux

As a user with sudo. On ARM64, download mosaic-nvr-linux-arm64 instead.

sudo curl -fsSL -o /usr/local/bin/mosaic-nvr https://www.juvex.fi/mosaic-nvr/mosaic-nvr-linux-amd64
sudo chmod 755 /usr/local/bin/mosaic-nvr
sudo mkdir -p /etc/mosaic-nvr
echo '{"data_dir": "/var/lib/mosaic-nvr"}' | sudo tee /etc/mosaic-nvr/mosaic-nvr.json
sudo /usr/local/bin/mosaic-nvr service install -config /etc/mosaic-nvr/mosaic-nvr.json
sudo /usr/local/bin/mosaic-nvr service start
sleep 5; sudo cat /var/lib/mosaic-nvr/initial-admin-password.txt

macOS

In Terminal, as an administrator. On an Intel Mac, download mosaic-nvr-darwin-amd64 instead.

sudo mkdir -p /usr/local/bin "/Library/Application Support/Mosaic-NVR"
sudo curl -fsSL -o /usr/local/bin/mosaic-nvr https://www.juvex.fi/mosaic-nvr/mosaic-nvr-darwin-arm64
sudo chmod 755 /usr/local/bin/mosaic-nvr
echo '{"data_dir": "data"}' | sudo tee "/Library/Application Support/Mosaic-NVR/mosaic-nvr.json"
sudo /usr/local/bin/mosaic-nvr service install -config "/Library/Application Support/Mosaic-NVR/mosaic-nvr.json"
sudo /usr/local/bin/mosaic-nvr service start
sleep 5; sudo cat "/Library/Application Support/Mosaic-NVR/data/initial-admin-password.txt"

Windows

In PowerShell run as Administrator. On ARM64, download mosaic-nvr-windows-arm64.exe instead. The firewall rule lets other computers reach the NVR on private networks: if Windows calls yours Public, change it to Private under Settings → Network & internet → your Wi-Fi or Ethernet connection.

New-Item -ItemType Directory -Force "C:\Program Files\Mosaic-NVR", "C:\ProgramData\Mosaic-NVR" | Out-Null
Invoke-WebRequest https://www.juvex.fi/mosaic-nvr/mosaic-nvr-windows-amd64.exe -OutFile "C:\Program Files\Mosaic-NVR\mosaic-nvr.exe"
'{"data_dir": "data"}' | Set-Content -Encoding ascii C:\ProgramData\Mosaic-NVR\mosaic-nvr.json
& "C:\Program Files\Mosaic-NVR\mosaic-nvr.exe" service install -config C:\ProgramData\Mosaic-NVR\mosaic-nvr.json
& "C:\Program Files\Mosaic-NVR\mosaic-nvr.exe" service start
New-NetFirewallRule -DisplayName "Mosaic-NVR" -Direction Inbound -Protocol TCP -LocalPort 8443,8322 -Profile Private,Domain -Action Allow | Out-Null
Start-Sleep 5; Get-Content C:\ProgramData\Mosaic-NVR\data\initial-admin-password.txt
  1. Open https://<the computer>:8443/. The browser warns about the certificate, which the NVR made itself; continue to the page.
  2. Sign in as admin with the one-time password, and choose your own. The password file is deleted then.
  3. Add a folder for the recordings under Settings → Storage, preferably on its own drive, and add your cameras.
  4. If the computer has a firewall, open TCP ports 8443 (the web page) and 8322 (video for players) to the networks that need them. On Windows, the commands above do this.

mosaic-nvr service stop and service uninstall remove the service; its data stays. A file downloaded with a browser instead: on a Mac, clear its quarantine first, xattr -d com.apple.quarantine mosaic-nvr.

These links are always the latest release; the NVR then updates itself from Settings → System. SHA-256 checksums

License

Mosaic-NVR is free for personal, non-commercial use with up to three cameras. Commercial use — by or for a business or any other organisation, or installing and running it for others for a fee — and use with more than three cameras require a paid license: contact Juvex Oy to purchase one.

By installing Mosaic-NVR you accept the Mosaic-NVR License. It comes without warranty, and you are responsible for recording lawfully. The licenses of the third-party software it includes are shown under Settings → System in the NVR.