Skip to content

ryanellis/docker-home-services-host

 
 

Repository files navigation

Docker Home Services Host

Disclaimer

This project is not in any way designed to be a simple one-click-to-deploy project that let's you chose which software you want to run and can be tailored to your needs. It's my personal media services host config that I use at home in order to retrieve media, serve them over the network and host a Nextcloud instance.

If you're really looking for a complete, easy to configure and to use, media server deployment tool take a look at Cloudbox which uses Ansible and Docker to deploy the same services I use (and much more).

Because it's design is so heavily influenced by my personal tastes, you may prefer to just learn from it and take bits and pieces here and there rather than clone and run the whole thing as is.

Either way, I still try to be as concise as possible so that you can pretty much start from scratch with just this project and if someone happens to have a similar setup as me they can get up and running pretty easily just by reading this README.

About the project

It leverages Docker and Docker Compose in order to bring up/host the services. The services that are hosted on the server are:

  • Træfik: A reverse-proxy that is very easy to configure and can automatically obtain Let's Encrypt certificates.
  • Transmission: An easy to use BitTorrent client to downloads files using the BitTorrent protocol.
  • SABnzbd: An easy to use binary newsreader to download files using the Usenet protocol.
  • Jackett: A proxy server that helps interface PVR programs (Radarr, Sonarr, Lidarr etc.) and your BitTorrent trackers.
  • NZBHydra 2: A meta search software for NZB indexers, you can configure and then search all your NZB indexers in one place.
  • Sonarr, Radarr and Lidarr: PVR programs for managing TV Shows, Movies and Music respectively. They will automatically monitor, grab and send the wanted file to a specified binary newsreader or BitTorrent downloader then rename and organize the resulting download according to your own preferences.
  • Bazarr: Companion application to Sonarr and Radarr, it manages and downloads subtitles based on your requirements.
  • LazyLibrarian: Ebook library downloader and manager, works like Sonarr/Radarr/Lidarr.
  • Ombi: Give your users the ability to request missing media content from your media collection.
  • Plex Media Server: Plex is a centralised media server solution that let you organize your personal video, music as well as photo collections and streams them to all of your devices with a consistent interface.
  • Tautulli: Tautulli is a 3rd party program that runs alongside a Plex Media Server instance to monitor it's activity and track various statistics that Plex doesn't show in it's own interface.
  • Calibre-Web: Calibre-Web is a web app providing a clean interface for browsing, reading and downloading ebooks using an existing Calibre database.
  • Nextcloud: It's a suite of client-server software for creating and using file hosting services. It is functionally similar to Google Drive, although Nextcloud is free and open-source, allowing anyone to self-host an instance.
  • Collabora Online: A powerfull web-based LibreOffice suite that features collaborative editing and which can be integrated in Nextcloud.

Roadmap

Services to consider:

Project:

  • Learn and use Ansible to replace docker-compose and all the setup scripts

Context of my setup

I have a separate server running FreeNAS that host all my files. That's why I'm mounting datasets with NFS on the docker host. My FreeNAS server is also configured to pull my container config files from the docker host with rsync once per hour.

Prerequisites

  • Fedora Server 31 (other Linux distributions are possible but you will need to adapt the setup scripts).
  • A properly configured DNS server in your LAN as well as proper DNS entries with a domain suffix for your servers (populated by hand or automatically with the hostname of your devices).
  • A paid domain name for which you have full control over.

Installation

git clone https://github.com/PlqnK/docker-home-services-host.git
cd docker-home-services-host
for file in *.example*; do cp $file $(echo $file | sed -e 's/.example//'); done

You then need to:

  • Adapt the NFS mount points in docker-host-mount-points.txt with what you have on your file server. You need to make it match the target 1:1, except for the source folder name which isn't important, otherwise you will need to modify every reference to the original target name in the docker-compose.yml file.
  • Get a Plex claim token here and replace the PLEX_CLAIM variable in the .env file with it.
  • Update every reference to example.com in the files with your personal domain name, every reference to myserver with either the hostname of your server with a proper domain suffix where needed. Change USER in docker-host-setup.conf to the name of the user created during the installation of Fedora/Ubuntu.
  • Fill in passwords for MYSQL_ROOT_PASSWORD, MYSQL_PASSWORD and COLLABORA_PASSWORD in .env.
  • Put your OpenVPN configuration file in the working dir as client.ovpn.
  • Adapt the rest of the variables in .env and other conf files according to your needs.

Install htpasswd with:

sudo dnf install httpd-tools

Then choose a password for the Træfik web interface and hash it as followed:

htpasswd -nb admin yourchosenpassword

Replace yourpasswordhash of the variable TRAEFIK_API_PASSWORD in .env with the hash that you just obtained.

Next, chmod and execute the setup script:

chmod u+x fedora-setup.sh
sudo ./fedora-setup.sh

You can then create and run your containers with a simple:

docker-compose up -d

Run the post install script which will modify some services config files that were created during the first run:

sudo ./post-first-launch.sh

Updating

If you want to update your containers, just run:

cd /path/to/docker-home-services-host
docker-compose pull && docker-compose up -d

If you also want to update the source files of the project you just need to run git pull right before docker-compose pull && docker-compose up -d.

Contributing

Contributions are welcome if you see any area of improvement!

There's no specific guidelines for pull requests but keep in mind that this project is tailored to my needs and, for example, I might not agree with what you think should be added.

License

This project is released under the BSD 3-Clause License. A copy of the license is available in this project folder.

About

My personal home services host config.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 100.0%