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
This commit is contained in:
parent
74296d2ec4
commit
f792bf8ba9
3 changed files with 204 additions and 93 deletions
117
README.md
117
README.md
|
|
@ -1,8 +1,88 @@
|
||||||
# <img src="/ultimate_plex_stack_transparent_bg.png" width="300px" alt="The Ultimate Plex Stack"></img>
|
# <img src="/ultimate_plex_stack_transparent_bg.png" width="300px" alt="The Ultimate Plex Stack"></img>
|
||||||
|
|
||||||
Welcome to my stack repository! This repository showcases my docker compose setup for managing various media-related services using Docker containers. The compose file is meant to be modifed to each users liking as I know, not everyone has the same requirements. Hope you enjoy!
|
> **Fork Notice:** Este repositório é um fork do [ultimate-plex-stack](https://github.com/DonMcD/ultimate-plex-stack) original. O objetivo deste fork é modernizar o stack, substituindo ferramentas deprecadas por alternativas atuais e mantendo as melhores práticas de 2025/2026.
|
||||||
|
|
||||||
Currently you can choose from the **Basic** or the **Advanced** compose
|
Welcome to my stack repository! This repository showcases my docker compose setup for managing various media-related services using Docker containers. The compose file is meant to be modified to each user's liking as I know, not everyone has the same requirements.
|
||||||
|
|
||||||
|
Currently you can choose from the **Basic** or the **Advanced** compose.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Análise de Ferramentas (2025/2026)
|
||||||
|
|
||||||
|
### Legenda de Status
|
||||||
|
|
||||||
|
| Status | Significado |
|
||||||
|
|--------|-------------|
|
||||||
|
| :white_check_mark: | Ativo e recomendado |
|
||||||
|
| :warning: | Funcional, mas com ressalvas |
|
||||||
|
| :x: | Deprecado - substituir |
|
||||||
|
| :arrows_counterclockwise: | Migração recomendada |
|
||||||
|
|
||||||
|
### Análise Detalhada
|
||||||
|
|
||||||
|
| Ferramenta | Status | Análise | Recomendação |
|
||||||
|
|------------|--------|---------|--------------|
|
||||||
|
| **Plex** | :white_check_mark: | Continua sendo o media server mais polido e user-friendly. Suporte extensivo a dispositivos. Plex Pass opcional para recursos avançados. | Manter. Alternativas: [Jellyfin](https://jellyfin.org/) (open-source, gratuito) ou [Emby](https://emby.media/). |
|
||||||
|
| **Radarr** | :white_check_mark: | Ativamente mantido. Parte do ecossistema Servarr. | Manter. |
|
||||||
|
| **Sonarr** | :white_check_mark: | Ativamente mantido. Requer v4+. | Manter. |
|
||||||
|
| **Prowlarr** | :white_check_mark: | Ativamente mantido. Suporta 500+ trackers torrent e 24+ indexers Usenet. | Manter. |
|
||||||
|
| **Readarr** | :white_check_mark: | Branch `develop` ainda é necessário para algumas funcionalidades. | Manter. |
|
||||||
|
| **Lidarr** | :white_check_mark: | Ativamente mantido para automação de música. | Manter. |
|
||||||
|
| **qBittorrent** | :white_check_mark: | Ranked #1 entre clientes torrent. Suporta até 10.000 torrents. | Manter. Alternativas: [Transmission](https://transmissionbt.com/) (mais leve), [Deluge](https://deluge-torrent.org/) (mais customizável via plugins). |
|
||||||
|
| **Overseerr** | :arrows_counterclockwise: | Sendo **deprecado** e fundido com Jellyseerr em um novo projeto chamado **Seerr**. | **Migrar para [Seerr](https://github.com/seerr-team/seerr)** - suporta Plex, Jellyfin e Emby. |
|
||||||
|
| **Plex Meta Manager** | :x: | **DEPRECADO** em Abril 2024. Projeto renomeado para Kometa. LinuxServer.io não oferece mais suporte à imagem antiga. | **Substituir por [Kometa](https://github.com/Kometa-Team/Kometa)** (`kometateam/kometa`). |
|
||||||
|
| **Tdarr** | :warning: | Funcional e poderoso para transcoding distribuído. Closed-source. | Manter. Alternativa open-source: [Unmanic](https://github.com/Unmanic/unmanic). |
|
||||||
|
| **Tautulli** | :white_check_mark: | Continua sendo a melhor ferramenta de monitoramento para Plex. Alguns antivírus podem gerar falsos positivos. | Manter. |
|
||||||
|
| **Bazarr** | :white_check_mark: | Ativamente mantido. Suporte a Python 3.13+. Integração com OpenSubtitles melhorada. | Manter. |
|
||||||
|
| **Autobrr** | :white_check_mark: | Ativamente mantido (Go 1.25+). Melhor opção para IRC automation. | Manter. |
|
||||||
|
| **Flaresolverr** | :arrows_counterclockwise: | Cloudflare atualiza constantemente suas proteções. FlareSolverr tem dificuldades em acompanhar. | **Considerar migrar para [Byparr](https://github.com/ThePhaseless/Byparr)** - drop-in replacement mais moderno usando Camoufox. |
|
||||||
|
| **Membarr** | :warning: | Projeto original pode estar abandonado. Forks da comunidade (Yoruio/Membarr) continuam disponíveis. | Avaliar se Wizarr não atende melhor a necessidade. |
|
||||||
|
| **Wizarr** | :white_check_mark: | Ativamente mantido (v2025.10.5+). Suporta Plex, Jellyfin, Emby, Audiobookshelf, Romm, Komga e Kavita. | Manter. |
|
||||||
|
| **Dozzle** | :white_check_mark: | Leve e eficiente para logs em tempo real. Suporta Docker, Swarm, K8s, Podman. | Manter. Para logs históricos/search, considerar [Loki + Grafana](https://grafana.com/oss/loki/). |
|
||||||
|
| **Plex Auto Languages** | :warning: | Projeto original (RemiRigal) pode ter sido abandonado. Forks da comunidade (JourneyDocker, thesammykins) continuam. Problemas reportados em TrueNAS Scale. | Usar fork ativo: `journeyover/plex-auto-languages` ou rewrite em TypeScript de thesammykins. |
|
||||||
|
| **Cross-Seed** | :white_check_mark: | Ativamente mantido (v6). Suporta qBittorrent, rTorrent, Deluge, Transmission. | Manter. |
|
||||||
|
| **Unpackerr** | :white_check_mark: | Ativamente mantido. Suporta RAR, ZIP, 7ZIP, TAR e mais. Auto-detecção de *arr apps. | Manter. |
|
||||||
|
| **Recyclarr** | :white_check_mark: | Ativamente mantido. TRaSH Guides atualizados em Janeiro 2026. Suporta Radarr e Sonarr v4+. | Manter. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Mudanças Prioritárias para Modernização
|
||||||
|
|
||||||
|
### :x: Substituições Obrigatórias
|
||||||
|
|
||||||
|
1. **Plex Meta Manager → Kometa**
|
||||||
|
```yaml
|
||||||
|
# Antes (deprecado)
|
||||||
|
plex-meta-manager:
|
||||||
|
image: meisnate12/plex-meta-manager
|
||||||
|
|
||||||
|
# Depois
|
||||||
|
kometa:
|
||||||
|
image: kometateam/kometa
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Overseerr → Seerr**
|
||||||
|
```yaml
|
||||||
|
# Antes (será deprecado)
|
||||||
|
overseerr:
|
||||||
|
image: lscr.io/linuxserver/overseerr:latest
|
||||||
|
|
||||||
|
# Depois
|
||||||
|
seerr:
|
||||||
|
image: ghcr.io/seerr-team/seerr:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
### :arrows_counterclockwise: Migrações Recomendadas
|
||||||
|
|
||||||
|
3. **Flaresolverr → Byparr** (se enfrentando problemas com Cloudflare)
|
||||||
|
```yaml
|
||||||
|
# Alternativa mais moderna
|
||||||
|
byparr:
|
||||||
|
image: ghcr.io/thephaseless/byparr:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
|
|
@ -33,9 +113,9 @@ Currently you can choose from the **Basic** or the **Advanced** compose
|
||||||
- **Flaresolverr:** Used as a proxy server to bypass Cloudflare and DDoS-GUARD protection.
|
- **Flaresolverr:** Used as a proxy server to bypass Cloudflare and DDoS-GUARD protection.
|
||||||
- **Dozzle:** Used to view the logs of any container.
|
- **Dozzle:** Used to view the logs of any container.
|
||||||
- **Wizarr:** Used to create links that can be sent to users so they can be invited to your media server.
|
- **Wizarr:** Used to create links that can be sent to users so they can be invited to your media server.
|
||||||
- **Plex Meta Manager:** Used to create collections, overlays, playlists and much more!
|
- **Kometa:** Used to create collections, overlays, playlists and much more! *(Formerly Plex Meta Manager)*
|
||||||
- **Plex Auto Lanaguages:** Used to auto update the language of your Plex Tv episodes
|
- **Plex Auto Languages:** Used to auto update the language of your Plex TV episodes
|
||||||
- **Recylarr:** Used to sync the config of trash guides with your arr stack
|
- **Recyclarr:** Used to sync the config of trash guides with your arr stack
|
||||||
|
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
@ -49,7 +129,7 @@ Currently you can choose from the **Basic** or the **Advanced** compose
|
||||||
1. Clone this repository / Copy the docker-compose.yml file:
|
1. Clone this repository / Copy the docker-compose.yml file:
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/DonMcD/ultimate-plex-stack.git
|
git clone https://github.com/richardnixondev/homelab-ultimate-setup.git
|
||||||
```
|
```
|
||||||
2. Rename the advanced-compose or basic-compose to docker-compose.yml
|
2. Rename the advanced-compose or basic-compose to docker-compose.yml
|
||||||
3. Fill in the required environment variables
|
3. Fill in the required environment variables
|
||||||
|
|
@ -60,24 +140,24 @@ Currently you can choose from the **Basic** or the **Advanced** compose
|
||||||
Keep in mind some variable names have changed since this screenshot was taken
|
Keep in mind some variable names have changed since this screenshot was taken
|
||||||
<img width="657" alt="image" src="https://github.com/DonMcD/ultimate-plex-stack/assets/90471623/9a614eb0-8ff7-4eb9-b154-61c08cd595e9">
|
<img width="657" alt="image" src="https://github.com/DonMcD/ultimate-plex-stack/assets/90471623/9a614eb0-8ff7-4eb9-b154-61c08cd595e9">
|
||||||
|
|
||||||
|
|
||||||
File location examples:
|
File location examples:
|
||||||
- {MEDIA_SHARE} = /share
|
- {MEDIA_SHARE} = /share
|
||||||
- {BASE_PATH} = /home/username/docker
|
- {BASE_PATH} = /home/username/docker
|
||||||
|
|
||||||
To allow hardlinking to work (which you will definitely want!) you will have to use the same root folder in all of your container path. In this example we use "/share", so in the container it will look like "/share/downloads/tv"
|
To allow hardlinking to work (which you will definitely want!) you will have to use the same root folder in all of your container path. In this example we use "/share", so in the container it will look like "/share/downloads/tv"
|
||||||
|
|
||||||
An example of my folder structure:
|
An example of my folder structure:
|
||||||

|

|
||||||
|
|
||||||
- Feel free to expand your folders to also include "books" or "music" as you need for your setup
|
|
||||||
|
|
||||||
|
|
||||||
|
- Feel free to expand your folders to also include "books" or "music" as you need for your setup
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1. In Radarr you will want to set your category to "movies", this will create the movies folder
|
1. In Radarr you will want to set your category to "movies", this will create the movies folder
|
||||||
2. In Sonarr you will want to set your category to "tv", this will create the tv folder
|
2. In Sonarr you will want to set your category to "tv", this will create the tv folder
|
||||||
|
|
||||||
|
|
||||||
Anytime you reference your media folder in a container you want the path to look like /share/media/tv instead of /tv like a lot of the default guides say, if you do end up mapping the path as /tv hardlinking will not work
|
Anytime you reference your media folder in a container you want the path to look like /share/media/tv instead of /tv like a lot of the default guides say, if you do end up mapping the path as /tv hardlinking will not work
|
||||||
|
|
||||||
## Possible Additions
|
## Possible Additions
|
||||||
|
|
@ -85,4 +165,15 @@ Anytime you reference your media folder in a container you want the path to look
|
||||||
1. Organizr - Creates a lovely dashboard to help navigate to all of your apps
|
1. Organizr - Creates a lovely dashboard to help navigate to all of your apps
|
||||||
2. Portainer - Docker GUI
|
2. Portainer - Docker GUI
|
||||||
3. UptimeKuma - Gives you the ability to monitor your services
|
3. UptimeKuma - Gives you the ability to monitor your services
|
||||||
|
4. [Homarr](https://homarr.dev/) - Modern dashboard alternative to Organizr
|
||||||
|
5. [Homepage](https://gethomepage.dev/) - Another modern dashboard option
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Fontes e Referências
|
||||||
|
|
||||||
|
- [TRaSH Guides](https://trash-guides.info/) - Guias de qualidade e configuração
|
||||||
|
- [Servarr Wiki](https://wiki.servarr.com/) - Documentação oficial dos *arr apps
|
||||||
|
- [LinuxServer.io](https://www.linuxserver.io/) - Imagens Docker confiáveis
|
||||||
|
- [Kometa Wiki](https://kometa.wiki/) - Documentação do Kometa (ex-PMM)
|
||||||
|
- [Seerr Documentation](https://docs.seerr.dev/) - Documentação do Seerr
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
# Welcome to my Ultimate Plex Stack!
|
# Welcome to my Ultimate Plex Stack! (Modernized Fork)
|
||||||
#
|
#
|
||||||
# Make sure to rename this file to "docker-compose.yaml" if you are using git clone
|
# Make sure to rename this file to "docker-compose.yaml" if you are using git clone
|
||||||
#
|
#
|
||||||
# I was hoping this could maybe help some people out when setting up their stack
|
# 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:
|
# Environment Variable Examples:
|
||||||
# PUID = 99
|
# PUID = 99
|
||||||
|
|
@ -23,7 +24,7 @@ networks: #This is used if you have a reverse proxy. I use Nginx Proxy Manager b
|
||||||
proxy: #You can remove this block if you are not planning to use a vpn
|
proxy: #You can remove this block if you are not planning to use a vpn
|
||||||
external:
|
external:
|
||||||
name: proxy
|
name: proxy
|
||||||
|
|
||||||
services:
|
services:
|
||||||
#Plex - used to display the media
|
#Plex - used to display the media
|
||||||
#
|
#
|
||||||
|
|
@ -47,7 +48,7 @@ services:
|
||||||
- ${MEDIA_SHARE}/media/tv:/tv
|
- ${MEDIA_SHARE}/media/tv:/tv
|
||||||
- ${MEDIA_SHARE}/media/movies:/movies
|
- ${MEDIA_SHARE}/media/movies:/movies
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Radarr - used to find movies automatically
|
#Radarr - used to find movies automatically
|
||||||
radarr:
|
radarr:
|
||||||
image: lscr.io/linuxserver/radarr:latest
|
image: lscr.io/linuxserver/radarr:latest
|
||||||
|
|
@ -59,12 +60,12 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- ${BASE_PATH}/radarr/config:/config
|
- ${BASE_PATH}/radarr/config:/config
|
||||||
- ${MEDIA_SHARE}:/share #Access to the entire share
|
- ${MEDIA_SHARE}:/share #Access to the entire share
|
||||||
#networks: #Does not connect to overseer if you use NPM
|
#networks: #Does not connect to seerr if you use NPM
|
||||||
# - proxy
|
# - proxy
|
||||||
ports:
|
ports:
|
||||||
- 7878:7878
|
- 7878:7878
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Sonarr - used to find tv shows automatically
|
#Sonarr - used to find tv shows automatically
|
||||||
sonarr:
|
sonarr:
|
||||||
image: lscr.io/linuxserver/sonarr:latest
|
image: lscr.io/linuxserver/sonarr:latest
|
||||||
|
|
@ -76,12 +77,12 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- ${BASE_PATH}/sonarr/config:/config
|
- ${BASE_PATH}/sonarr/config:/config
|
||||||
- ${MEDIA_SHARE}:/share #Access to the entire share
|
- ${MEDIA_SHARE}:/share #Access to the entire share
|
||||||
#networks: #Does not connect to overseer if you use NPM
|
#networks: #Does not connect to seerr if you use NPM
|
||||||
# - proxy
|
# - proxy
|
||||||
ports:
|
ports:
|
||||||
- 8989:8989
|
- 8989:8989
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Readarr - Used to download books
|
#Readarr - Used to download books
|
||||||
readarr:
|
readarr:
|
||||||
image: lscr.io/linuxserver/readarr:develop
|
image: lscr.io/linuxserver/readarr:develop
|
||||||
|
|
@ -97,8 +98,8 @@ services:
|
||||||
ports:
|
ports:
|
||||||
- 8787:8787
|
- 8787:8787
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Lidarr - Used to download music
|
#Lidarr - Used to download music
|
||||||
lidarr:
|
lidarr:
|
||||||
image: lscr.io/linuxserver/lidarr:latest
|
image: lscr.io/linuxserver/lidarr:latest
|
||||||
container_name: lidarr
|
container_name: lidarr
|
||||||
|
|
@ -112,7 +113,7 @@ services:
|
||||||
ports:
|
ports:
|
||||||
- 8686:8686
|
- 8686:8686
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Prowlarr - manages your Sonarr, Radarr and download client
|
#Prowlarr - manages your Sonarr, Radarr and download client
|
||||||
prowlarr:
|
prowlarr:
|
||||||
image: lscr.io/linuxserver/prowlarr:latest
|
image: lscr.io/linuxserver/prowlarr:latest
|
||||||
|
|
@ -128,7 +129,7 @@ services:
|
||||||
ports:
|
ports:
|
||||||
- 9696:9696
|
- 9696:9696
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Autobrr - used to grab torrents using the trackers IRC channel - Increases seeding due to grabbing content before RSS feed
|
#Autobrr - used to grab torrents using the trackers IRC channel - Increases seeding due to grabbing content before RSS feed
|
||||||
autobrr:
|
autobrr:
|
||||||
container_name: autobrr
|
container_name: autobrr
|
||||||
|
|
@ -143,37 +144,39 @@ services:
|
||||||
ports:
|
ports:
|
||||||
- 7474:7474
|
- 7474:7474
|
||||||
|
|
||||||
#Overseer - allows users to request media on their own
|
#Seerr - allows users to request media on their own
|
||||||
overseerr:
|
#
|
||||||
image: lscr.io/linuxserver/overseerr:latest
|
#UPDATED: Replaces Overseerr. Seerr is the unified successor to Overseerr and Jellyseerr
|
||||||
container_name: overseerr
|
#Supports Plex, Jellyfin, and Emby
|
||||||
|
#Migration guide: https://docs.seerr.dev/
|
||||||
|
seerr:
|
||||||
|
image: ghcr.io/seerr-team/seerr:latest
|
||||||
|
container_name: seerr
|
||||||
environment:
|
environment:
|
||||||
- PUID=${PUID}
|
|
||||||
- PGID=${GUID}
|
|
||||||
- TZ=${TZ}
|
- TZ=${TZ}
|
||||||
volumes:
|
volumes:
|
||||||
- ${BASE_PATH}/overseer/config:/config
|
- ${BASE_PATH}/seerr/config:/app/config
|
||||||
- ${MEDIA_SHARE}:/share #Access to the entire share
|
|
||||||
#networks:
|
#networks:
|
||||||
# - proxy
|
# - proxy
|
||||||
ports:
|
ports:
|
||||||
- 5055:5055
|
- 5055:5055
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Flaresolerr - Used as a proxy server to bypass Cloudflare and DDoS-GUARD protection.
|
#Byparr - Used as a proxy server to bypass Cloudflare and DDoS-GUARD protection
|
||||||
flaresolverr:
|
#
|
||||||
# DockerHub mirror flaresolverr/flaresolverr:latest
|
#UPDATED: Replaces Flaresolverr. Byparr is a modern drop-in replacement using Camoufox
|
||||||
image: ghcr.io/flaresolverr/flaresolverr:latest
|
#Uses the same API as Flaresolverr, so no changes needed in Prowlarr config
|
||||||
container_name: flaresolverr
|
#https://github.com/ThePhaseless/Byparr
|
||||||
|
byparr:
|
||||||
|
image: ghcr.io/thephaseless/byparr:latest
|
||||||
|
container_name: byparr
|
||||||
environment:
|
environment:
|
||||||
- LOG_LEVEL=info
|
- LOG_LEVEL=info
|
||||||
- LOG_HTML=false
|
|
||||||
- CAPTCHA_SOLVER=none
|
|
||||||
- TZ=${TZ}
|
- TZ=${TZ}
|
||||||
ports:
|
ports:
|
||||||
- 8191:8191
|
- 8191:8191
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Qbittorrent - torrenting software
|
#Qbittorrent - torrenting software
|
||||||
#
|
#
|
||||||
#You can also use RuTorrent, Transmission or Deluge
|
#You can also use RuTorrent, Transmission or Deluge
|
||||||
|
|
@ -190,7 +193,7 @@ services:
|
||||||
- ${BASE_PATH}/qbittorrent/config:/config
|
- ${BASE_PATH}/qbittorrent/config:/config
|
||||||
- ${MEDIA_SHARE}:/share
|
- ${MEDIA_SHARE}:/share
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Tautulli - for plex statistics. Very useful when troubleshooting performance issues
|
#Tautulli - for plex statistics. Very useful when troubleshooting performance issues
|
||||||
tautulli:
|
tautulli:
|
||||||
image: lscr.io/linuxserver/tautulli:latest
|
image: lscr.io/linuxserver/tautulli:latest
|
||||||
|
|
@ -210,6 +213,7 @@ services:
|
||||||
#Tdarr - to transcode videos from one format to another like x265 or H.265
|
#Tdarr - to transcode videos from one format to another like x265 or H.265
|
||||||
#
|
#
|
||||||
#This container requires a decent amount of horse power to run but will save space in the long run
|
#This container requires a decent amount of horse power to run but will save space in the long run
|
||||||
|
#Alternative open-source option: Unmanic (https://github.com/Unmanic/unmanic)
|
||||||
tdarr:
|
tdarr:
|
||||||
container_name: tdarr
|
container_name: tdarr
|
||||||
image: ghcr.io/haveagitgat/tdarr:latest
|
image: ghcr.io/haveagitgat/tdarr:latest
|
||||||
|
|
@ -237,12 +241,14 @@ services:
|
||||||
- /transcode_cache:/temp
|
- /transcode_cache:/temp
|
||||||
devices:
|
devices:
|
||||||
- /dev/dri:/dev/dri #Required for HW transcoding / QuickSync
|
- /dev/dri:/dev/dri #Required for HW transcoding / QuickSync
|
||||||
|
|
||||||
#Membarr - to invite users via discord
|
#Membarr - to invite users via discord
|
||||||
#
|
#
|
||||||
#Can be configured so that when a plex member invites an outside user to a discord channel they are auto invited to plex
|
#Can be configured so that when a plex member invites an outside user to a discord channel they are auto invited to plex
|
||||||
|
#Using Yoruio fork which is actively maintained
|
||||||
#
|
#
|
||||||
#Feel free to remove this container if you want to manually invite everyone yourself
|
#Feel free to remove this container if you want to manually invite everyone yourself
|
||||||
|
#Consider using Wizarr instead if you don't need Discord integration
|
||||||
membarr:
|
membarr:
|
||||||
container_name: membarr
|
container_name: membarr
|
||||||
image: yoruio/membarr:latest
|
image: yoruio/membarr:latest
|
||||||
|
|
@ -251,7 +257,7 @@ services:
|
||||||
- token=${MEMBARR_TOKEN}
|
- token=${MEMBARR_TOKEN}
|
||||||
volumes:
|
volumes:
|
||||||
- ${BASE_PATH}/membarr/config:/app/app/config
|
- ${BASE_PATH}/membarr/config:/app/app/config
|
||||||
|
|
||||||
#Bazarr - for subtitles. Try to use SRT format if you can rather than PGS due to performance issues
|
#Bazarr - for subtitles. Try to use SRT format if you can rather than PGS due to performance issues
|
||||||
bazarr:
|
bazarr:
|
||||||
container_name: bazarr
|
container_name: bazarr
|
||||||
|
|
@ -266,25 +272,29 @@ services:
|
||||||
- ${MEDIA_SHARE}:/share
|
- ${MEDIA_SHARE}:/share
|
||||||
ports:
|
ports:
|
||||||
- 6767:6767
|
- 6767:6767
|
||||||
|
|
||||||
#Plex Auto Languages - This switches languages automatically example: watching english show and non english speaks you get subtitle lol
|
#Plex Auto Languages - This switches languages automatically example: watching english show and non english speaks you get subtitle
|
||||||
|
#
|
||||||
|
#UPDATED: Using JourneyOver fork which is actively maintained
|
||||||
|
#Alternative: thesammykins TypeScript rewrite (https://github.com/thesammykins/plex-auto-languages)
|
||||||
plexautolanguages:
|
plexautolanguages:
|
||||||
image: remirigal/plex-auto-languages:latest
|
image: journeyover/plex-auto-languages:latest
|
||||||
container_name: plex-auto-languages
|
container_name: plex-auto-languages
|
||||||
environment:
|
environment:
|
||||||
- PLEX_URL=${PLEX_URL} #This is your local URl example: http://192.168.1.10:32400
|
- PLEX_URL=${PLEX_URL} #This is your local URL example: http://192.168.1.10:32400
|
||||||
#To find your plex token go to https://app.plex.tv/, go to your library, click on the 3 dots on the bottom right of one of your tv/movie posters
|
#To find your plex token go to https://app.plex.tv/, go to your library, click on the 3 dots on the bottom right of one of your tv/movie posters
|
||||||
#Then click "View XML" in the bottom right of that popup, look at the URL of the XML window and find your X-Plex-Token= in the URL (at the very end)
|
#Then click "View XML" in the bottom right of that popup, look at the URL of the XML window and find your X-Plex-Token= in the URL (at the very end)
|
||||||
- PLEX_TOKEN=${PLEX_TOKEN}
|
- PLEX_TOKEN=${PLEX_TOKEN}
|
||||||
- TZ=${TZ}
|
- TZ=${TZ}
|
||||||
volumes:
|
volumes:
|
||||||
- ${BASE_PATH}/pal/config:/config
|
- ${BASE_PATH}/pal/config:/config
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
#Cross Seed - used to take torrents from one tracker and seed them on another without leeching first. Increases ratio
|
#Cross Seed - used to take torrents from one tracker and seed them on another without leeching first. Increases ratio
|
||||||
#
|
#
|
||||||
#This is fairly advanced but can be removed if you don't think you will need it. Some trackers also don't allow this
|
#This is fairly advanced but can be removed if you don't think you will need it. Some trackers also don't allow this
|
||||||
cross-seed:
|
cross-seed:
|
||||||
image: ghcr.io/cross-seed/cross-seed
|
image: ghcr.io/cross-seed/cross-seed:6
|
||||||
container_name: cross-seed
|
container_name: cross-seed
|
||||||
environment:
|
environment:
|
||||||
- PUID=${PUID}
|
- PUID=${PUID}
|
||||||
|
|
@ -297,23 +307,27 @@ services:
|
||||||
- ${MEDIA_SHARE}/cross-seed/current-cross-seeds:/cross-seeds # A place to temp save current cross seed .torrent files
|
- ${MEDIA_SHARE}/cross-seed/current-cross-seeds:/cross-seeds # A place to temp save current cross seed .torrent files
|
||||||
#- ${MEDIA_SHARE}/downloads:/data # OPTIONAL!!! this is dataDir path (for data-based matching) - will need to replicate your torrent client's container path (like Arr's do)
|
#- ${MEDIA_SHARE}/downloads:/data # OPTIONAL!!! this is dataDir path (for data-based matching) - will need to replicate your torrent client's container path (like Arr's do)
|
||||||
command: daemon # this enables the search mode, change to daemon to specifically run the daemon
|
command: daemon # this enables the search mode, change to daemon to specifically run the daemon
|
||||||
|
restart: unless-stopped
|
||||||
#Plex Meta Manager - used to create collections in plex. Example: "Most Popular Movies This Week", "Best of horror", etc.
|
|
||||||
plex-meta-manager:
|
#Kometa - used to create collections in plex. Example: "Most Popular Movies This Week", "Best of horror", etc.
|
||||||
image: meisnate12/plex-meta-manager
|
#
|
||||||
container_name: plex-meta-manager
|
#UPDATED: Replaces Plex Meta Manager which was deprecated in April 2024
|
||||||
|
#Migration guide: https://kometa.wiki/en/latest/kometa/guides/rebrand/
|
||||||
|
kometa:
|
||||||
|
image: kometateam/kometa:latest
|
||||||
|
container_name: kometa
|
||||||
environment:
|
environment:
|
||||||
- TZ=${TZ}
|
- TZ=${TZ}
|
||||||
#- PMM_OVERLAYS_ONLY=true #Tells PMM to run overlays only
|
#- KOMETA_OVERLAYS_ONLY=true #Tells Kometa to run overlays only
|
||||||
- PMM_CONFIG=/config/config.yml
|
- KOMETA_CONFIG=/config/config.yml
|
||||||
- PMM_RUN=true #Runs PMM Immediately
|
- KOMETA_RUN=true #Runs Kometa Immediately
|
||||||
#- PMM_RUN_LIBRARIES=Movies #Tells PMM to process only a library called "Movies"
|
#- KOMETA_RUN_LIBRARIES=Movies #Tells Kometa to process only a library called "Movies"
|
||||||
volumes:
|
volumes:
|
||||||
- ${BASE_PATH}/plex-meta-manager/config:/config
|
- ${BASE_PATH}/kometa/config:/config
|
||||||
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Wizarr - Allows you to create a share link that you can send to users to invite them to your media server
|
#Wizarr - Allows you to create a share link that you can send to users to invite them to your media server
|
||||||
|
#Supports Plex, Jellyfin, Emby, Audiobookshelf, Romm, Komga and Kavita
|
||||||
wizarr:
|
wizarr:
|
||||||
container_name: wizarr
|
container_name: wizarr
|
||||||
image: ghcr.io/wizarrrr/wizarr:latest
|
image: ghcr.io/wizarrrr/wizarr:latest
|
||||||
|
|
@ -321,8 +335,10 @@ services:
|
||||||
- 5690:5690
|
- 5690:5690
|
||||||
volumes:
|
volumes:
|
||||||
- ${BASE_PATH}/wizarr/data/database:/data/database
|
- ${BASE_PATH}/wizarr/data/database:/data/database
|
||||||
|
restart: unless-stopped
|
||||||
#Dozzle - Used to easily view logs of any container in real time!
|
|
||||||
|
#Dozzle - Used to easily view logs of any container in real time!
|
||||||
|
#For historical logs/search, consider Loki + Grafana
|
||||||
dozzle:
|
dozzle:
|
||||||
container_name: dozzle
|
container_name: dozzle
|
||||||
image: amir20/dozzle:latest
|
image: amir20/dozzle:latest
|
||||||
|
|
@ -330,21 +346,21 @@ services:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
ports:
|
ports:
|
||||||
- 9999:8080
|
- 9999:8080
|
||||||
|
restart: unless-stopped
|
||||||
#Unpacker - Used to unzip zipped files
|
|
||||||
unpackerr:
|
|
||||||
image: golift/unpackerr
|
|
||||||
container_name: unpackerr
|
|
||||||
|
|
||||||
|
#Unpackerr - Used to unzip zipped files
|
||||||
|
unpackerr:
|
||||||
|
image: golift/unpackerr:latest
|
||||||
|
container_name: unpackerr
|
||||||
volumes:
|
volumes:
|
||||||
# You need at least this one volume mapped so Unpackerr can find your files to extract.
|
# You need at least this one volume mapped so Unpackerr can find your files to extract.
|
||||||
# Make sure this matches your Starr apps; the folder mount (/downloads or /data) should be identical.
|
# Make sure this matches your Starr apps; the folder mount (/downloads or /data) should be identical.
|
||||||
- ${MEDIA_SHARE}:/share
|
- ${MEDIA_SHARE}:/share
|
||||||
#- ${BASE_PATH}/unpackerr/config:/config
|
#- ${BASE_PATH}/unpackerr/config:/config
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
user: 1000:1000 #Needs to run as 1000
|
user: 1000:1000 #Needs to run as 1000
|
||||||
# What you see below are defaults for this compose. You only need to modify things specific to your environment.
|
# What you see below are defaults for this compose. You only need to modify things specific to your environment.
|
||||||
# Remove apps and feature configs you do not use or need.
|
# Remove apps and feature configs you do not use or need.
|
||||||
# ie. Remove all lines that begin with UN_CMDHOOK, UN_WEBHOOK, UN_FOLDER, UN_WEBSERVER, and other apps you do not use.
|
# ie. Remove all lines that begin with UN_CMDHOOK, UN_WEBHOOK, UN_FOLDER, UN_WEBSERVER, and other apps you do not use.
|
||||||
environment:
|
environment:
|
||||||
- UN_START_DELAY=1m
|
- UN_START_DELAY=1m
|
||||||
|
|
@ -364,14 +380,15 @@ services:
|
||||||
- UN_RADARR_0_TIMEOUT=10s
|
- UN_RADARR_0_TIMEOUT=10s
|
||||||
#- UN_RADARR_0_PATHS_0=/share/downloads/movies
|
#- UN_RADARR_0_PATHS_0=/share/downloads/movies
|
||||||
|
|
||||||
# Used to sync Trash Guides config's to radarr and sonarr
|
# Recyclarr - Used to sync Trash Guides config's to radarr and sonarr
|
||||||
# Only accessible via command line! No GUI
|
# Only accessible via command line! No GUI
|
||||||
|
# Supports Radarr and Sonarr v4+
|
||||||
recyclarr:
|
recyclarr:
|
||||||
image: ghcr.io/recyclarr/recyclarr
|
image: ghcr.io/recyclarr/recyclarr:latest
|
||||||
container_name: recyclarr
|
container_name: recyclarr
|
||||||
user: ${PUID}:${GUID}
|
user: ${PUID}:${GUID}
|
||||||
volumes:
|
volumes:
|
||||||
- ${BASE_PATH}/recyclarr/config:/config
|
- ${BASE_PATH}/recyclarr/config:/config
|
||||||
environment:
|
environment:
|
||||||
- TZ=${TZ}
|
- TZ=${TZ}
|
||||||
|
restart: unless-stopped
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
|
# Welcome to my Ultimate Plex Stack! (Modernized Fork - Basic Version)
|
||||||
# Welcome to my Ultimate Plex Stack! (No vpn for qbit)
|
|
||||||
#
|
#
|
||||||
#Make sure to rename this to "docker-compose.yaml" if you are using git clone
|
# 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 the basic option giving you all the necessities for a basic plex / arr setup
|
||||||
#
|
#
|
||||||
# I was hoping this could maybe help some people out when setting up their stack
|
# 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:
|
# Environment Variable Examples:
|
||||||
# PUID = 99
|
# PUID = 99
|
||||||
|
|
@ -43,7 +43,7 @@ services:
|
||||||
- ${MEDIA_SHARE}/media/tv:/tv
|
- ${MEDIA_SHARE}/media/tv:/tv
|
||||||
- ${MEDIA_SHARE}/media/movies:/movies
|
- ${MEDIA_SHARE}/media/movies:/movies
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Radarr - used to find movies automatically
|
#Radarr - used to find movies automatically
|
||||||
radarr:
|
radarr:
|
||||||
image: lscr.io/linuxserver/radarr:latest
|
image: lscr.io/linuxserver/radarr:latest
|
||||||
|
|
@ -58,7 +58,7 @@ services:
|
||||||
ports:
|
ports:
|
||||||
- 7878:7878
|
- 7878:7878
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Sonarr - used to find tv shows automatically
|
#Sonarr - used to find tv shows automatically
|
||||||
sonarr:
|
sonarr:
|
||||||
image: lscr.io/linuxserver/sonarr:latest
|
image: lscr.io/linuxserver/sonarr:latest
|
||||||
|
|
@ -73,7 +73,7 @@ services:
|
||||||
ports:
|
ports:
|
||||||
- 8989:8989
|
- 8989:8989
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Prowlarr - manages your Sonarr, Radarr and download client
|
#Prowlarr - manages your Sonarr, Radarr and download client
|
||||||
prowlarr:
|
prowlarr:
|
||||||
image: lscr.io/linuxserver/prowlarr:latest
|
image: lscr.io/linuxserver/prowlarr:latest
|
||||||
|
|
@ -88,21 +88,22 @@ services:
|
||||||
- 9696:9696
|
- 9696:9696
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Overseerr - allows users to request media on their own
|
#Seerr - allows users to request media on their own
|
||||||
overseerr:
|
#
|
||||||
image: lscr.io/linuxserver/overseerr:latest
|
#UPDATED: Replaces Overseerr. Seerr is the unified successor to Overseerr and Jellyseerr
|
||||||
container_name: overseerr
|
#Supports Plex, Jellyfin, and Emby
|
||||||
|
#Migration guide: https://docs.seerr.dev/
|
||||||
|
seerr:
|
||||||
|
image: ghcr.io/seerr-team/seerr:latest
|
||||||
|
container_name: seerr
|
||||||
environment:
|
environment:
|
||||||
- PUID=${PUID}
|
|
||||||
- PGID=${GUID}
|
|
||||||
- TZ=${TZ}
|
- TZ=${TZ}
|
||||||
volumes:
|
volumes:
|
||||||
- ${BASE_PATH}/overseerr/config:/config
|
- ${BASE_PATH}/seerr/config:/app/config
|
||||||
- ${MEDIA_SHARE}:/share #Access to the entire share
|
|
||||||
ports:
|
ports:
|
||||||
- 5055:5055
|
- 5055:5055
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#Qbittorrent - torrenting software
|
#Qbittorrent - torrenting software
|
||||||
#You can also use RuTorrent, Transmission or Deluge
|
#You can also use RuTorrent, Transmission or Deluge
|
||||||
qbittorrent:
|
qbittorrent:
|
||||||
|
|
@ -117,5 +118,7 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- ${BASE_PATH}/qbittorrent/config:/config
|
- ${BASE_PATH}/qbittorrent/config:/config
|
||||||
- ${MEDIA_SHARE}:/share
|
- ${MEDIA_SHARE}:/share
|
||||||
|
ports:
|
||||||
|
- 8080:8080
|
||||||
|
- 8694:8694
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue