As a long-time Plex Pass user I had become increasingly frustrated with three core issues:
- The abysmal Amazon FireStick App – namely the need to constantly switch off the ‘new’ player due to its inability to play certain content.
- The Docker containers insatiable appetite for memory, and its recent second course of /tmp storage to boot.
- Content, that I don’t want and isn’t young kid friendly, especially when I’m paying for the platform.
Couple the above with a couple of ‘epic’ failures in consuming synchronized content offline (imagine a 3 year old, getting onto an 11 hour flight unable to access *anything*)… it’s safe to say I was ready to move on to pastures new.
I’d come across Jellyfin 12+ months back, but has dismissed it because there was no FireStick App, and with a young family ease of use is a must. Well… all that changed at some point in the last year as there is now an ‘approved’ FireStick app. After a couple of months of use, I’m pleased to have made the move, experiencing only a couple of minor niggles.
I opted to deploy Jellyfin using Docker, so the steps below assume you are already running Docker CE on your host/ media server. I also chose to enable Hardware Accelerated Encoding, using VAAPI.
First, create required directories, note, you may want to adjust for your environment.
mkdir -p ~/jellyfin/config
mkdir -p ~/jellyfin/cache
mkdir -p ~/jellyfin/transcode
sudo chown -R 1000:44 ~/jellyfin/
Now create the docker-compose.yml:
vi ~/jellyfin/docker-compose.yml
Paste contents as below, ensure you update volumes to reflect locations of your media:
version: '3.2'
services:
prometheus:
user: 1000:44
image: jellyfin/jellyfin
container_name: jellyfin
network_mode: "host"
logging:
options:
max-size: "10m"
max-file: "5"
restart: unless-stopped
volumes:
- /mnt/media:/media:shared:ro
devices:
# VAAPI Devices
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
Note that user 1000:44 enables access to the VAAPI devices required for Hardware Accelerated Encoding.
You can now bring-up your Jellyfin environment:
sudo docker-compose up -d
Finally, browse to http://<server-name/IP>:8096 to access your Jellyfin instance.
You can enable Hardware Acceleration by browsing to Dashboard | Playback (tested on Intel QuickSync-enabled CPU):