Making a Plex Server — The Full guide (April 2023)

Plexguy
50 min readApr 18, 2023

--

This is what end-game nerd looks like

I recently made a Network-Attatched Storage Server (aka a NAS) to host media and stream on my local network using Plex, as well as to transcode for remote streaming to myself and family. There was a lot to learn about the process, especially for someone like myself with no prior server experience. My inspiration from the project was my physical film collection, which numbers some 500 DVD, Blu-Ray, and 4K UHD discs. I am a complete film nerd and hopeless consumer who loves collecting physical media, but I have always had the dream of digitizing my film library using Plex so that I could access it from anywhere and grant access to my family for group movie nights as well. I was surprised to find pretty much no complete guides on the whole process, from building a NAS to ripping discs to hosting a Plex server. So, being the dreadful type of dude who actually likes to write, I figured after a few weeks of lessons learned I might as well write a guide myself. I’m sure my solution is not perfect and there could be better ways to go about this entire process but I can only speak to my experience. I can at least say with confidence that the end results of this guide allowed for:

  • The ability to rip any disc (including 4K UHD) and store them, totaling over 300 Blu-Ray discs at full quality, plus a few hundred DVDs and a few dozen 4K UHD at native disc quality
  • A half-dozen or so full series of TV transcoded to a high quality 1080p setting for reduced file size
  • A powerful Plex server with remote streaming capability for at least 8 concurrent users (tested for a 1080p Blu-ray being live transcoded to 7 external users) with room for more
  • The ability to stream native 4K UHD files to my TV with no degradation and all the fun stuff (Dolby Vision, etc.)

I’ll break the guide down step-by-step, but if any particular sections don’t apply to you, just skip them and focus on whatever matters for your purposes. This stuff gets a little complicated — but as a server novice coming into the experience I found, in general, less issues than I honestly expected and I am very happy with the final result.

Here are the steps I will be describing in this guide, if you want to skip around:

  1. Step 1: Building the server
  2. Step 2: Installing the OS and Configuring TrueNAS SCALE
  3. Step 3: Installing and Configuring Plex on the Server
  4. Step 4: Enabling Remote Access and Port Forwarding
  5. Step 5: Ripping Discs into MKV Files
  6. Step 6: Enjoying your Media

Before the guide itself I just want to lay down a few basic concepts because I didn’t know any of this shit a few months ago, so I figure someone else might not either.

First, what is Plex? Plex is a digital media library which accesses a folder on your computer that contains media files. You need the Plex server app on that computer to read the files and serve them to the Plex client app on whatever device you are streaming from. The Plex client app looks and feels similar to most streaming apps you are familiar with. Plex can apply metadata like movie title, director, poster etc. to the files on your computer and lets you browse them like a streaming service.

The Plex app for desktop (don’t judge my movie choices)

You can share access to your Plex library to other users who can play media from the library on their own devices, as long as the device hosting the files is active and has the capability to serve them. To that end, most media files are too large to serve directly at full size to other users over the internet, and must first be transcoded. This means the computer has to transform the file type of the media to shrink its size before transmitting it, at the cost of fidelity. Transcoding can also help when streaming a file type that the client device does not have the codec to play back, by changing the file into a type your media device can recognize. You can either transcode the file before putting it in your media folder or have the computer transcode the file in real-time as it is served. The benefit to the first method is that the computer hosting the files does not have to spend resources transcoding files when serving them, but the downside is if you watch the files locally you must watch them at their transcoded (lower) quality. The second option allows you to view local files at full quality and serve remote files at transcoded quality, but requires a computer powerful enough to transcode media files in real-time. And for larger files like 4K files this takes a lot of compute. I opted for the second option because I am a goblin who wants all the pixels. Ok, got all that? Well, you will eventually.

DISCLAIMER: If any of the media on your Plex server is copyrighted material, and you allow others to stream it, that’s pretty much a crime. Will anyone care? Probably not, but make sure you know what you are getting into. Also, ripping copyrighted media from discs to your drive is a crime as well, even if you own the disc and the computer you are ripping to. Yes I know it is a stupid law, but it turns out the government sometimes puts the desires of corporations over your own.

Step 1: Building the server

As I said at the beginning I came into this project with zero home server experience. I’ve never even tinkered on Linux before and to be honest, my goal was to enjoy my movies and deal with as little server hassle as possible. To that end, my first inclination was to purchase a pre-built NAS chassis from the likes of Synology, QNAP, etc. I spent a lot of time watching videos from NASCompares (excellent channel) and pretty much had my heart set on a 4-bay offering from Synology due to their really simple OS and essentially 1-click Plex setup. However after reading up on the state of things (Synology’s newest models use AMD processors with no integrated GPU, so goodbye transcoding) I realized that the only way I was going to do this right would be the hard way: build it myself.

I had to know what OS I was going to use for the NAS before I configured the build. After a bit of research and a healthy dose of videos from creators like RaidOwl I decided the simplest, cheapest and best solution for my needs was going to be TrueNAS SCALE. There are a lot of reasons for this, but the two main ones were the price (free) and the ability to support GPU hardware transcoding for Plex without setting up a virtual machine, which I really didn’t want to learn how to do. In fact, the ease of GPU transcoding and native Nvidia driver support on SCALE is the main reason I would recommend this OS to anyone attempting a similar build.

Knowing the OS was going to be TrueNAS SCALE led to a few immediate needs: one would be RAM, as SCALE uses a ZFS file system. ZFS uses RAM as a storage cache, meaning the more RAM you got the more data can be cached. Secondly, SCALE’s storage pools use RAID-Z arrays which don’t allow for more storage to be added once they are configured, so I’d have to buy all the storage I want up front (technically, you can add the exact amount of storage again to double capacity, but I wanted to avoid that).

