/mediaserver

docker-based plex & usenet media server using custom subdomains with tls

Primary LanguageShellMIT LicenseMIT

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

  1. install docker

  2. install docker-compose

  3. 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.

References

License

MIT License