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
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.
- 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.
- Connect the network cable and power. The first boot takes a minute or two.
- 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.
- 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:
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
- Open
https://<the computer>:8443/. The browser warns about the certificate,
which the NVR made itself; continue to the page.
- Sign in as
admin with the one-time password, and choose your own. The password
file is deleted then.
- Add a folder for the recordings under Settings → Storage, preferably on its own
drive, and add your cameras.
- 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.
- RTSP & RTSPS · H.264 · H.265 · MJPEG
- Foscam, Reolink & ONVIF
- Raspberry Pi, macOS, Linux & Windows
- Web page & JSON API
- No account, no cloud
- Works with Mosaic-CCTV