Typically used in tandem with CCTV and IP cameras, NVRs or Network Video Recorders let you fine-tune every aspect of your surveillance setup. But not every consumer would be willing to shell out hundreds of dollars for a separate NVR device.

Thanks to NVR tools, it's possible to manage your security cameras from a PC. Heck, you can even use ZoneMinder to build a robust surveillance system on your Proxmox home lab!

Before you begin

With Proxmox serving as the crux of this project, we’ll assume you’ve already set up this virtualization platform on a PC. And by that, I mean an x86/x64 machine, not a Raspberry Pi. You’ll require an IP camera, preferably one that connects over the Internet, though you can utilize the USB passthrough facility on Proxmox to add a USB webcam to the ZoneMinder surveillance setup.

Speaking of ZoneMinder, you may have noted that I frequently use the Proxmox VE Helper Scripts to simplify the creation and deployment of containers. But since the ZoneMinder container script refuses to run no matter what, it’s time to change tactics by installing a Turnkey container and using it to initialize a virtual machine.

Creating the ZoneMinder container

Since the ZoneMinder template doesn’t come pre-downloaded with Proxmox, you’ll need to grab it from the CT Templates tab.

  1. Inside your Proxmox node, head to the CT Templates tab under the local (node_name) storage and choose Templates.
  2. Locate the turnkey-zoneminder package under the lxc container group and hit Download.
  3. Wait for the Task Manager to display the Task OK message.

Once you’ve downloaded the ZoneMinder template, you can use it to create a container for your NVR setup.

  1. Click on the Create CT button in the top-right corner of the Proxmox web UI.
  2. Enter a Hostname for your ZoneMinder container before assigning it a Password. Be sure to hit Next after each step.
  3. Click on the drop-down arrow next to the Template field and select the turnkey-zoneminder template you downloaded earlier.
  4. Set the Disk size, CPU cores, and Memory per your needs in the next couple of tabs.
  5. In the Network tab, you can assign a static IP to the container by adding an IPv4 address with a CIDR value, followed by the Gateway address.
  6. Feel free to leave the DNS settings the same as those of the host.
  7. Tap the Finish button and wait for Proxmox to create the container.

Setting up the ZoneMinder container

After Proxmox finishes creating the Turnkey-based ZoneMinder container, you’ll need to configure some settings before you can access the web UI for the NVR system.

  1. Tap the Start button and hit Console to access the container over a noVNC server.
  2. Type root as the Username and enter the Password you set at the beginning of creating the container.
  3. Create passwords for the MySQL Admirer and ZoneMinder accounts when prompted by the setup wizard. You can set the same password for both accounts, but it’s better to keep them separate if you value your security.
  4. If you have an API key for the Hub Services, tap Apply after pasting it under the Initialize Hub Services tab. Otherwise, hit Skip and continue with the rest of the steps.
  5. Type your Email address and hit Apply if you want to receive important system messages, or press Skip and move to the final step.
  6. Agree to Install the security updates and wait for the ZoneMinder container to reboot.
  7. When the container restarts, enter the Username and Password a second time.

Configuring the ZoneMinder web UI

Now that you’ve set up the ZoneMinder container, you can access the app’s web UI and connect your IP cameras to the NVR home lab.

  1. While you’re still accessing the ZoneMinder container via the noVNC console, enter the confconsole command.
  2. Open the URL for the web menu in another tab and select the ZoneMinder option under the Control Panel.
  3. Tap Login after entering admin as the Username followed by the Password you chose when setting up the ZoneMinder account earlier.
  4. Deny ZoneMinder's request to access your telemetry data and press Apply to arrive at the ZoneMinder dashboard.

Finally, it’s time to add your cameras to the ZoneMinder surveillance setup.

  1. Click on the Add button.
  2. Inside the Source tab, enter the camera’s IP address inside the Source Path, choose the Resolution, and hit the Save button.

Monitoring your home with a Proxmox-powered security setup

Assuming you followed all the steps correctly, your surveillance cameras should be accessible from the ZoneMinder dashboard. If you’ve allocated enough storage to the ZoneMinder container, you should be fine with the Mocord mode. For those who find their containers running out of space, you might want to reduce the resolution of your cameras or switch to the Modect mode, which captures video only when it detects changes in the video frames.

👁 A Uperfect Ugame K118 displaying a macOS Ventura VM running via Proxmox
I tried running some macOS apps on Proxmox, here's how it went

As long as you have a fast processor, adequate RAM, and a boatload of patience, you can run a surprising number of apps on your Proxmox Hackintosh