Skip to content

A comprehensive media server setup using Docker Compose, featuring Plex and various supporting services for content management, automation, and monitoring. Offers a minimal but fully functional setup, with the ability to add reverse proxies.

Notifications You must be signed in to change notification settings

afk-procrastinator/super-plex-stack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

⚡ SuperPlex ⚡

A comprehensive media server setup using Docker Compose, featuring Plex and various supporting services for content management, automation, and monitoring. Offers a minimal but fully functional setup, with the ability to add reverse proxies.

image image


🚀 Services

Core Services

  • Plex: Media server
  • Overseerr: Media request management system
  • Tautulli: Plex monitoring and statistics optional
  • Organizr: Web-based dashboard optional
  • FileBrowser: Web file management interface optional
  • Dozzle: Real-time docker log viewer optional

Web & Network Services

Media Management

  • Radarr: Movie collection manager
  • Sonarr: TV series collection manager
  • Prowlarr: Indexer manager
  • Bazarr: Subtitle manager optional

If you don't want to use any of the optional services, you can remove them from the docker-compose.yml file.

⚠️ Warning: This stack will not work out of the box. You'll need to do more configuration in the apps themselves. See the App Setup section below for more information.

🛠️ Setup Instructions

Make sure you have Docker installed! These instructions are for just setting up the stack, you'll need to do more configuration in the apps (see the App Setup section below).

📁 Directory Structure

  1. Clone this repository to your desired location (or just manually make the docker-compose.yml file)

  2. Create the following directory structure:

    .
    ├── config/
    │   └── ...
    ├── data/
    │   ├── downloads/
    │   │   ├── complete/
    │   │   ├── incomplete/
    │   │   └── watch/
    │   └── media/
    │       ├── movies/
    │       └── tv/
    
  3. The config files are made automatically when Docker starts up, but you can also run:

    mkdir -p data data/downloads /data/media /data/media/movies /data/media/tv data/downloads/complete data/downloads/incomplete data/downloads/watch config
    

This setup assumes that all the final data is stored in the same directory as docker-compose.yml. If you want more space/add more drives, you need to add them to the relevant volumes section for each service.

  1. In the .env file, you need to set the following variables:
    • TZ: Your timezone (default: America/New_York)
    • PUID: User ID (default: 1000)
    • PGID: Group ID (default: 1000)
    • OPENVPN_USERNAME: VPN username
    • OPENVPN_PASSWORD: VPN password

The stack uses Gluetun for VPN connectivity, which I have preconfigured for ProtonVPN but supports many other providers. You can see the full list of providers and the documentation for how to configure them here.

  1. Run docker compose up -d to start the stack.
  2. Profit! After setting up the apps, of course. Add media via Overseerr (or by manually adding them to Radarr and Sonarr). See the App Setup section for more information, and use documentation for each app to finish setting them up.

🌐 Ngnix

Note: This is optional, and only if you want to be able to access the services from outside your local network. You'll need a static IP and forward the necessary ngnix ports.

  1. Create an A record in your DNS provider pointing to your server's public IP address, with overseerr as the name.
  2. In Ngnix, go to Hosts -> Proxy Hosts -> Add Proxy Host. Fill in the following:
    1. Domain Names: overseerr.mydomain.com
    2. Scheme: http
    3. Forward Hostname/IP: gluetun (for VPN-protected services) or service name (for others)
    4. Forward Port: 5055 (use the service's port)
    5. Enable Block Common Exploits and Websockets Support
    6. Under SSL, select Request New SSL Certificate, Force SSL, and HTTP/2 Support.
  3. Be sure to secure any services you forward outside your network!

Important: For services running through the VPN (Overseerr, Radarr, Sonarr, Prowlarr), use gluetun as the Forward Hostname/IP in Nginx Proxy Manager. These services are accessed through the gluetun container.

🛠️ App Setup

You'll need to do more configuration in the apps themselves to make sure that everything works. Here are some resources:

The flow I find best is (in order of what to get working first): Gluetun -> qBittorrent -> Prowlarr -> Sonarr/Radarr -> Plex. Everything else can come after that.

🌐 Default Local Access

Service URL Notes
Nginx Proxy Manager 81 Admin interface
Organizr 9983
Filebrowser 8081
qBittorrent 8080 VPN Protected
Radarr 7878 VPN Protected
Sonarr 8989 VPN Protected
Plex 32400 Host Network Mode
Overseerr 5055 VPN Protected
Tautulli 8181
Prowlarr 9696 VPN Protected
Bazarr 6767
Dozzle 9999

🔐 Services marked as "VPN Protected" run through the Gluetun VPN container, meaning:

  • All their network traffic is routed through your VPN connection
  • They're only accessible through ports exposed by the Gluetun container
  • This protects these services from being directly exposed to the internet (aka they run through the VPN)
  • All of these can be accessed via localhost, but you'll need to set up a reverse proxy in Nginx Proxy Manager to access them from outside your network (see the section above).

✅ TODO

  • Add a script to help users onboard (e.g. directories, what images they want)
  • Add more services to support the stack (Recyclarr, Whisparr, Notifiarr)
  • Add documentation for Gluetun VPN configuration with other providers

About

A comprehensive media server setup using Docker Compose, featuring Plex and various supporting services for content management, automation, and monitoring. Offers a minimal but fully functional setup, with the ability to add reverse proxies.

Topics

Resources

Stars

Watchers

Forks