So here’s the system I built:

  • CPU: Intel Core i3–10100
  • Thought process: Right off the bat I will have to apologize to the server enthusiasts out there for not going with a server platform. I don’t have much of an excuse other than my inexperience and desire to keep things simple. That said, this is a relatively new, relatively cheap 4-core processor, and has an integrated GPU in case the GPU fails to work/I need a fallback for any reason
  • SSD: Silicon Power 256gb SSD
  • Thought Process: I wanted an SSD to put the SCALE OS on and this one was 20 dollars
  • MOBO: MSI MAG B560M Mortar
  • Thought process: I wish I didn’t have to spend this much, TBH if you find some random 4-core server ship and compatible mobo in a pre-built just use that and save scratch. The one thing I really liked about this one was that it came with a 2.5 gigabit ethernet port, which I wanted to take advantage of for bulk file transfers to the NAS.
  • PSU: EVGA 550w Bronze PS
  • Thought Process: Could have saved 20 bucks and gone for a cheaper one but uh, I’m not trying to lose all this data.
  • RAM: TeamGroup DDR4 32GB 2666
  • Thought Process: 32GB is the lowest I felt comfortable going, but since I’m mostly dealing in big media files I didn’t feel like a ton of cache was the top priority. One disclaimer here is that I did not pick a platform which supports ECC RAM. There is a large debate on the internet over whether non-ECC RAM carries the potential of severe data loss in a ZFS storage server. According to the TrueNAS help docs: “Most users strongly recommend ECC RAM as another data integrity defense… However many TrueNAS systems operate every day without ECC RAM.” Mine is one of those systems. Many may get angry at this. Choose for yourself.
  • HDD: 4x Western Digital 6TB Reds 5400 RPM
  • Thought process: I struggled a lot with what to go with here. Obviously I wanted enough storage to fit my entire movie collection uncompressed, and some rough napkin math put my collection at around 12 TB total. I thought about getting two or three massive enterprise drives, but I heard they make a ton of noise and my apartment is small. Also I’m not made of money, and I found a good deal on 4 of these 6 GB WD Reds at around $100 a pop to give me 24 total TB of space, ~15 TB usable after RAID-Z config (will explain later). Honestly, I wish there was a bit more storage space as the movie collection isn’t shrinking. I’ll probably have to double the amount at some point.
  • Case: Silverstone PS16 Micro ATX
  • Thought process: Easily my biggest whiff. Turns out buying cases with a lot of bays is not the easiest thing, especially if you want them to be relatively compact. This case did fit all four drives but only after I bought an adapter to turn the 5.25” bay into a 3.5” bay for the fourth drive. Like I said, I’ll probably wind up adding 4 more drives eventually, so I will have to upgrade the case at that point too.
  • GPU: NVIDIA GTX 1070
  • Thought process: I found a chill guy on CL who sold me this for 100 bucks. Research told me that you need at least a 10 series NVIDIA card to perform video transcoding for Plex in TrueNAS SCALE. So I went 10 series, being the cheapest, but opted for a fairly powerful 1070 as I knew there would be multiple transcoded streams at once when doing group watches. This thing handles that just fine.

OK, so we’ve got all the parts. If I could change anything it would be to get a case with support for up to 8 drives and to opt for more storage, even if it does hurt the wallet now. But these components as-is have supported 7 concurrent transcoded streams with no dips in quality or buffering from a native 1080p Blu-Ray file, so I think I chose well for my needs overall. If you aren’t going to be transcoding outside of your local network don’t bother with the GPU.

I won’t describe the build process; we have Linus for that. Do note that you might need to buy an extra SATA data cable if you purchased at least four drives. Also, buy a UPS for your server. I didn’t immediately do that but you should, because you are better than I am. If you like not losing data after a blackout, get the UPS.

There were three other pieces of hardware I purchased: first, a Zyxel 5-Port 2.5gb unmanaged switch. It’s pretty pricey and probably unnecessary, but since my computer and NAS both had 2.5gig ports on the MOBO I wanted to take advantage of the extra speed for when I’m transferring a 130 GB file of the Lord of the Rings Extended Edition 4K Blu-ray from my computer to the NAS. So I just plug the NAS and my PC into the switch and plug a cable from the switch to my router nearby. It gives me faster file transfer speeds, so that’s cool I guess.

Second, I purchased the ASUS BW-16D1X-U external Blu-ray drive. Now I might be losing some of you here, but this was an incredibly important piece to my digital media library dream. In order to rip my discs I needed a drive that could handle all types, and after an insane trip down the MakeMKV rabbit hole this drive proved to be the perfect fit (we’ll get there in Step 5.)

Lastly, I purchased an Nvidia Shield TV Pro to stream my local media to. For those with 4K OLED (or equivalent) TVs which support real-deal HDR, this is probably my most recommended enhancement to the media streaming experience. The Shield simply supports more video codecs than any other device and can handle 4K streams which reduce other devices (looking at you, PS5) to a jittery, artifact-riddled mess.

Step 2: Install the OS and configure TrueNAS SCALE

Here’s where we really left my comfort zone and, distressingly, the existing help documentation for my particular use case went rather thin. My main resource was the TrueNAS SCALE documentation page for installation, but it didn’t have all the info I needed throughout this journey of discovery. The first bit is pretty simple: building a boot device and installing it in the system.

The first thing is to go to the download page for TrueNAS SCALE and download the latest version. This will download a .ISO file to your computer. You can’t do anything with that alone, so you need to use a tool like Rufus to create USB Installation Media from the ISO. I followed the guide in this video from TrueNAS here even though it’s for CORE. Just download Rufus from their site, run the executable and plug in a USB you have lying around that you are fine with wiping all the data from. In Rufus (or another ISO builder) select the USB stick as your device, select the ISO file as the Boot selection, and then click start to begin building the install media. (NOTE: That USB is getting wiped, don’t leave data on it)

Rufus is a good boy who makes you an operating system. Yes he is, good boy Rufus.

The next step is to install the USB boot media into the NAS. Make sure to plug in a keyboard and a monitor to the NAS for this. If you are using consumer-grade hardware like myself, the NAS probably won’t boot without a display connection. The first time you boot you may have to plug the HDMI into your NAS motherboard, but on subsequent boots you will probably need to use the GPU HDMI. If it doesn’t boot using one port, it’s a safe bet to try the other. Also plug the USB stick with the boot media into the NAS. Right at this moment, just say a prayer to your preferred deity and turn on the NAS. If it boots to BIOS, good job stud. You can pretty much follow the installation guide from TrueNAS here, or this great guide from RaidOwl (or this other great guide from Lo-Res DIY. Can you tell I’m a visual learner?) Basically just select the USB as your boot device and boot out of the BIOS. If all goes well a very 1990’s console setup screen will appear and walk you through initial setup.

After selecting Install/Upgrade, I chose my SSD from the list of available drives to install the OS on. Then you get a warning about erasing all partitions, so just select Yes. Make an admin account and give it a password (remember the password, buddy.) Once you hit OK it will install the OS to the selected drive. After it installs, remove the selected drive and select OK for the system to reboot. When the OS comes back up it will display a black screen with several text commands. You will be prompted to “enter an option from 1–9”. At this step, WRITE DOWN the IP address for your server (“The web user interface is at…”) so that you can access the GUI. That’s it, just write down the IP. Unplug the monitor from the server and store your NAS in some dank corner of your gamer cave, you will hopefully never need to look at it again. (Make sure it’s on, plugged in to power and that its got an ethernet cable attached to your router or network switch. Do I have to say this? I probably have to say this.)

Now we are on to configuration, which for me was the least comfortable spot of the whole experience. Although, I must say that after having configured the system, the TrueNAS team have done a great job of making a usable interface that even fools like me can understand. I really didn’t have any trouble setting up the server in these steps, even if I was sweating ‘imposter syndrome’ bullets the entire time.

So, here’s what you’ll want to do: First and foremost, on whatever PC you are going to be managing the Plex server on, enter the IP address for your NAS into the address bar of your browser. This would be the IP that you (surely) copied down when you had the NAS connected to a monitor. If all goes well the login to your NAS GUI should appear (make sure the NAS is running and connected to the same local network as the computer you are accessing the GUI from). Log in to the GUI using the admin account username and password you created when installing TrueNAS SCALE. Then you should see the TrueNAS GUI in all its glory.

First, in the dashboard tab of the GUI make sure your CPU temperature is normal, your memory is all reporting and your Network is online.

