diff options
Diffstat (limited to 'blog/2022-03-08-plex-migration.org')
-rw-r--r-- | blog/2022-03-08-plex-migration.org | 361 |
1 files changed, 199 insertions, 162 deletions
diff --git a/blog/2022-03-08-plex-migration.org b/blog/2022-03-08-plex-migration.org index 0921b88..5546942 100644 --- a/blog/2022-03-08-plex-migration.org +++ b/blog/2022-03-08-plex-migration.org @@ -1,233 +1,270 @@ -+++ -date = 2022-03-08 -title = "Migrating Plex to New Server (+ Nvidia Transcoding)" -description = "A quick instructional guide on how to migrate Plex Media Server to a new server, including servers with Nvidia GPUs." -draft = false -+++ - -## Migration Phases - -I recently decided to migrate my server from an old OptiPlex desktop machine to -a custom-built tower with better hardware in every category. In order to do -this, I would need to properly migrate a full Plex installation. - -The second part of this migration is that the new server uses an Nvidia GPU and -does not have any integrated graphics, which requires extra work for -installation, but provides much better hardware transcoding options for Plex. +#+title: Migrating Plex to New Server (+ Nvidia Transcoding) +#+date: 2022-03-08 + +** Migration Phases +:PROPERTIES: +:CUSTOM_ID: migration-phases +:END: +I recently decided to migrate my server from an old OptiPlex desktop +machine to a custom-built tower with better hardware in every category. +In order to do this, I would need to properly migrate a full Plex +installation. + +The second part of this migration is that the new server uses an Nvidia +GPU and does not have any integrated graphics, which requires extra work +for installation, but provides much better hardware transcoding options +for Plex. Therefore, I have broken this migration down into three phases: -1. [Configure the New Server](#phase-1-configure-the-new-server) -2. [Migrate Plex Data & Devices](#phase-2-migrate-plex-data-devices) -3. [Configure GPU Transcoding](#phase-3-configure-gpu-transcoding) - ---- +1. [[#phase-1-configure-the-new-server][Configure the New Server]] +2. [[#phase-2-migrate-plex-data-devices][Migrate Plex Data & Devices]] +3. [[#phase-3-configure-gpu-transcoding][Configure GPU Transcoding]] -## Phase 1: Configure the New Server - -### Choosing an OS +-------------- +** Phase 1: Configure the New Server +:PROPERTIES: +:CUSTOM_ID: phase-1-configure-the-new-server +:END: +*** Choosing an OS +:PROPERTIES: +:CUSTOM_ID: choosing-an-os +:END: In order to migrate Plex to my new server, I first needed to choose an -appropriate operating system (OS) and install it on the machine. Given that I -have encountered numerous issues installing other Linux distributions -properly with Nvidia graphics, I chose -[Ubuntu Server](https://ubuntu.com/download/server). - -The first step is to create a bootable USB with Ubuntu Server. This is easy with -[Etcher](https://www.balena.io/etcher/), an app that runs on many different -platforms. Just download the Ubuntu Server `.iso` image, launch Etcher, and -install the `.iso` on the USB. - -Once the USB is created, insert it into my server, reboot, and click `Esc` (or -any of the `F1-12` keys) until the BIOS menu appears. Finally, launch the USB -boot drive. - -### Booting with Nvidia - +appropriate operating system (OS) and install it on the machine. Given +that I have encountered numerous issues installing other Linux +distributions properly with Nvidia graphics, I chose +[[https://ubuntu.com/download/server][Ubuntu Server]]. + +The first step is to create a bootable USB with Ubuntu Server. This is +easy with [[https://www.balena.io/etcher/][Etcher]], an app that runs on +many different platforms. Just download the Ubuntu Server =.iso= image, +launch Etcher, and install the =.iso= on the USB. + +Once the USB is created, insert it into my server, reboot, and click +=Esc= (or any of the =F1-12= keys) until the BIOS menu appears. Finally, +launch the USB boot drive. + +*** Booting with Nvidia +:PROPERTIES: +:CUSTOM_ID: booting-with-nvidia +:END: In order to install Ubuntu Server with an Nvidia Graphics card (and no -integrated graphics on this device for some reason), you'll have to configure -the boot menu to allow different graphics drivers to be loaded. +integrated graphics on this device for some reason), you'll have to +configure the boot menu to allow different graphics drivers to be +loaded. -When booting from the USB, the machine will launch the initial installation -menu. From this menu, type `e` to view the default command options that come -with the device - it's a good idea to take a photo of this screen, so you can -enter these commands on the next screen (along with adding support for Nvidia). +When booting from the USB, the machine will launch the initial +installation menu. From this menu, type =e= to view the default command +options that come with the device - it's a good idea to take a photo of +this screen, so you can enter these commands on the next screen (along +with adding support for Nvidia). -Finally, type `Ctrl + C` to enter the command line. From this command line, -enter the commands found on the `e` screen. **Remember to add `nomodeset` to the -`linux ...` line so that your Nvidia device will display the installation -screens properly!** +Finally, type =Ctrl + C= to enter the command line. From this command +line, enter the commands found on the =e= screen. *Remember to add +=nomodeset= to the =linux ...= line so that your Nvidia device will +display the installation screens properly!* -Here's an example of the commands I pulled from the `e` screen and entered on -the command line. +Here's an example of the commands I pulled from the =e= screen and +entered on the command line. -```sh +#+begin_src sh setparams 'Install Ubuntu Server' setgfxpayload=keep linux /casper/vmlinuz quiet nomodeset --- initrd /casper/initrd boot -``` +#+end_src - +#+caption: Ubuntu Server Installation 01 +[[https://img.cleberg.net/blog/20220308-plex-media-server-migration/ubuntu_server_installation_01.png]] - +#+caption: Ubuntu Server Installation 02 +[[https://img.cleberg.net/blog/20220308-plex-media-server-migration/ubuntu_server_installation_02.png]] -Once the machine is rebooted, enter the `e` screen again and add `nomodeset` to -the `linux ...` line again and press `Ctrl + X` to save the boot options. +Once the machine is rebooted, enter the =e= screen again and add +=nomodeset= to the =linux ...= line again and press =Ctrl + X= to save +the boot options. -The machine is now fully installed and can properly display on an external -display using the Nvidia GPU. +The machine is now fully installed and can properly display on an +external display using the Nvidia GPU. Always remember to update and upgrade on a new installation: -```sh +#+begin_src sh sudo apt update; sudo apt upgrade -y; sudo apt autoremove -y -``` +#+end_src ---- - -## Phase 2: Migrate Plex Data & Devices +-------------- +** Phase 2: Migrate Plex Data & Devices +:PROPERTIES: +:CUSTOM_ID: phase-2-migrate-plex-data-devices +:END: This phase uses the great Plex article on migrations -([Move an Installation to Another System](https://support.plex.tv/articles/201370363-move-an-install-to-another-system/)) -and adds a bit more information to help with commands and context. - -### Terminology - -**Source:** The original server that is being replaced. -**Destination:** The new server. -**Client:** Any application that can be used to modify settings for both +([[https://support.plex.tv/articles/201370363-move-an-install-to-another-system/][Move +an Installation to Another System]]) and adds a bit more information to +help with commands and context. + +*** Terminology +:PROPERTIES: +:CUSTOM_ID: terminology +:END: +*Source:* The original server that is being replaced.\\ +*Destination:* The new server.\\ +*Client:* Any application that can be used to modify settings for both source/destination. -### Step 01: [Client] Update Settings - -Open up a Plex app and _disable_ the `Account` > `Library` > -`Empty trash automatically after every scan` preference for the source server. - -### Step 02: [Destination] Install Plex - -Open up the -[Plex Media Server download page](https://www.plex.tv/media-server-downloads/) -and copy the link for the appropriate platform. - -Execute the following commands on the destination server to install Plex: - -```sh +*** Step 01: [Client] Update Settings +:PROPERTIES: +:CUSTOM_ID: step-01-client-update-settings +:END: +Open up a Plex app and /disable/ the =Account= > =Library= > +=Empty trash automatically after every scan= preference for the source +server. + +*** Step 02: [Destination] Install Plex +:PROPERTIES: +:CUSTOM_ID: step-02-destination-install-plex +:END: +Open up the [[https://www.plex.tv/media-server-downloads/][Plex Media +Server download page]] and copy the link for the appropriate platform. + +Execute the following commands on the destination server to install +Plex: + +#+begin_src sh wget <url> sudo dpkg -i <filename> sudo systemctl stop plexmediaserver.service -``` - -### Step 03: [Source] Stop Plex & Migrate Data +#+end_src -First, stop the Plex service so that no data is created or modified during the -migration. +*** Step 03: [Source] Stop Plex & Migrate Data +:PROPERTIES: +:CUSTOM_ID: step-03-source-stop-plex-migrate-data +:END: +First, stop the Plex service so that no data is created or modified +during the migration. -```sh +#+begin_src sh sudo systemctl stop plexmediaserver.service -``` +#+end_src -Next, copy the data to the new server. To find where the Plex data directory is -located, Plex has another excellent article available: -[Where is the Plex Media Server data directory located?](https://support.plex.tv/articles/202915258-where-is-the-plex-media-server-data-directory-located/). +Next, copy the data to the new server. To find where the Plex data +directory is located, Plex has another excellent article available: +[[https://support.plex.tv/articles/202915258-where-is-the-plex-media-server-data-directory-located/][Where +is the Plex Media Server data directory located?]]. -There are many ways to copy the data to the new server and will largely depend -on the size of the folder being copied. Personally, my data folder was ~23GB and -I opted to simply use the `scp` command to copy the files over SSH. +There are many ways to copy the data to the new server and will largely +depend on the size of the folder being copied. Personally, my data +folder was ~23GB and I opted to simply use the =scp= command to copy the +files over SSH. -This process was throttled by the old server's slow HDD and ports and took -approximately 90 minutes to complete. In comparison, moving the data from the -new server's `home/user/` directory to the `/var/.../Plex Media Server` -directory took 2-3 minutes. +This process was throttled by the old server's slow HDD and ports and +took approximately 90 minutes to complete. In comparison, moving the +data from the new server's =home/user/= directory to the +=/var/.../Plex Media Server= directory took 2-3 minutes. -```sh +#+begin_src sh scp -r "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server" your_user@xxx.xxx.xxx.xxx:"'/path/to/destination/'" -``` +#+end_src -### Step 04: [Destination] Update File Permissions +*** Step 04: [Destination] Update File Permissions +:PROPERTIES: +:CUSTOM_ID: step-04-destination-update-file-permissions +:END: +In case you move the data directory to a common area on the new server, +it will have to be moved to the proper location before Plex can function +properly: -In case you move the data directory to a common area on the new server, it will -have to be moved to the proper location before Plex can function properly: - -```sh +#+begin_src sh mv "Plex Media Server" /var/lib/plexmediaserver/Library/Application Support/ -``` +#+end_src -To ensure permissions were retained properly, the server will need to show that -all files and folders in the data directory are owned by `plex:plex` (or -whichever user is running the Plex application). +To ensure permissions were retained properly, the server will need to +show that all files and folders in the data directory are owned by +=plex:plex= (or whichever user is running the Plex application). -```sh +#+begin_src sh sudo chown -R plex:plex "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server" -``` +#+end_src Finally, start the service and check the status. -```sh +#+begin_src sh sudo systemctl start plexmediaserver.service sudo systemctl status plexmediaserver.service -``` - -### Step 05: [Client] Update Libraries & Metadata - -The first step - now that the new server is up and running - is to sign out of -the client and sign back in. Once this is done, update any library locations, if -necessary. This was unnecessary in my case since I simply moved my storage -drives from the source server to the destination server. +#+end_src + +*** Step 05: [Client] Update Libraries & Metadata +:PROPERTIES: +:CUSTOM_ID: step-05-client-update-libraries-metadata +:END: +The first step - now that the new server is up and running - is to sign +out of the client and sign back in. Once this is done, update any +library locations, if necessary. This was unnecessary in my case since I +simply moved my storage drives from the source server to the destination +server. Next, perform the following actions in the client: -1. On the left sidebar, click `More` > Three-Dot Menu > `Scan Library Files` -2. _Enable_ the `Account` > `Library` > - `Empty trash automatically after every scan` preference for the source - server. -3. On the left sidebar, click `More` > Three-Dot Menu > `Manage Server` > - `Empty Trash` -4. On the left sidebar, click `More` > Three-Dot Menu > `Manage Server` > - `Clean Bundles` -5. On the left sidebar, click `More` > Three-Dot Menu > `Manage Server` > - `Optimize Database` - -Finally, double-check the Remote Access settings to make sure no changes have -caused issues with accessing the server from outside the network. - -In my case, I use a single port forwarding rule in my router and needed to -update the Local LAN IP Address to the new server IP address. - - - ---- - -## Phase 3: Configure GPU Transcoding - -The final piece to the migration is enabling hardware transcoding so that Plex -can fully utilize the new Nvidia GPU available in the server. The first step is -to install Nvidia graphics drivers. This process may take a few minutes, but the -commands are pretty simple: - -```sh +1. On the left sidebar, click =More= > Three-Dot Menu > + =Scan Library Files= +2. /Enable/ the =Account= > =Library= > + =Empty trash automatically after every scan= preference for the + source server. +3. On the left sidebar, click =More= > Three-Dot Menu > =Manage Server= + > =Empty Trash= +4. On the left sidebar, click =More= > Three-Dot Menu > =Manage Server= + > =Clean Bundles= +5. On the left sidebar, click =More= > Three-Dot Menu > =Manage Server= + > =Optimize Database= + +Finally, double-check the Remote Access settings to make sure no changes +have caused issues with accessing the server from outside the network. + +In my case, I use a single port forwarding rule in my router and needed +to update the Local LAN IP Address to the new server IP address. + +#+caption: Router port forwarding +[[https://img.cleberg.net/blog/20220308-plex-media-server-migration/port_forwarding.png]] + +-------------- + +** Phase 3: Configure GPU Transcoding +:PROPERTIES: +:CUSTOM_ID: phase-3-configure-gpu-transcoding +:END: +The final piece to the migration is enabling hardware transcoding so +that Plex can fully utilize the new Nvidia GPU available in the server. +The first step is to install Nvidia graphics drivers. This process may +take a few minutes, but the commands are pretty simple: + +#+begin_src sh sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update sudo apt-get install ubuntu-drivers-common sudo ubuntu-drivers autoinstall -``` +#+end_src Finally, reboot so that the changes are loaded: -```sh +#+begin_src sh sudo reboot now -``` +#+end_src To ensure that the Nvidia graphics drivers are working properly, run the following command to view the available GPUs, statistics, and processes: -```sh +#+begin_src sh sudo nvidia-smi -``` +#+end_src - +#+caption: nvidia-smi +[[https://img.cleberg.net/blog/20220308-plex-media-server-migration/nvidia_smi.png]] Finally, enable hardware transcoding settings in the Plex application: - +#+caption: Plex transcoding settings +[[https://img.cleberg.net/blog/20220308-plex-media-server-migration/plex_transcoding.png]] |