aboutsummaryrefslogtreecommitdiff
path: root/blog/2022-03-08-plex-migration.org
diff options
context:
space:
mode:
Diffstat (limited to 'blog/2022-03-08-plex-migration.org')
-rw-r--r--blog/2022-03-08-plex-migration.org361
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
-![Ubuntu Server Installation 01](https://img.cleberg.net/blog/20220308-plex-media-server-migration/ubuntu_server_installation_01.png)
+#+caption: Ubuntu Server Installation 01
+[[https://img.cleberg.net/blog/20220308-plex-media-server-migration/ubuntu_server_installation_01.png]]
-![Ubuntu Server Installation 02](https://img.cleberg.net/blog/20220308-plex-media-server-migration/ubuntu_server_installation_02.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.
-
-![Router port forwarding](https://img.cleberg.net/blog/20220308-plex-media-server-migration/port_forwarding.png)
-
----
-
-## 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
-![nvidia-smi](https://img.cleberg.net/blog/20220308-plex-media-server-migration/nvidia_smi.png)
+#+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:
-![Plex transcoding settings](https://img.cleberg.net/blog/20220308-plex-media-server-migration/plex_transcoding.png)
+#+caption: Plex transcoding settings
+[[https://img.cleberg.net/blog/20220308-plex-media-server-migration/plex_transcoding.png]]