Homelab

Docker Compose Setup for Comprehensive Home Server

This docker-compose.yml file sets up a comprehensive home server environment, providing various services for managing media and downloads. The setup includes the following services:

1. prowlarr

A service running a container with the latest version of Prowlarr, a media management tool for monitoring and managing your media collection. It is accessible at http://prowlarr.lab.

2. radarr

A service running a container with Radarr, a movie management tool for organizing and tracking movies in your collection. It is accessible at http://radarr.lab.

3. sonarr

A service running a container with Sonarr, a TV show management tool for organizing and tracking TV series. It is accessible at http://sonarr.lab.

4. overseerr

A service running a container with Overseerr, a media request and management tool. It allows users to request new movies and TV shows for your collection. It is accessible at http://overseerr.lab.

5. autobrr

A service running a container with AutoBRR, a tool for automating BitTorrent ratio rules and seeding. It is accessible at http://autobrr.lab.

6. sabnzbd

A service running a container with SABnzbd, a Usenet client for downloading and managing Usenet content. It is accessible at http://sabnzbd.lab.

7. pyload-ng

A service running a container with Pyload-NG, a download manager for various protocols, including HTTP, FTP, and BitTorrent. It is accessible at http://pyload.lab.

8. filebrowser

A service running FileBrowser, a file manager accessible at http://filebrowser.lab. It allows you to browse and manage files on your server.

9. watchtower

A container running Watchtower, which automatically updates other containers to their latest available image versions.

10. reverse-proxy

A container running Traefik, serving as a reverse proxy. It enables access to the services using the specified hostnames in each service’s configuration. It listens on ports 80 (HTTP) and 8081 (Traefik API).

Instructions

  1. Make sure you have Docker and Docker Compose installed on your home server.

  2. Create the necessary directories on your host system for storing configurations and data. For example, create directories named /appdata/prowlarr, /appdata/radarr, /appdata/sonarr, /appdata/overseerr, /appdata/autobrr, /appdata/sabnzbd, /appdata/pyload/config, /appdata/filebrowser, /media/media-for-home/downloads, and /media/media-for-home/incomplete-downloads.

  3. Modify the environment variables of each service as needed. Adjust the PUID, PGID, TZ, and other variables based on your requirements.

  4. Update the traefik.toml file with any necessary configurations for Traefik, and make sure it is placed in /root/traefik.toml.

  5. In the same directory as the docker-compose.yml file, execute the following command to start all the defined services in detached mode:

docker-compose up -d

This command will launch all the services as background processes.

  1. Access the various services using the specified URLs:

    • http://prowlarr.lab: Prowlarr media management tool
    • http://radarr.lab: Radarr movie management tool
    • http://sonarr.lab: Sonarr TV show management tool
    • http://overseerr.lab: Overseerr media request and management tool
    • http://autobrr.lab: AutoBRR BitTorrent automation tool
    • http://sabnzbd.lab: SABnzbd Usenet client
    • http://pyload.lab: Pyload-NG download manager
    • http://filebrowser.lab: FileBrowser file manager
  2. To update the containers to their latest versions, execute the following command:

docker-compose up -d --no-deps --build watchtower

Watchtower will then check for and update to newer versions of the containers.

Make sure your server’s firewall and network configurations permit access to the necessary ports from external devices or networks.

Note: The hostname resolutions (prowlarr.lab, radarr.lab, sonarr.lab, overseerr.lab, autobrr.lab, sabnzbd.lab, pyload.lab, and filebrowser.lab) assume that your server’s DNS and networking configurations are appropriately set up to resolve these hostnames to the server’s IP address. If needed, update your local DNS resolver or hosts file to ensure proper hostname resolution.