Docker Plex & Usenet Media Server
docker-based plex & usenet media server using custom subdomains with tls
Motivation
- host each service as a subdomain of a personal domain over https
- run public maintained images with no modifications
- keep source repo small (2 required files)
- require minimal configuration and setup
Features
- Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server.
- NZBGet is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources.
- Sonarr (formerly NZBdrone) 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.
- Radarr - A fork of Sonarr to work with movies à la Couchpotato.
- NZBHydra 2 is a meta search application for NZB indexers, the "spiritual successor" to NZBmegasearcH, and an evolution of the original application NZBHydra . It provides easy access to a number of raw and newznab based indexers.
- Traefik is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy.
Requirements
- dedicated server or PC with plenty of storage
- windows or linux x86/x64 os (not ARM)
- personal top-level domain with configurable sub-domains (eg. plex.mydomain.com)
- cloudflare or a similar supported ACME provider
ACME & DNS
Login to your DNS provider (cloudflare in my case), select your domain, and add the following DNS Records pointing to your server public IP.
Type | Name | IPv4 address | TTL |
---|---|---|---|
A |
plex |
{server-public-ip} |
Auto |
A |
nzbget |
{server-public-ip} |
Auto |
A |
sonarr |
{server-public-ip} |
Auto |
A |
radarr |
{server-public-ip} |
Auto |
A |
hydra |
{server-public-ip} |
Auto |
Installation
-
install docker
-
install docker-compose
-
clone mediaserver repo
git clone https://github.com/klutchell/mediaserver.git
Configuration
Copy env.sample
to .env
and fill all required fields
cp env.sample .env && nano .env
Optionally install pre-commit hook to keep env.sample
up-to-date
ln -s ../../pre-commit .git/hooks/pre-commit
Deployment
Pull and deploy containers with docker-compose
docker-compose pull
docker-compose up -d --remove-orphans
Usage
- Log in to plex and claim server to your plex.tv account
- Log in to hydra, sonarr, radarr, and nzbget and enable authentication
Author
Kyle Harding kylemharding@gmail.com
Acknowledgments
I didn't create any of these docker images myself, so credit goes to the maintainers, and the app creators.