A couple days ago, I migrated my DVR server from a Synology DS916+ over to a N100 mini PC; the primary goal was to improve transcoding performance for when I'm remote. The Synology can do it, but it a) takes a while to start, and to start back up after you skip forward, such as through commercials, and b) really seemed to struggle at higher bit rates/resolutions (like even 6Mbps 1080p) and would often stop to catch up.
I went with a FireBat AM02, chosen over Beelink and others primarily because it has USB-C and DisplayPort, which made it more convenient for me to set up.
I wiped the machine and installed Ubuntu server 22.04, then Channels into Docker, and everything is working great. As a random data point, commercial detection time with a MPEG-2 source, using 2 threads, seems to be roughly 2 min per hour of recording (give or take a bit depending on the specific source). As I recall, it was around 10 minutes per hour (with 1 thread) on the Synology.
A few notes that may possibly be helpful for others going down this route -
- After installing and updating Ubuntu server 22.04, it seems /dev/dri was not available. A newer kernel is required for the chipset hardware in this machine (and other N100's I believe); when installing the current server build, the kernel is something like 5.15-ish (I don't recall exactly, but definitely 5.x), and we want 6.5.x or later. Anyway, an easy way to update the kernel to get the necessary hardware support (this installed 6.8.0-45 for me):
sudo apt-get install linux-generic-hwe-22.04
- I wanted to keep the DVR media files on the NAS, so I made a CIFS mount to them. You can do this by adding something like the following to the /etc/fstab file:
//192.168.100.100/media /nas1/media cifs username=thedvruser,password=supersecretpassword 0 0
There are better ways to do this without saving a NAS username/password into this file that anyone can see, but in my particular case, I don't care, as this user only has access to the DVR files.
Also NFS might have been a better choice, but I already had SMB enabled on the NAS so this was easy.
- And finally, in the docker compose file, I made two changes (aside from the volume paths) to the recommended version in the installation instructions. First, the instructions recommend
restart: on-failure:10
The problem with this is, while it will restart if the DVR crashes, it will not restart the container if the docker daemon restarts (such as with a system reboot). So instead I'm using
restart: unless-stopped
And the other change I made was to add a TZ environment variable (an alternative would be to mount the /etc files for timezone and time, but I chose not to do this):
environment:
- TZ=America/Denver
For the networking mode, I left it as "host" for the moment, which does indeed allow bonjour to find the server as expected (need to wait a little while for this to happen if you're migrating from a different server on a different IP).
And finally, a big shout-out to the Channels team - the process for migrating the server was really easy and well thought out. I especially like that you save the database backups alongside the DVR recordings - it seemed like a non-obvious choice when I first noticed it a long time ago, but after doing a migration it's exactly where you would want them to be!