LightNVR - themactep/thingino-firmware GitHub Wiki
LightNVR
LightNVR is a lightweight, open-source Network Video Recorder written in C for minimal memory usage. It runs on separate hardware — such as the $15 NVR, Raspberry Pi, or any Linux system — and connects to IP cameras (including Thingino cameras) via RTSP/ONVIF.
Important: LightNVR does not run on cameras themselves. It is built using the Thingino build system as a convenience for targeting Ingenic SoC devices like the $15 NVR, but it is a standalone NVR application.
Project repository: github.com/opensensor/lightNVR (GPL v3)
For full documentation, features, and usage instructions, see the LightNVR GitHub page.
Building with the Thingino Build System
LightNVR can be compiled for Ingenic SoC devices (like the $15 NVR) using the Thingino build system. It is not included in standard Thingino release images — you must build it yourself.
- Set up the Thingino build environment (see Building from Sources)
- Enable the package in your buildroot config:
This automatically enables its dependencies: go2rtc, FFmpeg, SQLite, cJSON, libuv, llhttp, and host-nodejs.BR2_PACKAGE_LIGHTNVR=y - Build the firmware image as usual.
Dependencies
The LightNVR package pulls in the following:
| Dependency | Purpose |
|---|---|
go2rtc |
Streaming backbone (RTSP ingest, WebRTC/HLS output) |
thingino-ffmpeg |
Video decoding and recording |
sqlite |
Database for streams, recordings, settings |
cjson |
JSON parsing |
libuv + llhttp |
HTTP server backend |
host-nodejs |
Build-time web asset compilation |
mbedtls or wolfssl |
TLS support (optional, selected by other packages) |
Installed Paths
| Path | Description |
|---|---|
/usr/bin/lightnvr |
Main binary |
/etc/lightnvr/lightnvr.ini |
Configuration file |
/etc/lightnvr/go2rtc/ |
go2rtc configuration directory |
/etc/init.d/S95lightnvr |
Init script (auto-start) |
/var/lib/lightnvr/web/ |
Web UI assets (compressed) |
/opt/lightnvr/ |
Data directory (recordings, database, models) |
Note: LightNVR manages go2rtc directly. The standalone go2rtc init script (
S97go2rtc) is removed when LightNVR is installed.
Configuration
LightNVR is configured via /etc/lightnvr/lightnvr.ini. Key points:
- Web UI runs on port 8080 by default; credentials are auto-generated on first run
- Storage defaults to
/mnt/sda1/— external USB storage is required for recording on embedded devices - Streaming uses go2rtc as its backbone (WebRTC on port 8555, HLS fallback)
- Detection requires the separate light-object-detect service
For all configuration options, see the LightNVR GitHub page.
Running on the $15 NVR
LightNVR can be installed on the Ingenic A1 / $15 NVR hardware, which is where the Thingino build system target comes in handy. However:
⚠️ LightNVR does not work well on this device. If you choose to try it, make sure to back up the factory firmware first. Thingino does run well on it and allows you to use the device as a dependable go2rtc restreamer (no hard drive required).
See the $15 NVR page for flashing instructions and details.
Running on Other Hardware
LightNVR is not limited to Ingenic devices. It can run on any Linux system — including Raspberry Pi, x86 servers, and Docker containers. Pre-built Docker images are available at Docker Hub. For installation instructions outside of Thingino, see the LightNVR GitHub page.
Resources
- LightNVR GitHub Repository — full documentation, features, configuration, and usage
- light-object-detect — companion object detection service
- LightNVR Docker Images — for non-Thingino deployments
- $15 NVR — one hardware target for LightNVR