Skip to content

Introduction

HMSDocker artwork

ansible-hms-docker helps deploy and setup the required containers for a home media server automation pipeline.

The idea was to go from a fresh OS install to a fully automated media server stack after only installing Ansible and configuring variables.

Setting up the individual container configurations, such as for Sonarr, Radarr, Overseerr, Prowlarr, etc. are outside the scope of this project as they are typically personal preference, but there is a workflow to automatically connect a number of apps together. See the App Bootstrap documentation for more information.

The purpose of this project is to ensure the necessary OS configuration and containers are running with the appropriate configs. There is a basic outline of how to connect the containers together in the Container Connections doc.

Extensive List of Services

There are currently over 50 services available to use, and the list is always expanding

Automatic Updates

Containers update to their most recent version nightly

Wildcard SSL/TLS

Generate a trusted wildcard (`*.domain.com`) SSL/TLS certificate to secure traffic

Dynamic DNS

Dynamically update DNS records for Cloudflare-hosted DNS zones

App Bootstrapping

Automatically configures download clients and proxies in supported apps

GPU Acceleration

Use your GPU (Intel/Nvidia) in supported containers for hardware transcoding

Multiple NAS/Drive Mounts

Mount multiple drives or NAS shares

Single Sign-On

Authentik is available to configure for SSO

Separate 4K Instances

Supports multiple instances of Sonarr and Radarr that are specific for 4K content.

Security Hardening

Options available to secure the Traefik reverse proxy

Homepage Integrations

Automatically configures Homepage integrations for supported containers

Custom Scripts

Custom Uptime-Kuma monitoring script and Traefik-to-Plex-TLS conversion script

Pull requests are always welcome!

If you have suggestions for containers to add or any other improvements, please submit a Discussion Post

By using or running this code, you acknowledge and agree that it is provided “as-is” without any warranties or guarantees. The author(s) of this project are not responsible for any damages, data loss, or any other consequences that may result from the use or misuse of this code.

You use this code at your own risk. It is your responsibility to review and test the code in a safe environment before deploying it in production or on any system where data loss, corruption, or security risks could occur.

If you choose to run or implement this code, you do so with full knowledge of the potential risks involved.

Also the logos were generated by AI because I’m terrible at designing stuff.