Viseron: Set Up Your Own Free Local CCTV NVR Using Docker (Step-by-Step Tutorial)
Viseron is an open-source self-hosted CCTV and local-first NVR solution with AI-powered computer vision support.
It comes with amazing powerful features as Object detection, motion detection, face recognition, image classification, and supports hardware acceleration.
Key features
- Object Detection: YOLOv3/v4/v7 (OpenCV), Tensorflow (Google Coral EdgeTPU), CodeProject.AI
- Motion Detection & Face Recognition: CompreFace, CodeProject.AI, dlib
- Image Classification & License Plate Recognition: Tensorflow, CodeProject.AI
- Web UI: TypeScript React, mobile-friendly
- Home Automation: MQTT support & Home Assistant Discovery
- Hardware Acceleration: CUDA, OpenCL, RaspberryPi, Jetson Nano, Intel VA-API
- Recording Optimization: Lookback recording, zones, and masks
- Platform Support: RaspberryPi, Jetson Nano, amd64, aarch64, armhf Linux devices.
- Rich ecosystem with dozens of components
- Web frontend for easier control
- Configuration editor
- Built-in NVR (Network Video Recorder)
- Easy to configure
- Supports multiple camera types including IP-cameras
Install Viseron NVR using Docker
Viseron's development team made it easy for anyone to install Viseron using Docker, they are ready for almost all architecture including a custom image for Raspberry Pi.
In the following table you will find all official Viseron's NVR images with features each:
Viseron Image Options and Their Benefits
Image | Architecture | Description & Benefits |
---|---|---|
roflcoopter/viseron | Multiarch | Supports multiple architectures, ideal for mixed-environment deployments. |
roflcoopter/aarch64-viseron | aarch64 | Optimized for aarch64 devices; includes Raspberry Pi 4 hardware-accelerated decoding. |
roflcoopter/amd64-viseron | amd64 | Standard amd64 image for most generic x86_64-based systems. |
roflcoopter/amd64-cuda-viseron | amd64 | Adds CUDA support, perfect for systems with NVIDIA GPUs for enhanced video processing. |
roflcoopter/rpi3-viseron | armhf | Tailored for Raspberry Pi 3 with hardware-accelerated decoding and encoding. |
roflcoopter/jetson-nano-viseron | aarch64 | Leverages Jetson Nano’s CUDA, GStreamer, and FFmpeg acceleration for high-performance tasks. |
These tailored images ensure efficient performance on specific hardware, maximizing the use of hardware acceleration and making Viseron adaptable across diverse setups.
You can also use Docker-compose to run any of these images.
Running Viseron on Linux 64-bit
docker run --rm \
-v {recordings path}:/recordings \
-v {config path}:/config \
-v /etc/localtime:/etc/localtime:ro \
-p 8888:8888 \
--name viseron \
roflcoopter/viseron:latest
Install and running Viseron on Intel NUC or any machine with VAAPI support
docker run --rm \
-v {recordings path}:/recordings \
-v {config path}:/config \
-v /etc/localtime:/etc/localtime:ro \
-p 8888:8888 \
--name viseron \
--device /dev/dri \
roflcoopter/viseron:latest
Running on Linux with NVIDIA GPU support
You have to make sure that NVDIA Docker is install on your system
docker run --rm \
-v {recordings path}:/recordings \
-v {config path}:/config \
-v /etc/localtime:/etc/localtime:ro \
-p 8888:8888 \
--name viseron \
--runtime=nvidia \
roflcoopter/amd64-cuda-viseron:latest
On Raspberry Pi 4
docker run --rm \
--privileged \
-v {recordings path}:/recordings \
-v {config path}:/config \
-v /etc/localtime:/etc/localtime:ro \
-v /dev/bus/usb:/dev/bus/usb \
-v /opt/vc/lib:/opt/vc/lib \
-p 8888:8888 \
--name viseron \
--device=/dev/video10:/dev/video10 \
--device=/dev/video11:/dev/video11 \
--device=/dev/video12:/dev/video12 \
--device /dev/bus/usb:/dev/bus/usb \
roflcoopter/viseron:latest
Viseron is quite RAM intensive, mostly because of the object detection.
I do not recommend using an RPi unless you have a Google Coral EdgeTPU.
The CPU is not fast enough and you might run out of memory.
On Raspberry Pi 3
docker run --rm \
--privileged \
-v {recordings path}:/recordings \
-v {config path}:/config \
-v /etc/localtime:/etc/localtime:ro \
-v /opt/vc/lib:/opt/vc/lib \
-p 8888:8888 \
--name viseron \
--device /dev/vchiq:/dev/vchiq \
--device /dev/vcsm:/dev/vcsm \
--device /dev/bus/usb:/dev/bus/usb \
roflcoopter/viseron:latest
Beyond its amIn this tutorial we will go thru install Viseron NVR system on Ubuntu Linux using Docker and the on Raspberry Pi.