Media Servers

Media Server information and related Media Server Applications

About Media Servers

Information regarding media servers.

About Media Servers

Choosing a Media Server

Choosing to run a a home media server can be a fun and educational hobby while also providing a central source to store, control and serve all your media.

Most people want a media server to consolidate all their media content and access that content from one unified source displayed in an attractive menu that is easy to navigate and use. There are a number of excellent free and open source media servers available that do just that as well as paid, proprietary servers and appliances. It just depends on what you are trying to achieve as an end result that should drive you to one or another.

When selecting which media server software to invest your time (and sometimes $$) you should do so by asking yourself (and answering) the following questions.

The answers to these questions will help you decide which media server type, software and hardware will best suit your needs.

About Media Servers

The Most Popular Media Servers

A Feature Comparison

The media server features we will compare are:

Media Server
Server Platforms
Client Platforms
Hardware Transcoding
Local Access without Internet

Music / Sync

Photo / eBooks

Live TV / DVR

 

Subscription

Plex

Linux, Windows, Docker, NAS, Nvidia Shield,

Western Digital My Passport Wireless Pro,

NETGEAR X10 router

Android, IOS, Web, Roku, Amazon Fire TV, Apple TV,

Android TV,

Chromecast,LG,

Samsung,

VIDAA,

Vizio,

and Hisense

Smart TVs

Yes1
No2
Yes / Yes
Yes / No

Yes / Yes1

 

Free / Paid

 

JellyFin
Linux, Windows, MacOS, Docker
Android, IOS, Android TV, Roku, Apple TV, WebOS (LG Smart TVs)
Yes
Yes
Yes / Yes
Yes
Yes
Free
Kodi
Windows, macOS, Linux, Android, iOS, Raspberry Pi self
No
Yes
Yes / No
Yes / Yes3
Yes / Yes
Free
Emby
Windows, macOS, Linux, Docker, NAS

PC or mobile browser has full playback capability.


 

The following clients are supported with a paid subscription:Windows, Linux, MacOS, IOS, Android, Fire TV, Android TV, Roku, Apple TV, LG and Samsung Smart TVs, XBox, PS4

Yes1
Yes
Yes / Yes1
Yes / Yes
Yes1 / Yes1
Free / Paid
Media Portal
Windows
 Self, Android, IOS
Yes3
Yes
Yes / No
Yes / No
Yes / Yes
Free
Universal Media Server

Windows, macOS, Linux,

Docker

It is able to stream videos, audio and images to any DLNA-capable device

Yes
Yes
Yes / No
Yes / No
No / No
Free
OSMC

