Troubleshooting Guide
This guide addresses common issues and provides steps for diagnostics and support.
🔧 Common Issues
Permission errors on Proxmox / Synology / QNAP
If you see PermissionError: [Errno 13] or could not create Unix socket, try uncommenting in docker-compose.yml:
security_opt:
- seccomp:unconfined
- apparmor:unconfined
As a last resort, use privileged: true on the affected service.
Backend fails to start
If the backend fails to start with a SystemExit: 1, check that SECRET_KEY is not set to one of the default values and is at least 32 characters long.
In production (ENVIRONMENT=production), the app will strictly enforce this. To bypass it for troubleshooting, you can set ALLOW_WEAK_SECRET=true in your .env file.
Cameras not connecting
Verify the RTSP URL is reachable from inside the Docker container. The localhost addresses are blocked for security reasons — use the camera's actual LAN IP.
💡 Note on URL format: VibeNVR supports raw RTSP paths including double slashes (e.g.,
rtsp://ip:port//stream2). + +--- + +### 🔋 Battery / Wyze Camera Stability +Wyze V3 and some battery-powered cameras (Eufy, Reolink) can be sensitive to rapid RTSP connections. + +Recommended Settings: +1. RTSP Transport: Set to TCP in Camera Settings (Main & Sub stream). +2. Detection Mode: Use ONVIF Edge if supported, or ensure AI Master Switch is ON to allow the engine to use its adaptive sleep patterns. +3. NAL Parsing: VibeNVR automatically uses optimized NAL-unit parsing to handle the non-standard H.264 streams typical of these devices. + +---
Live View shows "Authentication Error" / 401
If you see an "AUTH ERROR" overlay, it might be a race condition during token load.
Solution: 1. Ensure you are running the latest version of VibeNVR. 2. Check camera credentials in Settings → Cameras. 3. VibeNVR automatically enters a 5-minute backoff period on persistent 401 errors to prevent IP bans.
⚡ Troubleshooting WebCodecs
If you experience "black screens": 1. Ensure your browser supports WebCodecs API (Chrome/Edge 94+). 2. Check for Secure Context (HTTPS or localhost). 3. If the stream stalls, the frontend jitter buffer should smooth it out automatically.
🧠 High Memory Usage / OOM Errors
If VibeNVR containers are crashing due to memory exhaustion or your host RAM is saturated: 1. Resolution vs Buffers: High-resolution streams (1080p/4K) combined with large pre-capture buffers consume massive amounts of RAM. 2. Consult the Resource Optimization Guide for detailed RAM estimation formulas and tuning strategies (Passthrough, Sub-streams, Throttling).
🐢 High CPU Usage / UI Lag in Grid View
If the browser or host CPU spikes when viewing multiple cameras:
1. Enable Dual-Stream: Configure a low-resolution sub-stream for your cameras. the UI grid will automatically prioritize the sub-stream, saving massive amounts of bandwidth and decoding power.
2. Check FPS Throttle: Increase opt_live_view_fps_throttle in Global Settings to reduce the frequency of MJPEG fallback frames.
3. Hardware Offloading: Use a Coral TPU for AI detection to offload CPU inference. See the Resource Optimization Guide for more tips.
🐛 Reporting Bugs
If you encounter a bug, please open an issue on GitHub.
Include a Diagnostic Bundle:
1. Log in as Admin.
2. Go to System Logs.
3. Click "Download Report".
4. Attach the .zip file to your GitHub issue.
💡 Tip: VibeNVR logs are now standardized with consistent timestamps across all components. When reviewing
docker compose logs, you can easily correlate events between the Backend, Engine, and Frontend. Sensitive data (passwords, tokens) is automatically redacted.
🔑 Session & Cookie Issues
If you encounter "No session cookie" errors or are repeatedly logged out:
1. Check COOKIE_SECURE: By default, it is set to auto. The system detects if you are on HTTP or HTTPS.
2. Local Access: If accessing via IP (e.g., http://192.168.1.50:8080), ensure you are using a modern browser.
3. Reverse Proxy: If you are behind a proxy (like Nginx Proxy Manager), ensure it correctly passes the X-Forwarded-Proto header.
4. Manual Override: If auto fails in your specific network setup, explicitly set COOKIE_SECURE=false in your .env file for local-only use.