The TrueNAS GUI is so easy to use even I could figure it out

You’ll see the storage widget is empty and gives you the option to ‘Create Pool’, select this to open the Create Pool window in the Storage tab. From here, give the pool a name and select the checkboxes near the drives you want to add to the pool. If you are like me and you want one pool with every drive to store all of your media on, select all of the drives. Click the blue arrow to move the disks to the Data VDev list on the right.

Creating a storage pool from your available drives, featuring a handsome YouTube personality (RaidOwl)

Once your desired drives have been added to the Data VDevs list, you will have to decide on your Raid array for the drives. Ok, here’s a very quick lesson in Raid arrays in TrueNAS. If you have 4 storage drives at 6 TB each (like I do), you could use them all to store unique data. This means you get 24 TB of usable storage. Great, right? Yeah, until one of those drives eats dust in the night and all the data on ALL OF YOUR DRIVES is lost forever. OK, so how can you protect against data loss from drive failure? Enter Raid. There are a variety of Raid storage configurations that will protect your data in the event of a drive failure by allocating a certain percentage of those drives to redundant backups. Here are the options available to you as a TrueNAS SCALE user (Also see this super great Raid-z guide and calculator to calculate your available space for the amount of storage you bought):

  • Stripe: The basic equivalent to Raid 0, all of your drives have data striped together. As I mentioned before, this means you get the maximum usable storage but any drive failure results in total data loss. Because all drives fail eventually, this is literally a guaranteed way to lose data. Don’t do it, Richard.
  • Mirror: Another one to ignore for my purposes, although for the opposite reason. Mirror pools use n-1 drives in the array for redundancy. This means with a four drive NAS, three of those will not be available to store unique data on! Only serious freaks are this into protecting their data.
  • Raid-z: This is the option I chose for my storage pool, and if you are running a similar setup I recommend looking no further. With a Raid-z configuration your pool sacrifices one disc worth of usable space to survive up to one disk of failure: essentially, if any of the four disks in my system goes kaput, no data is lost. This is also a faster storage configuration compared to others thanks to terribly nerdy math that I don’t care to understand.
  • Raid-z2 (and up): If you have a lot of drives in your system, say 8 or more, this would be a decent option for you. It’s basically the same as Raid-z but allows for 2 drive failures’ worth of redundancy, meaning you will lose two of the drives in your pool worth of storage but survive two simultaneous drive failures. For my purposes this was too overkill, but you do you cowboy.

Once you know the Raid config you want (Raid-z, in my case. And probably yours, unless you’re a real baller) select it from the dropdown below the Data VDevs table and then select the ‘Create’ button. You will see a popup that says ‘Create Pool’ and it will take pretty much a minute or two to generate the pool.

We’ve now got the storage pool set up, and now you are going to need to create an SMB share to get your NAS file system to appear on your computer. As a note, I use Windows on my PC. If you use Linux or Mac find another guide to get you connected, God love you. From what I can tell the best way to begin this process is to create a user who will be granted the SMB share. To do this, navigate to the credentials tab and select the local users sub-tab. Here you will want to click ‘Add’ to create a user that will make the share possible. Give the user a full name (it can be yours, don’t be shy), a username, a password, and all that. Ignore pretty much everything else but make sure the “Samba Authentication” checkbox is selected at the bottom of the Add User window. Select ‘Save’ and the new user should appear in the Users list below root.

Don't forget that little checkbox in the bottom-right corner when making a user!

Before you can share your data with your Windows PC you will need to create a dataset within your storage pool. Click the datasets tab, select the pool you created from the Datasets list and click the ‘Add Dataset’ button on the right of the screen. This will pop-in a window where you can give the dataset a name. The only thing you need to change in this menu is ‘Share Type’. Select SMB from the dropdown.

SMB stands for ‘Samba’ because… dancing?

You still need to apply permissions to this new dataset for the user you created to access it. To do this, select the dataset you created and click the ‘Edit’ button in the permissions window. This will bring up the Edit ACL window with the list of users who have permissions to access your dataset. Select ‘Add Item’ and select ‘User’ from the resulting dropdown labeled ‘Who’. In the ‘User’ dropdown scroll to the bottom and select the user you just created. Give the user (yourself) full control in the ‘Permissions’ dropdown. Select ‘Save Access Control List’ and you should see your new user appear.

From here, go into the ‘Shares’ tab and click ‘Add’ next to the ‘Windows (SMB) Shares’ row. A pop-up will appear called ‘Add SMB’. In the Path option there should only be one option, the dataset you created. Drill down until you find it and select it. The window will auto-fill the name of the SMB to match the name of your dataset. Fiddle with options if you like, but at this point you can just click ‘Save’. TrueNAS may ask you to enable permissions, click ‘Enable’.

This is my file path for the SMB share, yours should look similar

Now you should have access to your NAS from your local Windows machine. Open your file explorer and in the address bar at the top enter the IP address of your server (the same one you entered to get into the web GUI). It will ask for the username and password, so enter those. Just like that, you should have access to the NAS dataset directly from your PC (If it doesn’t work right away, you may have to right-click and select “add a network location” to go through the Network Location wizard.) At this point since we are in the Windows File Explorer we might as well make the Plex folder within our NAS dataset. The file structure I used was simply to create a parent folder named Plex and two sub-folders titled Movies and TV Shows. Make these in your network share drive and leave them empty for now.

I created the Movies and TV Shows folders, Plex will create the others when you install it if you choose to put everything in the same parent folder

It’s probably a good time to discuss data protection. I did not prioritize protection over everything with this build because, well, my backups are technically all of the Blu-ray discs sitting 5 feet from my desk. Therefore I do not pay to store backups of my files in the cloud or send them to a buddy’s place to take up space on his NAS (not that I have any friends with a NAS, anyway. Or friends in general.) You might want to do that, depending on the value of the data you store. I will strongly recommend that you take advantage of the Data Protection features in SCALE. To do this, navigate to the Data Protection tab. If you want to make snapshots or sync to a cloud backup you can do that from here, but the two tasks I set up are Scrub Tasks (where ZFS scans data on the pool to check for integrity problems) and SMART Tests (for disc monitoring). My Scrub task is scheduled weekly at midnight on Sundays. My SMART Test is type ‘Short’ and runs daily at midnight. These methods will help to monitor disc health continuously. There is a lot more information on data protection here in the TrueNAS documentation if you want to get into it.

Wow, that was a lot. In the next section we are going to talk about how to set up Plex on your server and get this party started for real.

Step 3: Installing and Configuring Plex on your Server

Well well well, we’ve made it here at last. Now Most people will do more with their NAS than just host a Plex library. Storing precious family photos (yuck), running home security (lame), or doing god knows what with virtual machines and docker containers (unholy). That’s not me. This machine was purpose-built to rock some media and that’s what this guide will cover.

The best video guide I found for installing Plex on TrueNas is this one from Lo-Res DIY. There aren’t really a lot of great guides out there for the stuff we are going to get into from here on out (apparently not everyone is an A.V. nerd who likes hosting digital libraries of media? Very odd.) so I had to make do with some scraps of forum info here and there.

There are a few things to take care of before Plex can get going. The first is the GPU, which is used for transcoding video in real time to external devices. Again, this step isn’t necessary for setups that won’t be transcoding outside the local network, and with a CPU that has integrated graphics like the one I chose you could even support one or two 1080p streams outside the house with 0 setup required. But I am an overachiever and I wanted more, so here we are.

To use a GPU in TrueNas SCALE for Plex hardware transcoding is actually more simple than most other NAS-based solutions. For one, TrueNAS is rolling out native driver support for Nvidia cards by default, which is amazing. To make sure your GPU (which, from what I can tell, needs to at least be a 10-series Nvidia card to be fully supported) is recognized by the system and functional, navigate to the System Settings tab and select the Shell from the menu. This will open the shell where you can enter commands. In the shell run the command “nvidia-smi”. What you should see is an output like this:

I bet that old guy who sold me his 1070 didn’t think it was going to be used for this

You can see the Driver version reported on the top. It reports the wattage currently being used by the GPU (7W/151W in the screenshot), the total memory usage (2MiB/8192MiB in the screenshot) and the overall utilization. If all of these are reporting, then the GPU is recognized by the system and you are good to go. Keep in mind the utilization should be 0% as the GPU is doing nothing when not transcoding. Later, when testing to ensure the system works, we will repeat this command during a live transcode to ensure the GPU is working properly.

If the GPU isn’t appearing (which happened to me the first time I booted the system) there is one solution I have found that worked for me after hours of hair-pulling: restart the system. Click the power button in the top-right of the TrueNAS GUI and select ‘Restart’. This seems to help with driver installation and GPU recognition. Once the NAS is back up, try the “nvidia-smi” command in the shell again and see if it is recognized. You better bet I felt stupid for not trying this sooner.

Once you know the GPU is working, the next step is to install the Plex app itself. Go to the Apps tab in the SCALE GUI and navigate to the Available Applications tab. Plex should be available for download by default in the list that is presented there. Select ‘Install’ and let the fun begin.

I hear Jellyfiin is pretty cool too, but hey Plex is right there dude

Once you have begun the install process, give the application a name (Try ‘Plex’, it’s a good one). The first divergent points here are the ‘Use PlexPass’ and ‘Plex Claim Token’ fields. Select Use PlexPass if you are intending to purchase a PlexPass. Here is a good time to mention PlexPass, I suppose. This is the premium offering from Plex which allows you additional account controls and features. I really don’t care about any of them except for hardware transcoding. Yes, you can’t transcode video with Plex unless you pay for PlexPass. Thankfully there is a one-time fee with a lifetime subscription for around 100 dollars, so at least it isn’t an endless money pit. Well, I wanted to transcode so I selected this checkbox. Next up is the ‘Plex Claim Token Field’. If you already have a Plex account, you can use this field to link the account to this server. Get the token at https://www.plex.tv/claim, if you have an account. Assuming you do not, leave this blank and move on.

Set the container time zone to your correct time zone, then move on to the Networking section of the setup window. This is important: Make sure you select ‘Configure Host Network’. This makes the whole server part work. You can leave the exposed port at 32400, we will make sure that the port is forwarded correctly later on.

A very important checkbox to select, and a very important port to remember

Continuing on, in the Storage section, make sure ‘Enable Host Path for Plex Transcode Volume’ is selected. Then, drill down in the file structure presented for the Host path until you see the Plex folder we created a few steps ago. Select this folder. Do the exact same thing for the Data Volume and Config volume checkboxes and file selections.

I don’t know if it is best practice to put the transcode folder in a separate parent folder from your library folders, but I couldn't be bothered to look it up

The final and very important step in the setup process for the Plex app is in the Resource Reservation section of the setup menu. Under GPU configuration, select the dropdown and choose the ‘Allocate 1 nvidia.com/gpu GPU’ option. If you don’t do this Plex won’t use your beautiful shiny GPU to transcode anything. If you don’t see the GPU in the dropdown, you either don’t have a compatible GPU (again, Nvidia 10-series and above seems to work best) or you will have to restart your system as mentioned in the GPU setup paragraph above. Once this is done, select ‘Save’ and let the application install.

Imagine allocating 0 nvidia.com/gpu GPU. I could never

Once Plex installs, click on the ‘Web Portal’ button of the Plex application under the Installed Applications tab.

You will also have to select Run to start the application here if it is ever stopped

This will take you to the Plex web portal, where you should see a ‘How Plex Works’ page. Select ‘Got it’ and be greeted by a very large ad for PlexPass. Again, I wanted the transcoding feature, so I purchased the lifetime PlexPass subscription. If you aren’t transcoding, skip this, otherwise steal mom’s credit card.

Once PlexPass is acquired, name the server (I called mine “JimmyFlix”, only instead of Jimmy it was my name. Which isn’t Jimmy.) Select the ‘Allow me to access my media outside my home’ checkbox. Keep in mind, this isn’t going to work until we forward the port that was set for the Plex server during installation (we’ll get there, baby.) In the next step select the ‘Add Library’ button to point Plex toward the correct folders. The first thing you will do is select a ‘Type’ of media, so that Plex knows what it’s looking for when it adds metadata such as posters to your media files. In my case I had both movies and TV, so I made one library for each media type. First, I selected ‘Movies’ and then ‘Browse for media folder’ . I navigated to the sub-folder that I made labeled ‘Movies’ and selected it. Do the same for TV Shows, if you have them, and you should be staring at two libraries called ‘Movies’ and ‘TV Shows’. Click Next and then Done to finish the setup.

Once you are in the Plex app, the first thing to do is select the three dots next to Live TV, Movies & Shows On Plex, Music on Tidal and whatever other crap they are pushing and click ‘Unpin’ to remove them from your left-side menu. All you want to see there are the Home, Movies, and TV Shows tabs (if Movies and TV Shows were the two libraries you added. Some people like to split up their movies into like Kids and Adults libraries but, those are strange people.)

I’m not going to go into how to use the Plex interface since let’s face it, anyone who can follow this absolute monstrosity of a guide can figure that out. But I will point out that by clicking the wrench in the top right you can access your settings for the account. I’ll list a couple of important pages from the settings page and tell you how I configured them:

  • Manage Library Access: Here you can invite others to your Plex server to watch media on the server remotely. Later I will describe this process in detail, but know that from here you can grant or revoke access to any users.
  • Status — Dashboard: This gives you a great snapshot of activity on your Plex server. Again, I will describe the remote serving process in more detail later.
  • Settings — Remote Access: This is probably the most important tab to remote streaming from your Plex. In the next section I will describe the remote access setup for the Plex server.
  • Settings — Library: This page offers tweaks you can make to your media library behavior. I leave these up to your preference, but recommend turning off video preview thumbnails if you are having performance issues.
  • Settings — Network: Select ‘Enable Server Support for IPv6’, set secure connections to Preferred, Select ‘Enable local network discovery (GDM)’, leave everything else default.
  • Settings — Transcoder: If you bought PlexPass and want to transcode, use this page. I set transcoder quality to ‘Make my CPU hurt’ because well, I’m not using a CPU to transcode at all. Make sure to select use hardware acceleration and hardware-accelerated video encoding. You can put a limit on simultaneous transcodes if you are running a seriously illegal operation.
