Parts list to build the ultimate NVR (IP cameras recording server)


New Member
Oct 13, 2019
Hello, this is my first post so I hope to be in the right section.

A few years ago, I started recording 16x IP cameras 24/7 on a Dell OptiPlex 3020 Mini-tour BTX Base. Its specs are:
  • Processor: Intel(R) Core(TM) i5-4570 Quad Core Processor(3.2GHz, 6M, 86W)
  • RAM: 8GB (2x4GB) Non-ECC DDR3 1600MHz SDRAM Memory
  • Main hard drive: 128 GB SSD
  • Videos are recorded to a 10Tb LVM based on 2x 5Tb USB drives (no redundancy)
At software level:
  • OS: Ubuntu 14.04
  • I record the RTSP streams of the IP cameras with openRTSP or FFmpeg (depending on the camera model). I don't transcode so basically I just get the streams and store them in AVI files (1 file per minute per camera)
  • But I trimmed all cameras configurations to these settings so the whole system can keep up:
    • Codec = H.264
    • Resolution = 1280*960
    • Bitrate Type = variable
    • Frame Rate = 10 FPS
    • Max. Bitrate = 2048 Kbps
    • I Frame Interval = 10
  • At the end of every minute, my recording script asks our security system if there was any movement during the recorded minute (we have many motion sensors in the building) and writes the filename accordingly (for example: <camera_number><timestamp><motionOFF>.avi or <camera_number><timestamp><motionON>.avi)
  • Every night, a "cleaning script":
    • finds the videos older than 7 days with no motion and deletes them
    • finds the videos older than 7 days with motion and re-encode them to lower quality (h264 -preset ultrafast -crf 40) to save space
    • deletes the oldest files until there is enough space to record all cameras the next day

This solution has worked pretty well until now but of course, using an LVM with USB drives and no redundancy is quite a bad idea... I plan to install more cameras and upgrade our network with fiber optic backbones (between the switches), so I thought it would be a good time to upgrade our recording system.

My idea was to upgrade to Ubuntu 18.04 and use internal hard drives (NAS grade) to create a mirrored ZFS pool of ~30Tb. Also, I would use one or more GPU to accelerate considerably the nightly re-encoding part (I have some AMD RX-570 and RX-580). In the future, I might also use the GPU's for OpenCV on live videos (for object detection for example).

The problem is I don't know much about hardware, so I am afraid to buy incompatible or irrelevant components...

Can you help me gather a list of the right components (motherboard, CPU, RAM, PSU, enclosure, drives, etc...) to build such a server?

The server will be located in a technical room, so no problem if it's big and noisy. Also, I can afford to turn the server off in case I need to replace a drive so hot swapping is not mandatory.

Sorry for the long post and thank you very much in advance for any help.
Last edited: