STH Project TinyMiniMicro has been going on for some time now. When Patrick launched the project, he had asked us, writers, to think of interesting applications for these types of devices. I feel that one of the most intriguing options was to use a node to build a powerful and yet low-power Plex server. It is also a question we get a lot on the articles and videos. Here is an introduction for the uninitiated:
Many users in the STH community use Plex to organize and watch their multimedia library collections. Plex a piece of software that delivers movies and TV Shows to your devices wherever you are. Some users are running their Plex Servers inside of a NAS unit. Synology, QNAP, and even TrueNAS CORE all have Plex plugins. Other users are running Plex on enterprise-grade servers with virtualization. These TinyMiniMicro nodes offer an interesting value proposition for this application.
Project TinyMiniMicro the Plex Server Hardware
For the purposes of this lab, we chose to use an HP ProDesk 400 G3. It has a Core i5-7500T and 8GB of RAM. For this specific application, we included 2 internal drives. We have a 2.5″ 120GB SATA SSD for our OS, as well as a 250 GB M.2 NVMe drive for our Plex metadata and temporary transcoding files. Additionally, we are using a 2TB USB hard drive for storing our multimedia.
With that said, it is important to talk about an aspect of the hardware we chose that is so important. Intel’s QuickSync is a technology that runs on Intel’s integrated graphics processors. Its purpose is to accelerate video encoding and decoding.
Plex Server uses video transcoding on the fly in order to deliver content to all manner of devices. Some client devices cannot play videos using newer codecs or have too poor a network connection to watch a video at full resolution. For that reason, transcoding is required. Additionally, Plex Server supports hardware-accelerated transcoding, so Plex can utilize QuickSync to perform these tasks more efficiently.
QuickSync was released in 2011 with the Sandy Bridge architecture. Each new generation has gained additional features. Most importantly, this brings new codec support. Our Core i5-7500T is a 7th Generation, or Kaby Lake, part. Most importantly, this generation brings X265 or HEVC support.
Before we start setting up Plex we need to get our base operating system ready. Our unit came with a Windows 10 Pro license. So We installed Windows 10 Pro and updated it to version 2004. Then we went out and grabbed the latest drivers and BIOS from HP. We also grabbed the latest non-OEM Intel GPU drivers.
Prepping for Plex
Before we begin installing Plex we need to finish prepping our Windows 10 installation. First, we need to format our NVMe and external hard drives and assign them to drive letters. Open the Windows Disk Management utility. You can find it by searching for Disk Management in the search bar next to your start button.
In the Disk Management utility, you can manage your volumes. We have already made a partition on the NVME drive and named it PlexMetadata. This volume is assigned the drive letter D. The USB hard drive was also formatted and it is named PlexMovies. We assigned this one E.
Next, we are going to go to the D: drive and create 3 Folders:
Then in the E: drive we are going to create 2 Folders:
- TV Shows
With our storage ready, we can move onto the installation.
Plex is free to use software, and you can pay to unlock additional features with a Plex Pass subscription. To get started installing Plex we can go to the server download page on our HP 400 G3 and press download.
When the download is completed we can start the installer. Press the Options button in the installer. We are then going to define the install location, type D:\PlexMediaServer. By doing this, we are putting all of our Plex files on our fastest storage medium. Press OK and then Install.
After the Plex installation completes it will automatically launch. Go to your System Tray, right-click on it, and press Exit. We need to make an additional configuration change to Plex before we can continue. Open Regedit.
In Regedit, we need to modify what Plex calls an Advanced, Hidden Server Setting, navigate to HKEY_CURRENT_USER\Software\Plex, Inc.\Plex Media Server\
Right-click on the Plex Media Server folder and press New String Value. Its name should be LocalAppDataPath and its value should be D:\PlexMetaData. Re-Launch Plex.
That tweak is telling Plex that we want to store all of our metadata on our NVMe drive. Plex uses metadata to store things like movie poster art, video preview thumbnails, movie descriptions, etc. When we are navigating from our client device later, having all of these things stored on the NVMe drive will improve our overall experience.
Open a web browser and go to https://127.0.0.1:32400. We are going to give our server a Friendly Name. We chose to name ours Mr. Meeseeks. Choose whether or not you want your server accessible to you from outside your home, and press next.
Remove the default media libraries for Music and Photos if you do not intend on using them by pressing the Red X. After you have done that, press the Add Library button and select Movies and press Next. Select your E: drive and select the Movies folder. Repeat for the TV Shows library and folder.
Continue through the prompts as Plex asks you how to customize your home screen. Once the wizard has completed, we can move on to the configuration.
After getting to the end of the wizard, you should be on your Plex home screen. In order to get to the Plex configuration, we need to click on the ellipses (3 dots) next to your sever’s name. Go to manage server, and then to settings.
Scroll down to the Settings area and click on Transcoder. On the top right-hand corner, press the Show Advanced button. Change the Transcoder temp directory to d:\temp and change the Transcoder default throttle buffer to 600. These settings put the transcoding media files onto the NVMe drive. The other one allows the transcoder to wait until 10 minutes of video is buffered, rather than 1, before throttling. These settings should ensure smooth playback.
Next, we need to ensure that the Use hardware acceleration when available and Use hardware-accelerated video encoding boxes are checked, and then press Save Changes.
With the Transcoder configured, now we can configure the Library settings. Click on the Library tab and then check the box next to Scan my Library automatically. Next to change Generate video preview thumbnails, Generate intro video markers, Generate chapter thumbnails, and Analyze audio tracks for loudness to as a scheduled task and when media is added.
With that complete, all that is left to do is to start populating your Media library. Drag and drop your files into the Movies and TV Shows folder. Plex will automatically start making the magic happen.
This experiment was fun. In terms of form factor, power usage, and performance, this platform represents the perfect Plex server for most users. The HP ProDesk 400 G3 can serve 1080p media to a family of 5 with ease, no matter the codec.
Since we have not invested a lot of money in the storage for this deployment, we could rely on HEVC H.265/X.265 encoded files. This would require less storage than H.264 with the same quality. Alternatively to the USB hard drive, you could use an external NAS to store your multimedia and use the mini server for Plex.
As an alternative option to the HP 400 G3 Mini we used, you could look at the Lenovo P320 Tiny we reviewed a few weeks back. With it’s integrated Quadro P600, and a driver patch, you could transcode even more streams than with QuickSync. The TinyMiniMicro form factor is perfect for this application, and the choices are bountiful.
We have discussed using the Project TinyMiniMicro nodes as a Plex server, but these nodes are also very capable endpoints to decode and playback Plex as well. One of the advantages of the TMM form factor is that one can mount quiet PCs almost anywhere. One does not need the full power of a TMM node for playback, however, it is an added capability for wherever one is installed.
There are many more tweaks, tips, and tricks you can apply to Plex. If you are interested in more content like this, please let us know!
For Plex my first instinct is to use either Linux or Docker to run Plex. Any particular reason Windows was used instead?
I think that having a Windows 10 license baked into the computer and people are more familiar with Windows being the main reasons. I run my Plex media server as an ESXi VM that runs on a Dell Precision 3430 SFF and tested pass-through the iGPU to the VM.
It does help a little bit; but, most of my viewing is through my Apple TV or Plex client on my laptops where little transcoding actually happens. Burning in subtitles does add a few % of CPU when required.
Is there anyway to contact you guys?
what about hdmi/display-port cec support on those tiny machines? would be great if you can test them all. thx!
These mini micros work way better in plex as a headless linux machine, Windows eats unnecessary overhead. You can get better performance dropping in centos or ubuntu, and they are more secure as a server. Windows is a bad call resource wise.
You can get even more out of it by running a more minimal Linux distro or specialized edge Kubernetes os K3OS. Currently running K3S on Arch on much weaker Biostar a68n-2200. Arch after initial install almost runs nothing.
I think the next implementation will be a render farm?
Re Windows or Linx: I keep on hearing Linux is a better choice because it uses less resources, but these servers have resources to spare. Plex doesn’t need 16GB of RAM.
My media server runs Windows 10, mostly because GRUB didn’t support installing to NVMe at the time (the stable version at least). I intended the server to run a Linux distro but haven’t bothered to change the OS because Windows 10 has been rock solid. It runs all applications I want, and the automatic updates are invisible, they happen between 2-6 am and I don’t need the server at those times.
The only problem I have with it, is that Plex has no access to hardware acceleration if you try to run it as a service. Requiring me to auto-login a user at boot, that seems to be missing from this guide.
Just skip Plex now. It’s such a waste of effort. The Devs left there are sellouts and low skilled robots at best. Everything should have stayed at XBMC but no one even remembers that. Useless server side and has always been a nightmare transcoding engine.
why dont use docker for plex/plexpass in windows
maybe is possible guide to install plex on k8
Great article. I not a software engineer nor a programmer. I do not have time to learn Linux nor have the desire. Your article was very helpful with making sure my Plex was setup correctly. I had an old Dell Optiplex with a 1Tb ssd and 16Gb ram setup as my Plex server and I share with my family across the city. Plex is great for guys like me who have full time jobs and not a lot of spare time to devote to making all this work, Keep the articles coming!
I would agree with commenter that maybe Plex is not the best solution. I use it but am having reservations due to a bug that hss been present for over 3 years. That bug is where the DLNA server of Plex all of a sudden gobbles up most of the 4 Gig of RAM I have available in my NAS. After it does this the performance of Plex degrades considerably.
The focus is on copyright issues.
Keep these guides coming. Any hope for a proxmox or esxi guide?
Great article. I’ve been using a Dell Optiplex micro as my Plex runner for a few years now with no major gripes. Didn’t think about splitting off the metadate from the actual media folders. That’s going to boost my efficiency 5x.
So, for those saying Plex is a no go. I agree, they are very slow on fixing bugs and appears they’re just looking to build revenue without return to their customer base. With that said, any suggestions on an alternative with the same style of UI and robustness of media management? I’ve tried Emby but can’t remember why I left. I pay monthly for my PlexPass so I wouldn’t be out anything but time resetting things to change.