Below you will find pages that utilize the taxonomy term “Docker”
Migrate Plex From VM to Docker
Time to Deprecate Plex VM
I’ve been running Plex since 2017 and for all this time it has been installed in an Ubuntu Virtual Machine via a Deb Package. This has been extremely reliable and I’ve been able to upgrade the underlying Ubuntu distribution and Plex versions without issue.
The basic Virtual Machine has remained relatively unchanged over time with the following specs:
- 8 vCPU (8 CPU cores given to Virtual Machine)
- 8 GB virtual Memory
- 30 GB virtual Storage Disk (4 Disk ZFS RAID 10 SSD array)
- Media mounted via NFS (was SMB prior to Windows 2012 R2 File Server decommission) to HDD NAS (4 Disk Btrfs RAID 6 array)
As the underlying Virtual Machine host has lots of CPU cores available I have never added a GPU for Transcoding, opting to just keep adding CPU cores as required.
Npm Broke Arm64 Pi Garage Builds
I know this sounds crazy right? Lets rewind a bit so we can try and understand why.
In a previous post Material 3 + Flutter 3.16.0 Broke Pi Garage Theme I stated that you should pin core dependencies. Apart from the Flutter version there was another place that I did not pin dependencies specifically enough. This was in the Dockerfile. Here I has specified the node version as below.
FROM node:18
As you can see although this would limit the Node version to 18 this would allow anything from 18.0.0 through to 18.100.0. Something very interesting happened with version 18.19.0. In the Release Notes one of the first things mentioned is that npm 10 has been backported and included. This like the Flutter + Material 3 issue linked above caught me by surprise.
Pi Garage Deployment
The next decision to make was how to deploy the backend application. I had many different ways that I could release the application. However there were some key considerations to make.
- Ease of deployment (especially for target audience)
- Versioned releases
- Ease of rollback?
This lead me to consider the following.
NPM Package
As the backend is built in Node.JS it would be easy to just push the built packages to npm. Although this would get versioning and rollback I thought that this would be a pretty 💩 experience to deploy and run it.