homelab-ultimate-setup/basic-compose.yaml
Richard Nixon f792bf8ba9 Modernize stack for 2025/2026
Replace deprecated tools with actively maintained alternatives:
- Overseerr → Seerr (unified Plex/Jellyfin/Emby support)
- Plex Meta Manager → Kometa (renamed project)
- Flaresolverr → Byparr (modern Cloudflare bypass)
- plex-auto-languages → journeyover fork (maintained)

Update README with comprehensive tool analysis:
- Add status indicators for each service
- Document required migrations
- Add references to TRaSH Guides and Servarr Wiki
- Include fork notice and modernization notes

Minor fixes:
- Add missing restart policies
- Fix typos and formatting
- Update cross-seed to v6
- Add notes about alternative tools
2026-01-27 09:24:28 +00:00

124 lines
3.7 KiB
YAML

# Welcome to my Ultimate Plex Stack! (Modernized Fork - Basic Version)
#
# Make sure to rename this to "docker-compose.yaml" if you are using git clone
# This is the basic option giving you all the necessities for a basic plex / arr setup
#
# This is a modernized version of the original ultimate-plex-stack
# Updated to use current tools and replace deprecated ones (2025/2026)
#
# Environment Variable Examples:
# PUID = 99
# GUID = 101
# TZ = America/Edmonton
# BASE_PATH = /home/username/docker
#
# https://trash-guides.info/Hardlinks/Hardlinks-and-Instant-Moves/ # This can be useful for establishing how the media will be presented below
# MEDIA_SHARE = /mnt/media # This can also be renamed to "SHARE", "MEDIA" or "DATA" this is where you will present your media
#
# NOTE: This is not a plug and play solution, some research / customization will be required to make this work as intended
# Feel free to customize ie: remove/change/add containers as needed - one size does not fit all
---
version: "3.0"
services:
#Plex - used to display the media
#This can also be replaced by Emby/Jellyfin if you so choose
plex:
image: lscr.io/linuxserver/plex:latest
container_name: plex
network_mode: host
environment:
- PUID=${PUID}
- PGID=${GUID}
- TZ=${TZ}
- VERSION=docker
- PLEX_CLAIM=${PLEX_CLAIM}
ports:
- 32400:32400
devices:
- /dev/dri:/dev/dri #Required for plex HW transcoding / QuickSync (Intel 8th gen or newer)
volumes:
- ${BASE_PATH}/plex/config:/config
- ${MEDIA_SHARE}/media/tv:/tv
- ${MEDIA_SHARE}/media/movies:/movies
restart: unless-stopped
#Radarr - used to find movies automatically
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=${PUID}
- PGID=${GUID}
- TZ=${TZ}
volumes:
- ${BASE_PATH}/radarr/config:/config
- ${MEDIA_SHARE}:/share #Access to the entire share
ports:
- 7878:7878
restart: unless-stopped
#Sonarr - used to find tv shows automatically
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=${PUID}
- PGID=${GUID}
- TZ=${TZ}
volumes:
- ${BASE_PATH}/sonarr/config:/config
- ${MEDIA_SHARE}:/share #Access to the entire share
ports:
- 8989:8989
restart: unless-stopped
#Prowlarr - manages your Sonarr, Radarr and download client
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=${PUID}
- PGID=${GUID}
- TZ=${TZ}
volumes:
- ${BASE_PATH}/prowlarr/config:/config
ports:
- 9696:9696
restart: unless-stopped
#Seerr - allows users to request media on their own
#
#UPDATED: Replaces Overseerr. Seerr is the unified successor to Overseerr and Jellyseerr
#Supports Plex, Jellyfin, and Emby
#Migration guide: https://docs.seerr.dev/
seerr:
image: ghcr.io/seerr-team/seerr:latest
container_name: seerr
environment:
- TZ=${TZ}
volumes:
- ${BASE_PATH}/seerr/config:/app/config
ports:
- 5055:5055
restart: unless-stopped
#Qbittorrent - torrenting software
#You can also use RuTorrent, Transmission or Deluge
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
environment:
- PUID=${PUID}
- PGID=${GUID}
- TZ=${TZ}
- WEBUI_PORT=8080
- TORRENTING_PORT=8694 #Make sure to port forward this port in your router so you can seed more effectively
volumes:
- ${BASE_PATH}/qbittorrent/config:/config
- ${MEDIA_SHARE}:/share
ports:
- 8080:8080
- 8694:8694
restart: unless-stopped