Some transcoding settings of mine for those real crispy streams

Ok, now with the Plex basics out of the way and the app installed, the next step is making sure that Remote Access to your server is possible through the magic of port forwarding.

Step 4: Enable Remote Access and Port Forwarding

I am assuming that most of you are at least somewhat aware of what port forwarding is. Anyone who had a Minecraft girlfriend in middle school will understand the importance of forwarding a port for your server. Without opening the port to outside traffic, the server will be stuck behind the steely gates of your router. But there is prep that must be done first. In Settings — Remote Access on the Plex app, make sure ‘Enable Remote Access’ is turned on. If your server is accessible a message saying ‘Fully accessible outside your network’ will appear in green at the top of your page. If the port cannot be reached, the message will turn red and indicate an error. If the message is red, no one will be able to access the content on your server. Next, select the ‘Manually Specify Public Port’ option and enter the default port which was configured when Plex was installed on the server (by default Plex uses port 32400).

I really hated this page at first. Now we are friends

Once this is configured, it might seem like your connection is good, but don’t be fooled. If you haven’t opened the port in Port Forwarding the connection will likely not sustain. To forward the port there are many guides depending on the router you are using. This site https://portforward.com/router.htm will tell you what steps to take for your router. Typically, a good way to find your router’s IP is to open the command prompt and type ‘ipconfig’. The value that reads ‘Default Gateway’ is your router’s IP. Copy this value and paste into your browser’s address bar to access the login screen for your router. Like I said, every router will have a different interface and process, but generally you will go to a port forwarding tab, create a new rule for Plex and specify the port. Once you apply the rule the port should be enabled.

To check if the port has been opened, use a tool like https://canyouseeme.org/ and enter the specific port you wish to check (again, if you kept Plex to the default Port this will be 32400). The site will tell you if the port is open or if it cannot be accessed. In the case of a failed port forward, you may have the same issue I had: two routers. See, most people have a modem/router combo from their ISP which they use to service WIFI across the house. Since I am a real gamer I also have a dedicated router that is more powerful than the built-in router the ISP provides. I had set up the port forwarding on my standalone router, but not the one built into the modem from the ISP. To fix this I had to set up DMZ on the ISP-provided router. I won’t explain that process in detail, but a full explanation can be found here: http://www.pcwintech.com/how-setup-two-or-more-routers-together-port-forwarding-port-triggering

Alright then! Go back to the remote access page of the Plex app and see if the ‘Fully accessible outside your network’ message has persisted. If so, your port is successfully forwarded and the server is accessible for devices outside your home network. Now… we come to a true pivot for this guide and a deep dive into the depraved and highly-optional world of disc ripping.

Step 5: Rip Your Discs

Welcome to the wild west. Out here there ain’t no laws, partner. This section of the guide is going to be fully off the rails I am afraid, so if you aren’t gung-ho about ripping them discs then feel free to make like the immoral scum you are and skulk back to whatever internet trash-heap you peel your nasty, low-bitrate Chinese bootleg MP4’s from. No no, I won’t judge… too harshly.

So now that the torrent toddlers are gone, how do we rip discs anyways? Well, if you believe every multi-billion dollar corporation that produces physical media this task is impossible. Their products are protected with the encryption of 1000 Gods. No way about it, use your UV streaming codes and be content. Well, thankfully for us, the multi-billion dollar corporations didn’t account for a dude named Mike.

Who’s Mike? Well, Mike is the admin of the MakeMKV forum. Among other things, Mike (and Billycar11, MartyMcNuts, etc.) is the guy who makes custom firmware for ordinary, run-of-the-mill Blu-ray drives which turns them into God-slaying, 4K Blu-ray ripping machines of iconoclastic carnage. Using the guides that Mike, Billycarr11, and others created, I will walk you through how I was able to burn my entire library of films onto my computer.

The first step in disc burning is to acquire a disc drive. Odds are if your computer is even semi-modern you won’t have one built-in, and even if it does come with a Blu-ray drive there is no guarantee that the drive will be compatible with the encryption-cracking firmware that will enable it to read 4K Blu-Rays. One important note: don’t buy a 4K Blu-ray player to rip discs with. These drives are locked down with encryption and will not work in MakeMKV. You must buy a regular blu-ray drive and upgrade it with the custom firmware if you want to rip 4K discs. There are a few ways you can ensure you are getting a firmware-compatible drive: search the forum to see if it has been listed as compatible (a good list is given here in the drive flashing guide), buy a pre-flashed drive from Billycar11 on the MakeMKV forum, or purchase the drive I bought which I can CONFIRM does work with the firmware: the ASUS BW-16D1X-U. Keep in mind that this is a larger external drive so if you want one that will go inside your computer, choose from the many models listed on the forum post I linked earlier.

Once you have a drive, you’ll have to download MakeMKV. You can download the software here. Keep in mind that MakeMKV has a free trial which can be renewed but is technically a paid service. I would strongly recommend paying the $60 fee for a perpetual license if you will be using the software regularly, as it is truly an incredible tool for digitizing your film library. You can purchase a key for MakeMKV here. Once you have downloaded MakeMKV, open it on your desktop. There are a few decent guides on using MakeMKV, but I found the best to be multi-part series here from YouTuber Techthusiasm. He does a great job describing the intricate details of the ripping process to ensure that you get a good final product, a process I will describe shortly.

In the MakeMKV app, select your Blu-ray drive from the ‘Source’ dropdown. When you do, you will see some specifications under ‘Drive Information’ and ‘LibreDrive Information’. Drive information gives you data on your specific Blu-ray drive, including manufacturer, serial number, etc. LibreDrive information tells you the status of LibreDrive for your Blu-ray drive. LibreDrive is an operational mode on the disc that removes all read restrictions, allowing conventional Blu-ray players to read, play and rip 4K UHD discs. To learn more about how this works see this forum post. In order to rip a file off of a 4K UHD Blu-ray you will need to flash the firmware of your drive to enable LibreDrive. If you don’t plan on flashing 4K drives, ignore this next part.

The MakeMKV interface in all its glory. You can see that the drive I have has been flashed with the firmware, as indicated by the “Status: Enabled” under LibreDrive information

Flashing a drive with the MK firmware can brick the drive if you do it wrong, so consider this a warning. I don’t want to describe everything in detail for fear of getting something wrong, so I’ll leave it up to the experts. This is the official flashing guide and there is an accompanying YouTube video here. These guides mostly go over how to flash the drive’s firmware manually using command prompt, however there is now an easier way to do it using the SDFtool Flasher GUI made by MartyMcNuts. Follow this link here to see the guide made by Marty on how to use the flasher and where to download the latest version. Additionally, you will want to download the .zip file on the same forum post as the Flasher download for the All You Need firmware pack. Once you’ve downloaded the flasher, open the.exe and select your drive from the dropdown at the top of the window. Select the ‘WRITE Firmware’ radio button and click the dropdown to point the Flasher to the correct file, which will be one of the .bin files in the all you need firmware pack. For my drive, this was ‘DE_ASUS_BW-16D1HT_3.10_MK.bin’. Select the ‘enc?’ checkbox if your drive’s original firmware is encrypted (consult the forum posts to see if it’s on the list.) Click ‘Start’ and let the Flasher do its thing. When it’s done, restart MakeMKV and look to see if the LibreDrive information section has been updated to say ‘Status: Enabled’. If so, congratulations, your drive can now read and rip 4K UHD Blu-rays and any other disc under the sun. If the drive isn’t showing up or the status didn’t change there was an issue with the firmware flash. Go back to the Flasher tool and select the ‘RECOVER Drive’ option. Remember to be careful, as a botched firmware flash can brick the Blu-ray drive.