Windows, MacOS, Linux, Raspberry Pi, and Vero (OSMC's flagship appliance)

OSMC did support Apple TV but it will no longer received any updates as it has been deprecated.

self
No
Yes
Yes / No
Yes / No
No / No
Free

A paid subscription is required for this feature

Local access to your Plex server without Internet is possible by activating the internal DLNA server. This must be done while you have Internet access as it requires you to sign-in to your account to change the configuration. You won't be accessing your Plex server via the standard UI however. You will need to have a DLNA client to do that. Roku has a DLNA app in its app store and there are several available for the PC, such as VLC.

3 Supports this feature if using an add-on or plug-in

 

About Media Servers

Complimentary Applications for Media Servers

Complimentary Applications for Media Servers

There are number of complimentary software packages, applications and tools available for various media servers. Some are designed for content management such as transcoding digital video formats, naming content, managing subtitles and automating content acquisition while others provide statistical information, just to name a few.

You will inevitably find you have a need for some of these applications and tools. I use a number of them and those I use are detailed in the Content Management book on this site. 

Content Management

Various software applications I use to manage or automate media server content

Content Management

Tautulli

Screenshot from 2023-03-29 22-57-35.png

Tautulli is a 3rd party application that you can run alongside your Plex Media Server to monitor activity and track various statistics. Most importantly, these statistics include what has been watched, who watched it, when and where they watched it, and how it was watched. All statistics are presented in a nice and clean interface with many tables and graphs.

Screenshot from 2023-03-29 22-59-09.png


Content Management

Sonarr

th-3083518630.jpg Screenshot from 2023-03-30 02-42-41.png

Sonarr is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.

Screenshot from 2023-03-30 03-36-49.png


Installation

The Sonarr team does not offer an official Docker image. However, a number of third parties have created and maintain their own. These instructions provide generic guidance that should apply to any Sonarr Docker image. 

I use a docker image from linuxserver.io to install Sonarr.  

If you prefer to install Sonarr via another method go to Sonarr's official downloads page.

Running Sonarr as a container

Basic examples for getting this image running as a container

Docker Compose
---
version: "2"
services:
  sonarr:
    image: linuxserver/sonarr:3.0.10
    container_name: sonarr
    restart: unless-stopped
    environment:
      - TZ=Europe/London # Specify a timezone to use
      - PUID=1000 # User ID to run as
      - PGID=1000 # Group ID to run as
    volumes:
      - /host/path/to/data:/data # Location of all your media
      - /host/path/to/config:/config # Contains all relevant configuration files.
    ports:
      - 8989:8989/tcp # Web UI
CLI
docker create \
  --name=sonarr \
  -e TZ=Europe/London `# Specify a timezone to use` \
  -e PUID=1000 `# User ID to run as` \
  -e PGID=1000 `# Group ID to run as` \
  -v /host/path/to/data:/data `# Location of all your media` \
  -v /host/path/to/config:/config `# Contains all relevant configuration files.` \
  -p 8989:8989/tcp `# Web UI` \
  --restart unless-stopped \
  linuxserver/sonarr:3.0.10

Avoid common pitfalls

Volumes and Paths

There are two common problems with Docker volumes: Paths that differ between the Sonarr and download client container and paths that prevent fast moves and hard links.
The first is a problem because the download client will report a download's path as /torrents/My.Show.S01E01/, but in the Sonarr container that might be at /downloads/My.Show.S01E01/. The second is a performance issue and causes problems for seeding torrents. Both problems can be solved with well planned, consistent paths.

Most Docker images suggest paths like /tv and /downloads. This causes slow moves and doesn't allow hard links because they are considered two different file systems inside the container. Some also recommend paths for the download client container that are different from the Sonarr container, like /torrents.
The best solution is to use a single, common volume inside the containers, such as /data. Your Series would be in /data/tv, torrents in /data/downloads/torrents and/or usenet downloads in /data/downloads/usenet.

If this advice is not followed, you may have to configure a Remote Path Mapping in the Sonarr web UI (Settings › Download Clients).

Ownership and Permissions

Permissions and ownership of files is one of the most common problems for Sonarr users, both inside and outside Docker. Most images have environment variables that can be used to override the default user, group and umask, you should decide this before setting up all of your containers. The recommendation is to use a common group for all related containers so that each container can use the shared group permissions to read and write files on the mounted volumes.
Keep in mind that Sonarr will need read and write to the download folders as well as the final folders.

For a more detailed explanation of these issues, see The Best Docker Setup and Docker Guide wiki article.

Install Sonarr

To install and use these Docker images, you'll need to keep the above in mind while following their documentation. There are many ways to manage Docker images and containers too, so installation and maintenance of them will depend on the route you choose.

Content Management

Radarr

th-3793528904.jpeg

Radarr is a movie collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new movies and will interface with clients and indexers to grab, sort, and rename them. It can also be configured to automatically upgrade the quality of existing files in the library when a better quality format becomes available. Note that only one type of a given movie is supported. If you want both an 4k version and 1080p version of a given movie you will need multiple instances.

Screenshot from 2023-03-30 03-31-20.png


Installation

The Radarr team does not offer an official Docker image. However, a number of third parties have created and maintain their own. These instructions provide generic guidance that should apply to any Radarr Docker image. 

I use a docker image from linuxserver.io to install Radarr.  

If you prefer to install Radarr via another method go to Radarr's official downloads page.

Running Radarr as a container

Basic examples for getting this image running as a container

Docker Compose
---
version: "2"
services:
  radarr:
    image: linuxserver/radarr:4.3.2
    container_name: radarr
    restart: unless-stopped
    environment:
      - UMASK_SET=022 # control permissions of files and directories created by Radarr
      - TZ=Europe/London # Specify a timezone to use EG Europe/London, this is required for Radarr
      - PUID=1000 # for UserID
      - PGID=1000 # for GroupID
    volumes:
      - /host/path/to/movies:/movies # Location of Movie library on disk (See note in Application setup)
      - /host/path/to/downloads:/downloads # Location of download managers output directory (See note in Application setup)
      - /host/path/to/config:/config # Database and Radarr configs
    ports:
      - 7878:7878/tcp # The port for the Radarr webinterface
CLI
docker create \
  --name=radarr \
  -e UMASK_SET=022 `# control permissions of files and directories created by Radarr` \
  -e TZ=Europe/London `# Specify a timezone to use EG Europe/London, this is required for Radarr` \
  -e PUID=1000 `# for UserID` \
  -e PGID=1000 `# for GroupID` \
  -v /host/path/to/movies:/movies `# Location of Movie library on disk (See note in Application setup)` \
  -v /host/path/to/downloads:/downloads `# Location of download managers output directory (See note in Application setup)` \
  -v /host/path/to/config:/config `# Database and Radarr configs` \
  -p 7878:7878/tcp `# The port for the Radarr webinterface` \
  --restart unless-stopped \
  linuxserver/radarr:4.3.2

Avoid common pitfalls

Volumes and Paths

There are two common problems with Docker volumes: Paths that differ between the Radarr and download client container and paths that prevent fast moves and hard links.
The first is a problem because the download client will report a download's path as /torrents/My.Movie.2018/, but in the Radarr container that might be at /downloads/My.Movie.2018/. The second is a performance issue and causes problems for seeding torrents. Both problems can be solved with well planned, consistent paths.

Most Docker images suggest paths like /movies and /downloads. This causes slow moves and doesn't allow hard links because they are considered two different file systems inside the container. Some also recommend paths for the download client container that are different from the Radarr container, like /torrents.
The best solution is to use a single, common volume inside the containers, such as /data. Your Movies would be in /data/Movies, torrents in /data/downloads/torrents and/or usenet downloads in /data/downloads/usenet.

If this advice is not followed, you may have to configure a Remote Path Mapping in the Radarr web UI (Settings › Download Clients).

Ownership and Permissions

Permissions and ownership of files is one of the most common problems for Radarr users, both inside and outside Docker. Most images have environment variables that can be used to override the default user, group and umask, you should decide this before setting up all of your containers. The recommendation is to use a common group for all related containers so that each container can use the shared group permissions to read and write files on the mounted volumes.
Keep in mind that Radarr will need read and write to the download folders as well as the final folders.

Install Radarr

To install and use these Docker images, you'll need to keep the above in mind while following their documentation. There are many ways to manage Docker images and containers too, so installation and maintenance of them will depend on the route you choose.

Content Management

Prowlarr

th-1234011516.jpg

Prowlarr is an indexer manager/proxy built on the popular *arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports management of both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Lidarr, Mylar3, Radarr, Readarr, and Sonarr offering complete management of your indexers with no per app Indexer setup required.

Screenshot from 2023-03-30 03-40-28.png


Content Management

Lidarr

th-1405150132.jpg

Lidarr

Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new albums from your favorite artists and will interface with clients and indexers to grab, sort, and rename them. It can also be configured to automatically upgrade the quality of existing files in the library when a better quality format becomes available.

lidarr_715109_full.jpeg


Installation

The Lidarr team does not offer an official Docker image. However, a number of third parties have created and maintain their own. These instructions provide generic guidance that should apply to any Lidarr Docker image. 

I use a docker image from linuxserver.io to install Lidarr.  

If you prefer to install Lidarr via another method go to Lidarr's official downloads page.

Running Lidarr as a container

Basic examples for getting this image running as a container

Docker Compose
---
version: "2"
services:
  lidarr:
    image: linuxserver/lidarr:1.0.2
    container_name: lidarr
    restart: no
CLI
docker create \
  --name=lidarr \  --restart no \
  linuxserver/lidarr:1.0.2

Avoid common pitfalls

Volumes and Paths

There are two common problems with Docker volumes: Paths that differ between the Lidarr and download client container and paths that prevent fast moves and hard links.
The first is a problem because the download client will report a download's path as /torrents/My.Music.2018/, but in the Lidarr container that might be at /downloads/My.Music.2018/. The second is a performance issue and causes problems for seeding torrents. Both problems can be solved with well planned, consistent paths.

Most Docker images suggest paths like /musics and /downloads. This causes slow moves and doesn't allow hard links because they are considered two different file systems inside the container. Some also recommend paths for the download client container that are different from the Lidarr container, like /torrents.
The best solution is to use a single, common volume inside the containers, such as /data. Your Musics would be in /data/Musics, torrents in /data/downloads/torrents and/or usenet downloads in /data/downloads/usenet.

If this advice is not followed, you may have to configure a Remote Path Mapping in the Lidarr web UI (Settings › Download Clients).

Ownership and Permissions

Permissions and ownership of files is one of the most common problems for Lidarr users, both inside and outside Docker. Most images have environment variables that can be used to override the default user, group and umask, you should decide this before setting up all of your containers. The recommendation is to use a common group for all related containers so that each container can use the shared group permissions to read and write files on the mounted volumes.
Keep in mind that Lidarr will need read and write to the download folders as well as the final folders.

 Install Lidarr

To install and use these Docker images, you'll need to keep the above in mind while following their documentation. There are many ways to manage Docker images and containers too, so installation and maintenance of them will depend on the route you choose.

Content Management

Overseerr

Screenshot from 2023-03-30 04-04-17.png

Overseerr is a free and open source software application for managing requests for your media library. It integrates with your existing services, such as Sonarr, Radarr, and Plex.

It provides your users with a way to make requests for your media server and automatically (or with your approval) sends the request to Sonarr or Radarr.

preview.jpg


Installation

You can install Overseerr on various platforms. I recommend the docker container for installation. If you need another installation method they can be found here:

Overseer Installations

Docker Compose
---
version: '3'

services:
  overseerr:
    image: sctx/overseerr:latest
    container_name: overseerr
    environment:
      - LOG_LEVEL=debug
      - TZ=Asia/Tokyo
      - PORT=5055 #optional
    ports:
      - 5055:5055
    volumes:
      - /path/to/appdata/config:/app/config
    restart: unless-stopped

Be sure to replace /path/to/appdata/config in the examples with a valid host directory path. If this volume mount is not configured correctly, your Overseerr settings/data will not be persisted when the container is recreated (e.g., when updating the image or rebooting your machine).

The TZ environment variable value should also be set to the TZ database name of your timezone!

CLI
docker run -d \
  --name overseerr \
  -e LOG_LEVEL=debug \
  -e TZ=Asia/Tokyo \
  -e PORT=5055 `#optional` \
  -p 5055:5055 \
  -v /path/to/appdata/config:/app/config \
  --restart unless-stopped \
  sctx/overseerr

To run the container as a specific user/group, you may optionally add --user=[ user | user:group | uid | uid:gid | user:gid | uid:group ] to the above command.

Updating

Stop and remove the existing container:

docker stop overseerr && docker rm overseerr

Pull the latest image:

docker pull sctx/overseerr

Finally, run the container with the same parameters originally used to create the container:

docker run -d ...

You may alternatively use a third-party updating mechanism, such as Watchtower or Ouroboros to keep Overseerr up-to-date automatically.

Content Management

Bazarr

Bazarr.png

Bazarr is a companion application to Sonarr and Radarr. It manages and downloads subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you.

Be aware that Bazarr doesn't scan disk to detect series and movies: It only takes care of the series and movies that are indexed in Sonarr and Radarr.

bazarr-screenshot-115769544.png


Installation

There are several platforms on which you can install Bazarr. This install is focused on the docker container method of installation since that is my primary way to handle most server applications.

If you do not want to install via a container, the other installation methods for Bazarr can be found on the official Bazarr wiki.

Running Bazarr as a container

Basic examples for getting this image running as a container. The image I am using here is maintained by linuxserver.io

You CANNOT store your config directory over an NFS share as it is unsupported by SQLITE. You will receive a locked database error.

Docker Compose
---
version: "2"
services:
  bazarr:
    image: linuxserver/bazarr:1.2.0
    container_name: bazarr
    restart: unless-stopped
    environment:
      - UMASK_SET # Control permissions of files and directories created by Bazarr
      - TZ # Specify a timezone to use EG Europe/London.
      - PUID # ID of user to take ownership of application/files
      - PGID # GID of user to take ownership of application/files
    volumes:
      - /host/path/to/tv:/tv # Location of your TV Shows
      - /host/path/to/movies:/movies # Location of your movies
      - /host/path/to/config:/config # Bazarr data
    ports:
      - 6767:6767/tcp # Allows HTTP access to the internal webserver.
CLI
docker create \
  --name=bazarr \
  -e UMASK_SET `# Control permissions of files and directories created by Bazarr` \
  -e TZ `# Specify a timezone to use EG Europe/London.` \
  -e PUID `# ID of user to take ownership of application/files` \
  -e PGID `# GID of user to take ownership of application/files` \
  -v /host/path/to/tv:/tv `# Location of your TV Shows` \
  -v /host/path/to/movies:/movies `# Location of your movies` \
  -v /host/path/to/config:/config `# Bazarr data` \
  -p 6767:6767/tcp `# Allows HTTP access to the internal webserver.` \
  --restart unless-stopped \
  linuxserver/bazarr:1.2.0

Plex

plexbanner.jpeg

Plex orginally was a Media Server that made it possible to stream your personal media remotely. While it still provides that service, it has evolved, for better or worse, into a streaming platform of its own. Something akin to NetFlix or Hulu with native ad supported offerings. 

If you have a collection of media, Plex enables you to stream all that stuff from a computer or server onto your TV or smartphone. And while you can use Plex for free, a lot of its best features, especially media server related features, require a paid subscription to Plex Pass. 

Screenshot from 2023-03-30 02-17-45.png

On a personal note, I don't really like "sharing" my media server user interface (UI) with content from another source, even if it is Plex itself. Granted Plex as a media server is excellent, but there are a number of issues starting to pile up since they decided to become a streaming platform themselves.

There are a number of pros and cons for Plex as it is today. Here is my  list:

Plex Pros
Plex Cons
Supports a wide variety of server and client platforms and devices.
Extremely limited UI customization. User interfaces can vary greatly from one platform to another.
Hardware transcoding is excellent

Limited ability to access your media locally from your Plex server if your Internet is down. This is due to Plex's cloud authentication. You have to be able to sign-in to Plex via the Internet to access your local server.

 

DLNA is Plex's solution to this, but it is a horrible experience as you must rely upon 3rd party client side DLNA apps. Roku's DLNA client sucks, for example.

Efficient use and decent monitoring of device resources
No support for eBooks or audio books
Loads of community support
Most of the popular media server specific features, such as hardware transcoding, downloads, mobile sync, DVR recording, music lyrics, skipping intros and credits, custom sharing restrictions and bandwidth and transcoding limits require a paid subscription or a lifetime membership.
Supports Live TV and DVR options (we are talking locally, not Plex's own offerings)

Android and IOS mobile apps require a fee

Very good database management and backup options
No ability to grant friends access to your local Live TV unless you make them part of your Home account (which lists them with your home users every time you login)
Regular updates and patches

User management is a pain. Used to be able to go to an intuitive user menu and make changes to any user, friend or home user. Now you have to go to two menus, Plex Home & Manage Library Access to manage users.

 

You used to see your users full email address as their username on your server. Now it is some truncated semi-readable name. You have no ability to change the name of your user's accounts to something human friendly.

If you use Tautulli you can change those truncated email/usernames there, but it won't show up in Plex that way.


New libraries on your Plex server show up at the bottom of your user's menus. Requiring them to re-pin and change the order of their menus anytime there's a library addition or change.

 

For example, if I add a new library (or change the name of an existing library) to my Plex server and grant users access to it, they won't necessarily see it without pinning it to their menu (which means they probably won't ever know it's there).

 

If they do know about it and go looking for it; it will be at the bottom of the list instead of where it ought to be (with the other libraries from my server). 

After paying for a Plex Pass lifetime subscription years ago, I find I don't really care for the direction Plex has taken. With little or no say in how my media server is used by Plex, I am actively seeking a replacement. So far, JellyFin is in the lead as a replacement for Plex. 

With that said, if you want an alternative or supplemental streaming service, Plex has an attractive list of free offerings. However, if you want a Home Theater media server or a media server you can completely control and  share your libraries with friends and family, you may want to look elsewhere. 


Installation

You can find all the installation instructions and downloads for Plex here:

Plex Downloads

Plex Official Docker Installation

Plex Media Server Installation Guide

Jellyfin

th-3483303953.jpeg

Jellyfin is the volunteer-built media solution that puts you in control of your media. Stream to any device from your own server, with no strings attached. Your media, your server, your way.

Jellyfin enables you to collect, manage, and stream your media. Run the Jellyfin server on your system and gain access to the leading free-software entertainment system, bells and whistles included.

Screenshot from 2023-03-30 02-34-36.png

Jellyfin is the "new kid on the block" as it is the newest in a long line of free and open source media servers.

Jellyfin's predecessors have either become defunct, lost popular support or upon becoming successful switched to a "pay" platform (I'm specifically thinking of Emby for that last one).

I am hoping Jellyfin becomes the Ubuntu of the media server world.

While it still has a way to go for me to cut the Plex cord, it has made great strides in the past couple of years. Thanks to a growing skilled community of supporters who believe you can have a great self hosted and self controlled free and open source media server at home.

There are a number of features and issues Jellyfin needs to implement and correct to become the best competition to the likes of Plex and Emby.

In no particular order; here are my thoughts on the most important features (to me) of Jellyfin: