Elenvar

Hikvision NVRs, DVRs and IP cameras · self-hosted

Every recorder you look after, one web page.

Live view from many NVRs in one grid, a recordings timeline you can click through, and an alert the moment a camera that matters goes dark. No vendor app on every computer, no port forwarding to each recorder.

  • Latest1.2.0
  • TalksISAPI · RTSP
  • ServerDocker · amd64, arm64
  • InterfaceEnglish · Czech
  • LicenseGPL-3.0
Elenvar in action: sign-in, the overview, live view from four cameras, an enlarged camera, device detail, the recordings timeline, monitoring and settings
Overview, live view from four cameras, an enlarged camera, the recordings timeline and monitoring.

Four jobs, one place

For whoever looks after the cameras of an office, a school, a few shops or a homelab, with more than one recorder and no time to log in to each.

Watch

  • 1, 4, 9 or 16 tiles with cameras from any device; drag a camera into a tile, double-click to enlarge.
  • Substream in the grid, main stream when enlarged, chosen automatically.
  • H.265 cameras converted to H.264 when the browser can't play them.
  • Rotated cameras turned by 90, 180 or 270 degrees everywhere.

Find

  • Recordings timeline per camera and day, with continuous recording, motion and alarms told apart.
  • Playback from any moment, skip 30 seconds, pause and continue.
  • Downloads of any segment straight from the NVR.

Know

  • Every minute: availability of each NVR, each camera, the disks and the drift of the device clock.
  • Alerts by e-mail or webhook to Slack, Discord, Mattermost or Home Assistant, in Czech or English.
  • No false alarms: reported only after a number of failed checks you choose.
  • Event history with acknowledgements.

Manage

  • Cameras discovered automatically, with a connection test before saving.
  • Stream settings: codec, resolution, frame rate, bitrate and GOP, within what the camera supports.
  • Your own camera names while the NVR keeps its own.
  • Remote restart, model, firmware, serial number and disks at a glance.

Made for real installations

Old firmware and wrong passwords are handled

Some older Hikvision firmware offers RTSP sign-in in a way a direct connection can't use. Elenvar detects it and reads the video through FFmpeg instead, and Test video shows what a device offers.

When an NVR rejects the login, Elenvar stops asking until the credentials are fixed, so the recorder doesn't lock the account or your server's address. After a camera or network outage it reconnects by itself.

Try it without hardware

Three simulated NVRs and ten cameras

The demo runs on your own computer with sample data, one of the recorders on older firmware, and without mandatory two-factor sign-in. It is separate from a real installation.

Run the demo
$ git clone https://github.com/Gelluithor/Elenvar.git && cd Elenvar
$ dev/demo.sh
# http://localhost:8080, sign in as admin / Elenvar-Demo-2026
$ dev/demo.sh down    # stop it and delete its data

Before you add a recorder

Preparing a Hikvision NVR

Works with NVRs, DVRs and standalone IP cameras that offer ISAPI. On analog DVR channels only device availability and disks are monitored, because ISAPI can't report their state reliably.

  1. Enable ISAPIConfiguration → Network → Advanced → Integration Protocol.
  2. Create a user for ElenvarWith remote live view and playback; add parameter configuration and reboot to change streams and restart.
  3. Keep digest authenticationBasic works too.
  4. Set the substream to H.264Right in Elenvar under the device's Stream, or turn on conversion for the device.
  5. Open the networkThe server must reach the NVR on HTTP (80 or 443) and RTSP (554).

Security

Camera systems are a favourite target, so the defaults are strict and the limits are written down.

Sign-in

  • TOTP two-factor required by default, ten one-time recovery codes.
  • Argon2id passwords of at least 12 characters.
  • Lockout for 15 minutes after 5 failed attempts.

Data

  • NVR passwords encrypted and never sent to the browser.
  • Viewers and operators don't even see device addresses.
  • Audit log of sign-ins, settings, playback, downloads and updates.

Containers

  • Unprivileged app with dropped capabilities and read-only file systems.
  • Only the reverse proxy is exposed; go2rtc stays on an internal network.
  • Known limit: the optional updater has the Docker socket. Remove it and update with git pull if you prefer.
RoleCan
vieweroverview, live view, monitoring and events
operator+ play and download recordings, acknowledge events, rotate camera pictures
admineverything: devices, stream settings, restarts, users, settings, audit log, updates

Running in five minutes

Set ELENVAR_DOMAIN in .env, start it and sign in as admin with the password from the log. Caddy issues the certificate; Traefik works too.

Quick start
$ git clone https://github.com/Gelluithor/Elenvar.git && cd Elenvar
$ cp .env.example .env
$ docker compose pull && docker compose up -d
$ docker compose logs app | grep -A3 "Administrator account"