Now that the drive is flashed with the LibreDrive-enabled firmware, all discs can be ripped to your eagerly-awaiting Plex library. This is where a little bit of know-how on using MakeMKV will really go a long way. Again, I would recommend watching the series by Techthusiasm on YouTube if you want to get really good at using the software. But to describe the basics, you’ll want to start by tweaking some options. Select the wrench icon to open the preferences window. It will open on the Video tab. Set your default destination for MKV files once they are ripped from the disc. Personally I set mine to deposit directly in the Movies folder on my NAS, since I wanted full-quality files. If you are going to be transcoding files first, or if you are ingesting something like a TV series, you’ll probably want to save the file to your desktop first so you can transcode and/or break it up. I’ll explain this process later.

Letting MakeMVK deposit your freshly-minted files into your NAS is a great feeling

Also in the video tab, set the minimum title length to something relatively high (I chose 10 minutes, or 600 seconds). This will cause MakeMKV to ignore any video or audio track under that length on the disc, thereby eliminating the clutter of trailers and other small clips on the disc. If you want to export some special features or that sort of thing as a seperate MKV file you might have to adjust this threshold. Finally, navigate to the General tab and select the ‘Expert Mode’ checkbox. This will give you more control over the file structure of the MKV later. One thing to note: if you are ripping a lot of foreign films of a particular language, you might want to set the preferred language in MakeMKV to match or you will have to manually select the correct foreign audio track when prepping the file. Once these changes are made, close the preferences window and insert your first disc for ripping.

Once you insert a disc into your drive it will spin up for a bit and eventually display the type of disc and the name of the disc. Select the image of the drive in the center of the window to decrypt and open the disc, revealing the file structure of the disc itself. What you will typically see, once expanded, is something like this:

This disc only had two tracks over 10 minutes. We got off easy

MakeMKV will auto-select certain audio and video tracks which are flagged as default. These are typically the main feature and its accompanying English-language audio (if English is set to your preferred language in the settings menu). One thing you will notice right off the bat is that there are two ‘Title’ files inside this disc. One is 16 chapters and 6.1 GB, the other is 1 chapter and 1.4. It is clear from the chapter count and file size that the first Title file is the movie. The second file is usually another feature on the disc, such as a deleted scenes compilation. Deselect this second Title and any sub-files within it to prevent it from being added to your MKV file.

Next, if you click on the first title you will notice that its name (shown in the text box to the right) is empty (it won’t always be empty, but it usually needs some work). If you select the dropdown and click ‘File Name’ it will show you the name of the file that will be output when you create the MKV. This file name is very important, because Plex uses the file name of the MKV to automatically identify the movie inside the file. Therefore, you will want to re-name the file name to be Move Title (Movie Year).mkv. As an example, this file would be called: Sneakers (1992).mkv. Plex likes when you include the date to clear up confusion with other similarly-titled films. You can manually identify the movie in Plex (will explain this later), but it is nice when it works automatically.

Finally, take note that two Audio tracks have been selected, both in the DD Stereo English format. If I click on the first one it says it has been flagged as default by MKV. The Second says it has been flagged as director’s comments. I know, then, that the first file is the film audio and the second is the director’s comments. If you don’t want to keep the commentary or other audio tracks (which can increase the file size), uncheck everything but the main audio and subtitle tracks.

Theoretically, our work is done. At this point you can select the ‘Make MKV’ icon in the top-right and begin to burn. However, life is rarely so simple, and there are a plethora of traps to fall into when ripping from a disc. These can be annoying to suffer, as each rip takes a decent amount of time. I will try to list a few tips for you to pay attention to:

  • Some discs, usually blu-rays (and typically Disney releases) will have a hostile file structure that intentionally obfuscates the real track by presenting hundreds of dummy tracks with the segment map of chapters re-arranged. There is often no way to know which of these is the real track. Sometimes the source file name ‘801’, which is usually at the top of the list, is the correct one. If you aren’t sure you can search the film on the MKV forum to see if anyone has figured out which track is the right one.
As you can see, some discs want to bring the pain. I blame Robert Eggers personally for this one
  • Sometimes a disc has five or six audio tracks and several are the film’s default audio, only they use different formats. In this case I usually de-select all tracks except for the highest-fidelity track (for an explanation of audio and video CODECs and their comparative fidelities, check out this guide.) This can sometimes be a bad move, however, I have seen some instances where an older movie uses a DD mono track for the film audio but a stereo track for the director’s commentary. So if mono is flagged as default, that usually means it’s the option to go with.
  • Many movies have a moment where a character speaks in a different language and their words are subtitled, even if you don’t have subtitles on. This type of subtitle is called a ‘forced’ subtitle. Sometimes these forced subtitle tracks will be nested within main subtitle tracks and labeled as ‘forced only’. Make sure to select these or you won’t be able to understand what Hugo Stigletz is saying in Inglorious Basterds.
  • If you are ripping a foreign film or show, English is probably not going to be the language you want for your audio track. MakeMKV will still default the English dub if you have English set as your preferred language, so make sure to switch it to the native language the actors are speaking. Additionally, these movies and shows will often have two subtitle tracks in English: one to translate the native language of the film, and another to subtitle the English dub. Sometimes it can be difficult to discern which is which, but if you are really stuck you can select both and pick which subtitle track to play when you start the movie in Plex.

With the tips out of the way you are ready to rip some movies. Hit the Make MKV icon and sit back to watch the program work its magic. You can see the total free space of the disc you are ripping to and the output size of the file. Here are some general rules of thumb for each disc type based on my experience, but mileage may vary based on length of the movie and speed of the drive:

  • DVD: between 5–8 Gigabytes of data, taking between 10–20 minutes to rip.
  • Blu-Ray: Between 20–40 Gigabytes of data, taking between 15–30 minutes to rip.
  • 4K UHD Blu-Ray: Between 50–80 Gigabytes of data, taking between 30–50 minutes to rip.

These sizes can vary widely, though. For really big honkers like the Lord of the Rings: The Return of the King Extended 4K, the file size totaled a whopping 127 Gigabytes once I merged the files from both discs into one using MKVToolNix (I will explain this later). So yes, this all means that for my library of around 500 movies I spent several weeks ripping one disc at a time, averaging around 20 to 30 minutes a disc. Is it worth it? Probably not to a lot of people, but I found the experience rewarding in the process and ultimately enjoyable.

So really the only thing to do is continue to ingest your newly-minted MKVs into your Movies folder. Of course, if you have TV shows on physical disc you’ll want to rip those too. This, unfortunately, can get a little more complicated. You see, Most TV shows come in disc sets that combine episodes (e.g., disc 1 of the Neon Genesis Evangelion Blu-Ray set contains episodes 1 through 7.) The issue is that these episodes appear out of order in the MakeMKV GUI and they are not titled distinctly. Sometimes there is one track, usually the first one, that will be significantly larger than the others. This is the ‘Play All’ track, meaning it combines all of the episodes into one track that plays them all in order. You will want to deselect this track as you will be exporting the individual episode tracks to ensure separate MKV files for each episode. To determine which episode is which from the individual tracks, try to discern a pattern in the source file names of the tracks. Hopefully there will be a numerical increase in the file name corresponding to the order of individual episodes.

To make matters worse, some shows (anime in particular) do not come with distinct tracks for each episode, meaning only the ‘Play All’ track can be exported as one large MKV file. This is not what you want, as Plex needs each episode in its own unique file to identify them as separate episodes. The final issue is file size. While I wanted nothing but the raw footage for my movies, even I could see how difficult it would be to store hundreds of hours of native Blu-ray quality TV. These get out of hand fast, and the best solution is to transcode the TV show MKV files before placing them in your Plex server folder to reduce their overall size. Thankfully, there are two free tools that help solve all of these problems: Handbrake and MKVToolNix.

First, I will describe using Handbrake. Handbrake (available for download here) is an incredible tool that lets you transcode any video file and apply a variety of other tweaks in the process. Any movie or TV show that you don’t want hogging up space at native disc quality can be run through Handbrake to make it a more manageable size. The first thing to do when opening Handbrake is go to File > Preferences to make some tweaks. You’ll want to determine the output path for the file you are transcoding. If you are transcoding a movie, set the path to output in the movies folder of your Plex server. If you are transcoding a TV show, make a folder for the show and a sub-folder for the season in the TV Shows folder of your plex library, and export to the correct season folder. If your desktop has a dedicated GPU, head to the Video tab and select either the AMD or Nvidia encoder option, depending on your hardware.

With those preferences set, open or drag your first file into Handbrake. There should be a source preview with a thumbnail of the episode. The main thing to do here is change the Preset dropdowns to your preferred output. I am using HQ 1080p30 on all of my TV show Blu-Rays, but whatever you choose is up to your preference. This preset roughly halves the size of my files while retaining a fairly good quality image. Then, set the Format dropdown to ‘MKV’ and make sure Passthru Common Metadata is checked. It should look something like the screenshot:

That Common Metadata you like is coming back in style…

You likely won’t want to mess with anything else except the Audio and Subtitles tabs. In Audio, if you wanted multiple audio tracks for your MKV but only see one (if, for instance, you want both the sub and dub track of an anime), select the Tracks dropdown and click add all remaining tracks. In the subtitles tab it probably won't add your subtitle track by default if you included one in your MKV, so you will have to select the tracks dropdown and all all remaining. The first track will be a foreign audio scan and will burn-in the forced subtitles, which I explained earlier.

Once all of these changes have been applied, hit the ‘Start Encode’ button at the top. Handbrake will begin to transcode your MKV down to a smaller file size and output it to your specified folder on the Plex server. If you are wanting to transcode a large amount of movies or TV shows, repeat these steps but select the ‘Add to Queue’ button to add additional encoding tasks to the queue, which Handbrake will complete in order.

We’ve covered most of the bases when it comes to ripping MKV files, but there is still one issue: what happens if the movie you want to rip is split between two discs, such as the LOTR extended edition 4K Blu-rays? What if you have 5 episodes of an anime stuck in one large MKV file? How do you split them up? This is where the last tool we need comes in, MKVToolNix. This is another great, free tool that can be downloaded here. MKVToolNix allows you to combine multiple MKV files into one larger file, split one MKV into multiple, trim MKV files to a certain length, and more. Once you download the tool make sure to set the file title and destination file in the ‘Output’ tab for whatever you are trying to do.

To combine multiple MKV files into a single, larger file (as in the use case with the LOTR movies being split across two discs each) the process is simple. Simply add the file which represents the beginning of the movie to the MKVToolNix GUI by selecting the ‘Add Source Files' button and selecting the file in its folder. Then, right-click the file and select ‘Append Files’. A file explorer will pop-up. Select the file you wish to combine with the first. When it appears nested beneath the initial file, select the ‘Start Multiplexing’ button to have the files combined into one MKV.

Splitting one large MKV into multiple files is a slightly more involved process. There is a helpful YouTube video explaining the steps in detail here. I will quickly summarize, using the example of Neon Genesis Evangelion disc 1. As I mentioned earlier, this disc contains episodes 1–7 and did not provide them for download in separate tracks, meaning it exported all 7 episodes together in one large file. To split each episode into its own MKV you will have to know the timestamp of each episode’s final frame. This can be accomplished by opening the MKV in VLC Media Player (which you should definitely use, it can play virtually anything) and skimming the video until you get to the end of the first episode. Mark down the timestamp that shows in VLC Media player using this format: HH:MM:SS (e.g., 00:34:45). In MKVToolNix, click Add Source Files and select the MKV file you want to split up. Navigate to the ‘Output’ tab and make sure the file is outputting to the correct TV folder on your Plex server. Then, change the Split mode dropdown to ‘after specific timecodes’ and enter in the time code for the end of the first episode. Repeat this process for the time codes between each episode within the large MKV file, leaving a comma between each time stamp. When finished, select the ‘Start Multiplexing’ button to generate individual MKV files for each episode. When this is done, I recommend playing the video files and skipping to the end to ensure they all cut off at the right time.

I made up these time stamps so don’t copy them if you have Evangelion Disc 1. Do your own work!

Alright, that’s really all you need to know about the basics of ripping discs for your media server. Keep in mind that sometimes there will be no way to know which audio or subtitle tracks are the ones you want and which are director commentaries or other random tracks. In that case I always err on the side of caution: in Plex, if an MKV has multiple audio tracks, you can pick which one you want to play. So leaving them all selected will guarantee you get the right one, even if it means you have others attached to the file. In the next (and final) part I will describe how to use Plex to stream media both locally and to multiple users outside your local network.

Step 6: The Finale (Enjoying Media on Plex)

Well, we’ve made it. The server is built, TrueNAS Scale is installed, Your storage is configured, The Plex server is installed, and you are ripping through your physical media collection using MakeMKV. The final step is to actually play your movies off of your shiny new server. This is the easy part, but even here there are some tips and tricks I have to make sure your experience is optimized and uninterrupted.

So, what happens now that you have loaded some MKV files into the Movies or TV folders of your Plex server? Well, if you open up the Plex app on your server (navigate to the Apps tab in the TrueNAS GUI and select the ‘Web Portal’ button in the Plex app widget) you will see that your library (let’s just stick with ‘Movies’ for simplicity) is still empty. Simply select the three dots next to the library name (e.g., ‘Movies’) and click the option ‘Scan Library Files’. Plex will then scan the folder you assigned to this library in your NAS and load any files there onto the screen in front of you, appearing as movie posters with titles and year below each poster. You can also set Plex to automatically scan for new files at periodic intervals.

