VibeNVR Logo

Modern Video Surveillance.
No Cloud. No Compromise.

Simple, privacy-respecting local NVR. Fast setup, flexible recording, and a unified event timeline.

Get Started
GitHub Stars GitHub Forks
VibeNVR Demo Video

Why VibeNVR?

Built for efficiency, privacy, and modern standards.

Privacy First

Your data stays on your local network. No cloud subscriptions, no sensitive data tracking. You own your footage.

VibeEngine

Custom high-performance video engine built with OpenCV for efficient motion detection and recording.

Modern UI

A sleek, reactive interface built with React. Responsive design that works great on desktop and mobile.

Secure by Default

Two-Factor Authentication (2FA TOTP) with recovery codes. Authenticated media access. Designed to sit safely behind a reverse proxy.

Hardware Accel

Supports NVIDIA, Intel QSV, and AMD VAAPI for efficient video processing on compatible hardware.

Containerized

Runs everywhere Docker runs. Modular architecture ensuring stability and easy updates.

Built Solid

A microservices architecture designed for reliability.

1

Frontend

React-based SPA providing a sleek, responsive dashboard.

2

Backend

FastAPI server handling logic, secure database access, and authenticated media relay.

3

VibeEngine

Custom processing engine for motion detection, recording, and overlays.

4

Database

PostgreSQL for persistent storage of camera configs and events.

Modular & Scalable

API & Integrations

Connect VibeNVR with your ecosystem.

Homepage Widget

Homepage Integration

VibeNVR integrates seamlessly with gethomepage.dev via a custom API widget. Monitor your cameras, storage usage, and recent events directly from your personal dashboard.

REST API

Developers can leverage the full REST API to build custom integrations, scripts, or alternative frontends. Access live stats, camera configurations, and system events programmatically.

# services.yaml (Homepage)
- VibeNVR:
icon: mdi-cctv
href: http://your-vibenvr-ip:8080/
description: Video Surveillance
server: your-docker-host # Optional
container: vibenvr-backend
widget:
type: customapi
url: http://your-vibenvr-ip:8080/api/v1/homepage/stats
headers:
X-API-Key: "your-api-token-here"
method: GET
mappings:
- { field: cameras_online, label: Online }
- { field: events_today, label: Events (24h) }
- { field: storage_used_gb, label: Storage (GB) }
- { field: uptime, label: Uptime }
- { field: cameras_recording, label: Recording }
- { field: storage_total_gb, label: Total Disk (GB) }

Documentation & Support

Everything you need to know to get the most out of VibeNVR.

Installation Guide

Step-by-step instructions for Docker Compose deployment and environment configuration.

Configuration

Detailed references for configuration, camera setup, and storage management.

Network Setup

Port forwarding, reverse proxy examples (Nginx, Traefik), and secure remote access.

Troubleshooting

Common issues, logs analysis, and community support on GitHub.

Get Started in Minutes

Deploy with Docker Compose.

# 1. Download the compose file
curl -O https://raw.githubusercontent.com/spupuz/VibeNVR/main/docker-compose.prod.yml

# 2. Configure variables (optional)
touch .env

# 3. Start VibeNVR
docker compose -f docker-compose.prod.yml up -d
View Full Documentation

Anonymous Telemetry

Aggregate, privacy-respecting usage stats from active VibeNVR installations.

Loading live data…

Open Full Dashboard

Support & Star

If you find VibeNVR useful, please consider giving a star in github or buying me a coffee!
Your support helps me maintain and improve the project.

Buy Me A Coffee VibeNVR Product Hunt Badge