Have you guys seen Dragged Across Concrete? I highly recommend it for the next family movie night

Plex will do its best to automatically identify which movie is inside the file based on your file name, which if you followed my naming scheme in the previous part should work for most films. If Plex assigned the wrong movie to your file, or could not identify any movie for the file, no worries. Just hover over the poster for the movie and select the three dots in the bottom right. Select the ‘Fix Match’ option to open up the Fix Match window. Here Plex will offer their best guesses for the identity of the movie. If you don’t see it in this list, select the Search Options button at the top of the window and enter the film title and release year. Click search and the film will appear. Select it and Plex will automatically update the metadata for that film.

Even once Plex has assigned metadata to a movie correctly, you may want to tweak that information based on your preferences. To do this, hover over the film’s poster and select the Edit icon in the bottom left. This will bring up the Edit window in Plex. Here you can edit general information such as the film title and director, poster, and background that appears when you open the film’s page in Plex. I often like to switch up the poster for movies in my library, and Plex usually has a great variety for any given film.

The Raimi Spiderman posters make me very nostalgic for Blockbuster for some reason

The last tip I have for getting your library clean is to take advantage of the ‘played’ and ‘unplayed’ tags. You’ll notice that any new movie added to the Plex has an orange triangle in the top-right corner, indicating it has yet to be viewed. If you watch a movie partway through the triangle will disappear and a progress bar will show up on the bottom of the movie poster. If you want Plex to recognize that you watched the movie without playing it until the very end, select the three dots in the corner of the movie poster and select ‘Mark as Played’. I recommend that for any movie you add to the Plex you should play it in your browser to make sure the audio, video and subtitles are working properly. When you skim through a movie Plex will take away the unplayed tag, but you can mark any movie as unplayed using the same steps for marking it as played.

So let’s look at a movie more closely by selecting the poster and opening the movie’s page in Plex. Here it gives a bunch of great information as if you were opening the film on Netflix, including cast and Rotten Tomato scores. The most important settings here will be in the Audio and Subtitles dropdowns. If you uploaded a movie with multiple audio tracks (say, a sub and a dub for a foreign movie) you can select the dropdown to select your preferred track. The same goes for subtitles. If you didn’t upload subtitles in the MKV rip of a specific movie but find yourself wanting them, Plex offers a service to try and scrape subtitles from the internet, but it isn’t always reliable. I have one major piece of advice here: often, modern blu-rays and especially 4K UHD Blu-rays contain an audio codec called TRUEHD. This is one of the highest-fidelity codecs today, but many devices cannot play it. For this reason I recommend selecting at least one additional audio track when TRUEHD is the default in MakeMKV. If you are watching the movie on a device that doesn’t support TRUEHD, make sure to select the alternate track before playing the audio or the movie will not play.

Alwyas include a backup audio codec with TRUEHD, my browser can’t even play it

This leads us to watching the movies themselves. If you are an A.V. nerd like me (and face it, if you are reading this sentence you totally are) then you will want to play your movies on a big 4K TV with all the HDR, Dolby Vision and surround sound goodness. This means that you are going to need a fast enough connection to your local streaming device to stream large files (upwards of 70 Mbps a second for the meatiest 4K content) and a streaming device itself that can handle the most cutting edge audio and video codecs. In many cases WIFI is going to be less reliable than ethernet for these streams, so I recommend getting a very long ethernet cable and attaching it to your network switch or router and running it along the wall to your media console.

But what streaming device do you plug said cable into? Well, ask around and pretty much the only player in town is the Nvidia Shield TV Pro. At $200 this thing is really expensive for a glorified Fire Stick, but man does it deliver. I began this project thinking I could cut a corner and play my movies on the Plex app for the PS5 I already had sitting in my media console. At first things went well, but it soon became apparent that some video features like Dolby Vision were completely unsupported. The worst occurred when watching some action scenes on a beefier video codec: the entire screen would jitter and tear with horrible green artifacts. The only solution was to live transcode the footage to 1080p high, which completely defeated the purpose of storing the native files in the server!

Contrasting this experience, the Nvidia Shield TV Pro can play back every single file I have ever tried on it. Anything from DVD-quality MPEG all the way to the HVEC 4K files run with no issue. It can even process and play TRUEHD audio, which as I mentioned is completely incompatible with other players I tested. So, the final verdict here is if you want an uncompromised experience for local Plex streaming you will have to get the Shield Pro.

That covers the local network action. But what about streaming to devices outside your home network? Plex allows this, and as I previously explained the GPU in the server will help to transcode media on the fly, compressing it to a state where it can be streamed over the internet. If you want other people to have access to your library, you will have to grant them access by selecting the three dots next to your library name in the left-hand menu and clicking ‘Grant Access…” From here you can enter the email of a friend or family member, who will get an invite to create a Plex account and access your library.

Their names have been redacted for their protection (outed as a ‘friend’ of the guy who wrote this)

There are two things I’d like to touch on when discussing remote access: one is the strain that transcoding and serving video over the internet will put on your hardware, and the other is the ability to conduct group-watches. First, in regard to monitoring: Plex provides an activity dashboard which lets you monitor the total impact to your system for all users of your shared libraries. Here you can monitor your CPU usage, bandwidth, RAM, as well as the play history of users on the server. With my exact hardware configuration and with hardware GPU transcoding enabled, I saw somewhere around 10% CPU utilization for one external stream. When seven external users were streaming transcoded 1080p video, I saw CPU utilization somewhere between 60–70%. The GPU takes the brunt of the workload for these use cases, but unfortunately cannot be monitored in Plex. to check your GPU utilization while transcoding video, open the Shell in TrueNAS SCALE (explained in a previous section) and enter the command “nvidia-smi”. This will pull up a snapshot of GPU utilization and allow you to see how the GPU is handling the transcode task.

I will note here that once or twice in the many times I have streamed video externally, the GPU for one reason or another refused to transcode that video stream. In this case the CPU takes over with its integrated Intel graphics, and while the end result is not discernable to the end user this stress took over half of the CPU’s total utilization. It seemed to only happen with one or two random media files and I have not seen it again, so hopefully this is just an anomaly. When in doubt use the nvidia-smi command to check how hard the GPU is working.

Finally, to shout out the Watch Together feature in Plex: this is great when multiple users across different systems want to sync up and watch one of your files at the same time. To initiate a Watch Together instance, click on the three dots to the right of the edit button on any media’s page. Select ‘Watch Together…’ and select from the list of friends who have access to the library which the media is in. Once you have selected who you want, select the ‘invite’ button. Then have the invited users navigate to their Plex home tab, where the Watch Together film should appear. Once all users have started the film and it has buffered it will automatically begin. If any user pauses or buffers the stream will pause for everyone.

Conclusion

Well that was a lot of writing, way more than I intended, but hopefully something I wrote served you well. I don’t really have anything else to say… hopefully I didn’t forget anything. Well, in any case, happy viewing!

--

--