fichiers docker

This commit is contained in:
2025-02-25 20:00:50 +01:00
parent 0d2840e87f
commit edba466018
30 changed files with 1304 additions and 0 deletions

128
docker/README.md Normal file
View File

@@ -0,0 +1,128 @@
# MediaStack Project (Docker) - min-vpn_single-yaml
Go to: [https://github.com/geekau/mediastack](https://github.com/geekau/mediastack)
Download the full "mediastack" repository to your computer by selecting "**Code**" --> "**Download Zip**"
Extract the downloaded zip file, then go to the directory which suits your deployment method
Full deployment and configuration instructions are located at: [https://MediaStack.Guide](https://MediaStack.Guide)
</br>
## What is "min-vpn_single-yaml"?
This directory contains the configuration to deploy the MediaStack in a minimal Secure VPN architecture, where only the qBittorrent client is using the VPN, and all other network traffic is sent straight out via your ISP's network connection.
This configuration uses multiple YAML files to deploy over 20 Docker containers. It may take a little longer to deploy and get your MediaStack Project containers deployed, it is much easier to troubleshoot problems when there are configuration issues that need to be debugged.
Multiple YAML configuration files is **recommended for new Docker users, and for fault finding activities.**
</br>
<center>
``` mermaid
graph TD
subgraph DockerNet[<center>Docker Networking - 172.28.10.0/24</center>]
Jellyfin -..-> NIC
Plex -.-> NIC
Jellyseerr -..-> NIC
Prowlarr -.-> NIC
Radarr -..-> NIC
Readarr -.-> NIC
Sonarr -..-> NIC
Mylar -.-> NIC
Whisparr -..-> NIC
Bazarr -.-> NIC
Lidarr -..-> NIC
Tdarr -.-> NIC
SABnzbd -..-> NIC
NIC[Host Network Interface]
qBittorrent --- Gluetun
end
Gluetun ==>| Secure VPN | NIC
NIC -.->| Insecure Data | Gateway[<center>Home</p>Gateway</center>]
NIC ==>| Secure VPN | Gateway[<center>Home</p>Gateway</center>]
Gateway -.->| Insecure Data |Internet{<center>General</p>Internet</center>}
Gateway ==>|Secure VPN |VPN{<center>VPN Server</p>Anchor Point</center>}
style Bazarr stroke:orange,stroke-width:2px
style Lidarr stroke:orange,stroke-width:2px
style Mylar stroke:orange,stroke-width:2px
style Prowlarr stroke:orange,stroke-width:2px
style Radarr stroke:orange,stroke-width:2px
style Readarr stroke:orange,stroke-width:2px
style Sonarr stroke:orange,stroke-width:2px
style Tdarr stroke:orange,stroke-width:2px
style Whisparr stroke:orange,stroke-width:2px
style Jellyfin stroke:orange,stroke-width:2px
style Plex stroke:orange,stroke-width:2px
style qBittorrent stroke:green,stroke-width:2px
style Jellyseerr stroke:orange,stroke-width:2px
style SABnzbd stroke:orange,stroke-width:2px
style Gluetun stroke:green,stroke-width:2px
style VPN stroke:green,stroke-width:2px
style Internet stroke:orange,stroke-width:2px
```
</center>
<br><br>
> NOTE: Many of the Docker applications are passing traffic through the Gluetun VPN container. When the Gluetun container stops, or if the VPN network connection is interrupted, then all network traffic for the other Docker applications, will also stop until the secure VPN connection is re-established.
<br>
### Multiple YAML Files Deployment:
New users benefit from using multiple YAML files, each dedicated to an individual Docker application. This modular approach simplifies troubleshooting and allows users to manage each service independently. If an issue arises, its easier to pinpoint and resolve. Additionally, it provides flexibility to update or redeploy specific applications without affecting the entire stack.
**If you choose to deploy the Docker containers individually, you MUST deploy the Gluetun container first**. The Gluetun Docker container sets up the essential network configurations that establish the foundational network infrastructure for all other Docker containers. Without it, subsequent deployments will fail, as they rely on the network settings defined within the Gluetun YAML file. This prerequisite ensures that all containers can communicate correctly and securely within the Docker network.
> NOTE: You must update the **`docker-compose.env`** file for your needs, prior to running **`docker compose`**.
Example:
```
vi docker-compose.env
sudo docker compose --file docker-compose-gluetun.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-jellyfin.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-jellyseerr.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-plex.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-prowlarr.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-lidarr.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-mylar.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-radarr.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-readarr.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-sonarr.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-whisparr.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-bazarr.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-jackett.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-qbittorrent.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-sabnzbd.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-unpackerr.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-tdarr.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-swag.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-authelia.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-heimdall.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-ddns-updater.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-flaresolverr.yaml --env-file docker-compose.env up -d
sudo docker compose --file docker-compose-portainer.yaml --env-file docker-compose.env up -d
```
Additionally, if there are some Docker applications you do not want to run in your MediaStack, then you just don't run the **`docker compose`** command for these applications.
</br>
---
Follow the deployment instructions at: [https://MediaStack.Guide](https://MediaStack.Guide)
See you on [Reddit for MediaStack](https://www.reddit.com/r/MediaStack/)
---

View File

@@ -0,0 +1,30 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Authelia (Authelia)
## Function: Multi-factor authentication portal for your Apps
##
## Documentation: https://hub.docker.com/r/authelia/authelia
## https://www.authelia.com/integration/prologue/get-started/
## https://www.linuxserver.io/blog/zero-trust-hosting-and-reverse-proxy-via-cloudflare-swag-and-authelia
##
###########################################################################
###########################################################################
services:
authelia:
image: ghcr.io/authelia/authelia:latest
container_name: authelia
volumes:
- ${FOLDER_FOR_DATA:?err}/authelia:/config
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
restart: unless-stopped
# NOTE: Authelia MUST NOT connect to the Gluetun VPN container
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,31 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Bazarr (LinuxServer.io)
## Function: Download subtitles for Radarr and Sonarr
##
## Documentation: https://docs.linuxserver.io/images/docker-bazarr
##
###########################################################################
###########################################################################
services:
bazarr:
image: lscr.io/linuxserver/bazarr:latest
container_name: bazarr
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/bazarr:/config
- ${FOLDER_FOR_MEDIA:?err}:/data
ports:
- "${WEBUI_PORT_BAZARR:?err}:6767"
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- TZ=${TIMEZONE:?err}
- DOCKER_MODS=ghcr.io/themepark-dev/theme.park:bazarr
- TP_THEME=${TP_THEME:?err}
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,54 @@
###########################################################################
###########################################################################
##
## Docker Compose File: DDNS-Updater (qmcgaw)
## Function: Update Dynamic IP addresses for DNS A and/or AAAA records
##
## Documentation: https://hub.docker.com/r/qmcgaw/ddns-updater
##
###########################################################################
###########################################################################
services:
ddns-updater:
image: qmcgaw/ddns-updater:latest
container_name: ddns-updater
restart: always
user: ${PUID:?err}:${PGID:?err}
volumes:
- ${FOLDER_FOR_DATA:?err}/ddns-updater:/updater/data
ports:
- ${WEBUI_PORT_DDNS_UPDATER:?err}:${WEBUI_PORT_DDNS_UPDATER:?err}/tcp
environment:
# - PUID=${PUID:?err} # Not used in DDNS-Updater - see above: user: ${PUID:?err}:${PGID:?err}
# - PGID=${PGID:?err} # Not used in DDNS-Updater - see above: user: ${PUID:?err}:${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
- CONFIG=
- PERIOD=5m
- UPDATE_COOLDOWN_PERIOD=5m
- PUBLICIP_FETCHERS=all
- PUBLICIP_HTTP_PROVIDERS=all
- PUBLICIPV4_HTTP_PROVIDERS=all
- PUBLICIPV6_HTTP_PROVIDERS=all
- PUBLICIP_DNS_PROVIDERS=all
- PUBLICIP_DNS_TIMEOUT=3s
- HTTP_TIMEOUT=10s
# Web UI
- LISTENING_ADDRESS=:${WEBUI_PORT_DDNS_UPDATER:?err}
- ROOT_URL=/
# Backup
- BACKUP_PERIOD=0 # 0 to disable
- BACKUP_DIRECTORY=/updater/data
# Other
- LOG_LEVEL=info
- LOG_CALLER=hidden
- SHOUTRRR_ADDRESSES=
# NOTE: DDNS-Update MUST NOT connect to the Gluetun VPN container
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,34 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Filebot (GitHub)
## Function: Lookup and Rename Media from Internet Databases
##
## Docker Page: https://github.com/filebot/filebot-docker#filebot-xpra
## Homepage: https://www.filebot.net/
## User Forum: https://www.filebot.net/forums
##
###########################################################################
###########################################################################
services:
filebot:
image: rednoah/filebot:xpra
container_name: filebot
restart: unless-stopped
ports:
- "${WEBUI_PORT_FILEBOT:?err}:5454"
volumes:
- ${FOLDER_FOR_DATA:?err}/filebot:/data/filebot
- ${FOLDER_FOR_MEDIA:?err}/filebot:/filebot
environment:
# - XPRA_AUTH=password:value=YOUR_PASSWORD
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
- DARK_MODE=1
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,27 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Flaresolverr (Flaresolverr)
## Function: Cloudflare Proxy Server
##
## Documentation: https://github.com/FlareSolverr/FlareSolverr
##
###########################################################################
###########################################################################
services:
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
restart: unless-stopped
ports:
- "${FLARESOLVERR_PORT:?err}:8191"
environment:
- LOG_LEVEL=info
- LOG_HTML=false
- CAPTCHA_SOLVER=none
- TZ=${TIMEZONE:?err}
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,29 @@
###########################################################################
###########################################################################
##
## Docker Compose File: FreshRss (LinuxServer.io)
## Function: Usenet Download Client
##
## Documentation: https://docs.linuxserver.io/images/docker-sabnzbd
##
###########################################################################
###########################################################################
services:
freshrss:
image: lscr.io/linuxserver/freshrss:latest
container_name: freshrss
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/freshrss:/config
ports:
- "${WEBUI_PORT_FRESHRSS:?err}:80"
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- TZ=${TIMEZONE:?err}
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,69 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Gluetun (qmcgaw)
## Function: VPN Client
##
## Documentation: https://github.com/qdm12/gluetun-wiki
##
###########################################################################
###########################################################################
networks:
mediastack:
name: mediastack
driver: bridge
ipam:
driver: default
config:
- subnet: ${DOCKER_SUBNET:?err}
gateway: ${DOCKER_GATEWAY:?err}
services:
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
restart: always
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
ports:
- "8320:8320/tcp" # Gluetun Local Network HTTP control server
- "8888:8888/tcp" # Gluetun Local Network HTTP proxy
- "8388:8388/tcp" # Gluetun Local Network Shadowsocks
- "8388:8388/udp" # Gluetun Local Network Shadowsocks
- "${WEBUI_PORT_QBITTORRENT:?err}:${WEBUI_PORT_QBITTORRENT:?err}" # WebUI Portal: qBittorrent
- "${QBIT_PORT:?err}:6881" # Transmission Torrent Port
volumes:
- ${FOLDER_FOR_DATA:?err}/gluetun:/gluetun
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
- VPN_SERVICE_PROVIDER=${VPN_SERVICE_PROVIDER:?err}
- OPENVPN_USER=${VPN_USERNAME:?err}
- OPENVPN_PASSWORD=${VPN_PASSWORD:?err}
- SERVER_COUNTRIES=${SERVER_COUNTRIES}
- SERVER_REGIONS=${SERVER_REGIONS}
- SERVER_CITIES=${SERVER_CITIES}
- SERVER_HOSTNAMES=${SERVER_HOSTNAMES}
- SERVER_CATEGORIES=${SERVER_CATEGORIES}
- FIREWALL_OUTBOUND_SUBNETS=${LOCAL_SUBNET:?err}
- OPENVPN_CUSTOM_CONFIG=${OPENVPN_CUSTOM_CONFIG}
- HTTP_CONTROL_SERVER_ADDRESS=:${GLUETUN_CONTROL_PORT:?err}
- VPN_TYPE=${VPN_TYPE}
- VPN_ENDPOINT_IP=${VPN_ENDPOINT_IP}
- VPN_ENDPOINT_PORT=${VPN_ENDPOINT_PORT}
- WIREGUARD_PUBLIC_KEY=${WIREGUARD_PUBLIC_KEY}
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
- WIREGUARD_PRESHARED_KEY=${WIREGUARD_PRESHARED_KEY}
- WIREGUARD_ADDRESSES=${WIREGUARD_ADDRESSES}
- HTTPPROXY=on
- SHADOWSOCKS=on
# NOTE: Gluetun VPN container MUST ONLY connect to the mediastack
networks:
- mediastack

View File

@@ -0,0 +1,32 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Heimdall (LinuxServer.io)
## Function: Organise links to web sites and web applications
##
## Documentation: https://docs.linuxserver.io/images/docker-heimdall
## https://docs.linuxserver.io/general/swag#using-heimdall-as-the-home-page-at-domain-root
##
###########################################################################
###########################################################################
services:
heimdall:
image: lscr.io/linuxserver/heimdall:latest
container_name: heimdall
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/heimdall:/config
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
ports:
- "${WEBUI_PORT_HEIMDALL:?err}:80"
# NOTE: Heimdall MUST NOT connect to the Gluetun VPN container
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,32 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Homarr (https://ghcr.io/)
## Function: Application Dashboard
##
## Documentation: https://homarr.dev/docs/getting-started/after-the-installation
##
###########################################################################
###########################################################################
services:
homarr:
image: ghcr.io/ajnart/homarr:latest
container_name: homarr
restart: unless-stopped
ports:
- "${WEBUI_PORT_HOMARR:?err}:7575"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${FOLDER_FOR_DATA:?err}/homarr/configs:/app/data/configs
- ${FOLDER_FOR_DATA:?err}/homarr/icons:/app/public/icons
- ${FOLDER_FOR_DATA:?err}/homarr/data:/data
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,32 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Homepage (https://ghcr.io/)
## Function: Application Dashboard
##
## Documentation: https://gethomepage.dev/latest/configs/
##
###########################################################################
###########################################################################
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
restart: unless-stopped
ports:
- ${WEBUI_PORT_HOMEPAGE:?err}:3000
volumes:
- ${FOLDER_FOR_DATA:?err}/homepage:/app/config
- /var/run/docker.sock:/var/run/docker.sock
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
# NOTE: Homepage MUST NOT connect to the Gluetun VPN container
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,22 @@
services:
jackett:
image: lscr.io/linuxserver/jackett:latest
container_name: jackett
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- TZ=${TIMEZONE:?err}
- AUTO_UPDATE=true #optional
# - RUN_OPTS= #optional
volumes:
- ${FOLDER_FOR_DATA:?err}/jackett/data:/config
- ${FOLDER_FOR_MEDIA:?err}:/downloads
ports:
- "${WEBUI_PORT_JACKET:?err}:9117"
restart: unless-stopped
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,38 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Jellyfin (LinuxServer.io)
## Function: Media Server
##
## Documentation: https://jellyfin.org/docs/general/administration/installing#docker
## https://jellyfin.org/docs/general/administration/hardware-acceleration/
##
###########################################################################
###########################################################################
services:
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
# Add Configurations for GPU Hardware Rendering Here:
# devices:
# - /dev/dri/renderD128:/dev/dri/renderD128
# - /dev/dri/card0:/dev/dri/card0
volumes:
- ${FOLDER_FOR_DATA:?err}/jellyfin:/config
- ${FOLDER_FOR_MEDIA:?err}/media:/data/media
ports:
- "${WEBUI_PORT_JELLYFIN:?err}:8096"
# - 7359:7359/udp # Enable for DLNA - Only works on HOST Network Mode
# - 1900:1900/udp # Enable for DLNA - Only works on HOST Network Mode
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
# - JELLYFIN_PublishedServerUrl=${LOCAL_DOCKER_IP:?err} # Enable for DLNA - Only works on HOST Network Mode
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,29 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Jellyseerr (fallenbagel)
## Function: Media Request Manager
##
## Documentation: https://hub.docker.com/r/fallenbagel/jellyseerr
##
###########################################################################
###########################################################################
services:
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/jellyseerr:/app/config
ports:
- "${WEBUI_PORT_JELLYSEERR:?err}:5055"
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,31 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Lidarr (LinuxServer.io)
## Function: Music Library Manager
##
## Documentation: https://docs.linuxserver.io/images/docker-lidarr
##
###########################################################################
###########################################################################
services:
lidarr:
image: lscr.io/linuxserver/lidarr:latest
container_name: lidarr
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/lidarr:/config
- ${FOLDER_FOR_MEDIA:?err}:/data
ports:
- "${WEBUI_PORT_LIDARR:?err}:8686"
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- TZ=${TIMEZONE:?err}
- DOCKER_MODS=ghcr.io/themepark-dev/theme.park:lidarr
- TP_THEME=${TP_THEME:?err}
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,31 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Mylar3 (LinuxServer.io)
## Function: Comic Library Manager
##
## Documentation: https://github.com/mylar3/mylar3/wiki
##
###########################################################################
###########################################################################
services:
mylar:
image: lscr.io/linuxserver/mylar3:latest
container_name: mylar
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/mylar:/config
- ${FOLDER_FOR_MEDIA:?err}:/data
ports:
- "${WEBUI_PORT_MYLAR:?err}:8090"
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- TZ=${TIMEZONE:?err}
- DOCKER_MODS=ghcr.io/themepark-dev/theme.park:mylar3
- TP_THEME=${TP_THEME:?err}
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,26 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Notifiarr
##
##
## Documentation: https://github.com/Notifiarr/notifiarr/blob/main/examples/compose.yml
###########################################################################
###########################################################################
services:
notifiarr:
image: golift/notifiarr:latest
container_name: notifiarr
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/notifiarr:/config
- /var/run/utmp:/var/run/utmp
- /etc/machine-id:/etc/machine-id
ports:
- "${WEBUI_PORT_NOTIFIARR:?err}:5454"
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,44 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Plex (LinuxServer.io)
## Function: Media Server
##
## Documentation: https://hub.docker.com/r/linuxserver/plex
##
###########################################################################
###########################################################################
services:
plex:
image: lscr.io/linuxserver/plex:latest
container_name: plex
restart: unless-stopped
# Add Configurations for GPU Hardware Rendering Here:
# devices:
# - /dev/dri/renderD128:/dev/dri/renderD128
# - /dev/dri/card0:/dev/dri/card0
volumes:
- ${FOLDER_FOR_DATA:?err}/plex:/config
- ${FOLDER_FOR_MEDIA:?err}/media:/data/media
ports:
- "${WEBUI_PORT_PLEX:?err}:32400"
# - 1900:1900/udp
# - 5353:5353/udp
- 8324:8324
- 32410:32410/udp
- 32412:32412/udp
- 32413:32413/udp
- 32414:32414/udp
- 32469:32469
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
- VERSION=docker
- PLEX_CLAIM=${PLEX_CLAIM}
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,21 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Portainer (Portainer.io)
## Function: Alternate GUI Manager for Docker
##
## Documentation: https://docs.portainer.io/start/install/server/docker
##
###########################################################################
###########################################################################
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${FOLDER_FOR_DATA:?err}/portainer:/data
ports:
- "${WEBUI_PORT_PORTAINER:?err}:9000"
network_mode: bridge

View File

@@ -0,0 +1,30 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Prowlarr (LinuxServer.io)
## Function: Indexer and Search Manager
##
## Documentation: https://docs.linuxserver.io/images/docker-prowlarr
##
###########################################################################
###########################################################################
services:
prowlarr:
image: lscr.io/linuxserver/prowlarr:develop
container_name: prowlarr
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/prowlarr:/config
ports:
- "${WEBUI_PORT_PROWLARR:?err}:9696"
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- TZ=${TIMEZONE:?err}
- DOCKER_MODS=ghcr.io/themepark-dev/theme.park:prowlarr
- TP_THEME=${TP_THEME:?err}
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,31 @@
###########################################################################
###########################################################################
##
## Docker Compose File: qBittorrent (LinuxServer.io)
## Function: Torrent Download Client
##
## Documentation: https://docs.linuxserver.io/images/docker-qbittorrent
##
###########################################################################
###########################################################################
services:
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/qbittorrent:/config
- ${FOLDER_FOR_MEDIA:?err}:/data
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
- WEBUI_PORT=${WEBUI_PORT_QBITTORRENT:?err}
- DOCKER_MODS=ghcr.io/themepark-dev/theme.park:qbittorrent
- TP_THEME=${TP_THEME:?err}
## Do Not Change Network for qBittorrent
## qBittorrent MUST always use a VPN / Secure Internet connection
network_mode: "container:gluetun"

View File

@@ -0,0 +1,31 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Radarr (LinuxServer.io)
## Function: Movie Library Manager
##
## Documentation: https://docs.linuxserver.io/images/docker-radarr
##
###########################################################################
###########################################################################
services:
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/radarr:/config
- ${FOLDER_FOR_MEDIA:?err}:/data
ports:
- "${WEBUI_PORT_RADARR:?err}:7878"
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- TZ=${TIMEZONE:?err}
- DOCKER_MODS=ghcr.io/themepark-dev/theme.park:radarr
- TP_THEME=${TP_THEME:?err}
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,31 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Readarr (LinuxServer.io)
## Function: Book Library Manager
##
## Documentation: https://docs.linuxserver.io/images/docker-readarr
##
###########################################################################
###########################################################################
services:
readarr:
image: lscr.io/linuxserver/readarr:develop
container_name: readarr
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/readarr:/config
- ${FOLDER_FOR_MEDIA:?err}:/data
ports:
- "${WEBUI_PORT_READARR:?err}:8787"
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- TZ=${TIMEZONE:?err}
- DOCKER_MODS=ghcr.io/themepark-dev/theme.park:readarr
- TP_THEME=${TP_THEME:?err}
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,31 @@
###########################################################################
###########################################################################
##
## Docker Compose File: SABnzbd (LinuxServer.io)
## Function: Usenet Download Client
##
## Documentation: https://docs.linuxserver.io/images/docker-sabnzbd
##
###########################################################################
###########################################################################
services:
sabnzbd:
image: lscr.io/linuxserver/sabnzbd:latest
container_name: sabnzbd
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/sabnzbd:/config
- ${FOLDER_FOR_MEDIA:?err}:/data
ports:
- "${WEBUI_PORT_SABNZBD:?err}:8080"
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- TZ=${TIMEZONE:?err}
- DOCKER_MODS=ghcr.io/themepark-dev/theme.park:sabnzbd
- TP_THEME=${TP_THEME:?err}
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,31 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Sonarr (LinuxServer.io)
## Function: Series Library Manager (TV Shows)
##
## Documentation: https://docs.linuxserver.io/images/docker-sonarr
##
###########################################################################
###########################################################################
services:
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/sonarr:/config
- ${FOLDER_FOR_MEDIA:?err}:/data
ports:
- "${WEBUI_PORT_SONARR:?err}:8989"
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- TZ=${TIMEZONE:?err}
- DOCKER_MODS=ghcr.io/themepark-dev/theme.park:sonarr
- TP_THEME=${TP_THEME:?err}
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,46 @@
###########################################################################
###########################################################################
##
## Docker Compose File: SWAG (LinuxServer.io)
## Function: Reverse proxy with Certbot, for Let's Encrypt / ZeroSSL
##
## Documentation: https://docs.linuxserver.io/general/swag
## https://www.linuxserver.io/blog/zero-trust-hosting-and-reverse-proxy-via-cloudflare-swag-and-authelia
##
###########################################################################
###########################################################################
services:
swag:
image: lscr.io/linuxserver/swag:latest
container_name: swag
cap_add:
- NET_ADMIN
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/swag:/config
ports:
- ${REVERSE_PROXY_PORT_HTTP:?err}:80
- ${REVERSE_PROXY_PORT_HTTPS:?err}:443
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
- URL=${DOMAINNAME:?err}
- SUBDOMAINS=${SUBDOMAINS}
- VALIDATION=${VALIDATION:?err}
- CERTPROVIDER=${CERTPROVIDER}
- DNSPLUGIN=${DNSPLUGIN}
- PROPAGATION=${PROPAGATION}
- DUCKDNSTOKEN=${DUCKDNSTOKEN}
- EMAIL=${EMAIL}
- ONLY_SUBDOMAINS=${ONLY_SUBDOMAINS}
- EXTRA_DOMAINS=${EXTRA_DOMAINS}
- STAGING=${STAGING}
# NOTE: SWAG MUST NOT connect to the Gluetun VPN container
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,59 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Tdarr V2 (haveagitgat/tdarr)
## Function: Tdarr V2 - Audio/Video library transcoding automation
## (Contains Tdarr_Server and WebUI )
##
## Documentation: https://docs.tdarr.io/docs/installation/docker/run-compose/
## https://docs.tdarr.io/docs/installation/docker/hardware-transcoding
##
###########################################################################
###########################################################################
services:
tdarr:
image: ghcr.io/haveagitgat/tdarr:latest
container_name: tdarr
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/tdarr/server:/app/server
- ${FOLDER_FOR_DATA:?err}/tdarr/configs:/app/configs
- ${FOLDER_FOR_DATA:?err}/tdarr/logs:/app/logs
- ${FOLDER_FOR_DATA:?err}/tdarr_transcode_cache:/temp
- ${FOLDER_FOR_MEDIA:?err}/media:/data
ports:
- "${TDARR_SERVER_PORT:?err}:${TDARR_SERVER_PORT:?err}"
- "${WEBUI_PORT_TDARR:?err}:${WEBUI_PORT_TDARR:?err}"
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
- serverIP=0.0.0.0
- serverPort=${TDARR_SERVER_PORT:?err}
- webUIPort=${WEBUI_PORT_TDARR:?err}
- internalNode=true
- nodeID=Tdarr_Server
tdarr-node:
image: ghcr.io/haveagitgat/tdarr_node:latest
container_name: tdarr-node
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/tdarr/configs:/app/configs
- ${FOLDER_FOR_DATA:?err}/tdarr/logs:/app/logs
- ${FOLDER_FOR_DATA:?err}/tdarr_transcode_cache:/temp
- ${FOLDER_FOR_MEDIA:?err}/media:/data
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
- nodeID=Tdarr_Node_1
- serverIP=0.0.0.0
- serverPort=${TDARR_SERVER_PORT:?err}
networks:
default:
name: mediastack
external: true

View File

@@ -0,0 +1,102 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Unpackerr (Hotio.Dev)
## Function: Archive Media Extraction
##
## Documentation: https://github.com/davidnewhall/unpackerr
## https://github.com/davidnewhall/unpackerr/blob/master/examples/docker-compose.yml
##
###########################################################################
###########################################################################
services:
unpackerr:
image: ghcr.io/hotio/unpackerr:latest
container_name: unpackerr
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/unpackerr:/config
- ${FOLDER_FOR_MEDIA:?err}:/data
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
# Documentation on all Environment Variables can be found at:
# https://github.com/davidnewhall/unpackerr#docker-env-variables
- UN_DEBUG=false
- UN_LOG_FILE=
- UN_LOG_FILES=10
- UN_LOG_FILE_MB=10
- UN_INTERVAL=2m
- UN_START_DELAY=1m
- UN_RETRY_DELAY=5m
- UN_MAX_RETRIES=3
- UN_PARALLEL=1
- UN_FILE_MODE=0664
- UN_DIR_MODE=0775
# Sonarr Config - Copy API Key from: http://sonarr:8989/general/settings
- UN_SONARR_0_URL=http://sonarr:8989
- UN_SONARR_0_API_KEY=
- UN_SONARR_0_PATHS_0=/data/torrents/anime
- UN_SONARR_0_PATHS_1=/data/torrents/tv
- UN_SONARR_0_PROTOCOLS=torrent
- UN_SONARR_0_TIMEOUT=10s
- UN_SONARR_0_DELETE_ORIG=false
- UN_SONARR_0_DELETE_DELAY=5m
# Radarr Config - Copy API Key from: http://radarr:7878/general/settings
- UN_RADARR_0_URL=http://radarr:7878
- UN_RADARR_0_API_KEY=
- UN_RADARR_0_PATHS_0=/data/torrents/movies
- UN_RADARR_0_PROTOCOLS=torrent
- UN_RADARR_0_TIMEOUT=10s
- UN_RADARR_0_DELETE_ORIG=false
- UN_RADARR_0_DELETE_DELAY=5m
# Lidarr Config - Copy API Key from: http://lidarr:8686/general/settings
- UN_LIDARR_0_URL=http://lidarr:8686
- UN_LIDARR_0_API_KEY=
- UN_LIDARR_0_PATHS_0=/data/torrents/music
- UN_LIDARR_0_PROTOCOLS=torrent
- UN_LIDARR_0_TIMEOUT=10s
- UN_LIDARR_0_DELETE_ORIG=false
- UN_LIDARR_0_DELETE_DELAY=5m
# Readarr Config - Copy API Key from: http://readarr:8787/general/settings
- UN_READARR_0_URL=http://readarr:8787
- UN_READARR_0_API_KEY=
- UN_READARR_0_PATHS_0=/data/torrents/books
- UN_READARR_0_PROTOCOLS=torrent
- UN_READARR_0_TIMEOUT=10s
- UN_READARR_0_DELETE_ORIG=false
- UN_READARR_0_DELETE_DELAY=5m
# Folder Config
- UN_FOLDER_0_PATH=
- UN_FOLDER_0_EXTRACT_PATH=
- UN_FOLDER_0_DELETE_AFTER=10m
- UN_FOLDER_0_DELETE_ORIGINAL=false
- UN_FOLDER_0_DELETE_FILES=false
- UN_FOLDER_0_MOVE_BACK=false
# Webhook Config
- UN_WEBHOOK_0_URL=
- UN_WEBHOOK_0_NAME=
- UN_WEBHOOK_0_NICKNAME=Unpackerr
- UN_WEBHOOK_0_CHANNEL=
- UN_WEBHOOK_0_TIMEOUT=10s
- UN_WEBHOOK_0_SILENT=false
- UN_WEBHOOK_0_IGNORE_SSL=false
- UN_WEBHOOK_0_EXCLUDE_0=
- UN_WEBHOOK_0_EVENTS_0=0
- UN_WEBHOOK_0_TEMPLATE_PATH=
- UN_WEBHOOK_0_CONTENT_TYPE=application/json
# Command Hook Config
- UN_CMDHOOK_0_COMMAND=
- UN_CMDHOOK_0_NAME=
- UN_CMDHOOK_0_TIMEOUT=10s
- UN_CMDHOOK_0_SILENT=false
- UN_CMDHOOK_0_SHELL=false
- UN_CMDHOOK_0_EXCLUDE_0=
- UN_CMDHOOK_0_EVENTS_0=0
security_opt:
- no-new-privileges:true
network_mode: none

View File

@@ -0,0 +1,30 @@
###########################################################################
###########################################################################
##
## Docker Compose File: Whisparr (Hotio.Dev)
## Function: Adult Media Library Manager
##
## Documentation: https://wiki.servarr.com/whisparr
##
###########################################################################
###########################################################################
services:
whisparr:
image: hotio/whisparr:nightly
container_name: whisparr
restart: unless-stopped
volumes:
- ${FOLDER_FOR_DATA:?err}/whisparr:/config
- ${FOLDER_FOR_MEDIA:?err}:/data
ports:
- "${WEBUI_PORT_WHISPARR:?err}:6969"
environment:
- PUID=${PUID:?err}
- PGID=${PGID:?err}
- UMASK=${UMASK:?err}
- TZ=${TIMEZONE:?err}
networks:
default:
name: mediastack
external: true

142
docker/docker-compose.env Normal file
View File

@@ -0,0 +1,142 @@
#################################################################################
#################################################################################
#################################################################################
##
## Docker Compose Environment Variable file for Jellyfin / *ARR Media Stack
##
## Update any of the environment variables below as required.
##
## It is highly recommended Linux users set up a "docker" user, so the
## applications can access the local filesystem with this user's access
## privileges. Use PUID / PGID to map user access between the Docker apps
## and local filesystem.
##
## The MediaStack Guide is located at https://MediaStack.Guide
##
#################################################################################
#################################################################################
#################################################################################
# Name of the project in Docker
COMPOSE_PROJECT_NAME=mediastack
# This is the network subnet which will be used inside the docker "media_network", change as required.
# LOCAL_SUBNET is your home network and is needed so the VPN client allows access to your home computers.
DOCKER_SUBNET=172.28.10.0/24
DOCKER_GATEWAY=172.28.10.1
LOCAL_SUBNET=10.0.0.0/22 # This is the IP Subnet used on your home network
LOCAL_DOCKER_IP=10.0.0.156 # This is the IP Address of your Docker computer
# Each of the "*ARR" applications have been configured so the theme can be changed to your needs.
# Refer to Theme Park for more info / options: https://docs.theme-park.dev/theme-options/aquamarine/
TP_THEME=nord
# If you intend to use Plex as your Media Server, then enter your Plex Claim
# information below, to link this Plex Media Server to your Plex account
PLEX_CLAIM=
# These are the folders on your local host computer / NAS running docker, they MUST exist
# and have correct permissions for PUID and PGUI prior to running the docker compose.
#
# Use the commands in the Guide to create all the sub-folders in each of these folders.
# Host Data Folders - Will accept Linux, Windows, NAS folders.
# Make sure these folders exists before running the "docker compose" command.
FOLDER_FOR_MEDIA=/mediastack/media # <-- Update for your folders - Synology Example: /volume1/media
FOLDER_FOR_DATA=/mediastack/appdata # <-- Update for your folders - Synology Example: /volume1/docker/appdata
# File access, date and time details for the containers / applications to use.
# Run "sudo id docker" on host computer to find PUID / PGID and update these to suit.
PUID=1000
PGID=1000
UMASK=0002
TIMEZONE=Europe/Paris
# Update your own Internet VPN provide details below
# Online documentation: https://github.com/qdm12/gluetun-wiki/tree/main/setup/providers
VPN_TYPE=openvpn
VPN_SERVICE_PROVIDER=nordvpn
VPN_USERNAME=FNigjfrq51hVWgfmLDj68GN4
VPN_PASSWORD=a75LUip6nrgbLdSmLte24MXw
# You MUST provide at least one entry to the SERVER variables below, that supports your VPN provider's settings.
# If you want to add more than one entry per line, use comma separated values: "one,two,three" etc...
SERVER_COUNTRIES=Italy
SERVER_REGIONS=Europe
SERVER_CITIES=
SERVER_HOSTNAMES=
SERVER_CATEGORIES=
# Fill in this item ONLY if you're using a custom OpenVPN configuration
# Should be inside gluetun data folder - Example: /gluetun/custom-openvpn.conf
# You can then edit it inside the FOLDER_FOR_DATA location for gluetun.
OPENVPN_CUSTOM_CONFIG=
GLUETUN_CONTROL_PORT=8320
# Fill in these items ONLY if you change VPN_TYPE to "wireguard"
VPN_ENDPOINT_IP=
VPN_ENDPOINT_PORT=
WIREGUARD_PUBLIC_KEY=
WIREGUARD_PRIVATE_KEY=
WIREGUARD_PRESHARED_KEY=
WIREGUARD_ADDRESSES=
# These are the default ports used to access each of the application in your web browser.
# You can safely change these if you need, but they can't conflict with other active ports.
QBIT_PORT=6881
FLARESOLVERR_PORT=8191
TDARR_SERVER_PORT=8266
WEBUI_PORT_TDARR=8265
WEBUI_PORT_BAZARR=6767
WEBUI_PORT_DDNS_UPDATER=8310
WEBUI_PORT_FILEBOT=5454
WEBUI_PORT_HEIMDALL=2080
WEBUI_PORT_FRESHRSS=3280
WEBUI_PORT_HOMARR=3200
WEBUI_PORT_HOMEPAGE=3000
WEBUI_PORT_JELLYFIN=8096
WEBUI_PORT_JELLYSEERR=5055
WEBUI_PORT_LIDARR=8686
WEBUI_PORT_MYLAR=8090
WEBUI_PORT_NOTIFIARR=5454
WEBUI_PORT_PLEX=32400
WEBUI_PORT_PORTAINER=9000
WEBUI_PORT_PROWLARR=9696
WEBUI_PORT_QBITTORRENT=8200
WEBUI_PORT_RADARR=7878
WEBUI_PORT_READARR=8787
WEBUI_PORT_SONARR=8989
WEBUI_PORT_SABNZBD=8100
WEBUI_PORT_WHISPARR=6969
WEBUI_PORT_JACKET=9117
# SWAG is configured for Reverse Proxy. Set your Internet gateway to redirect incoming ports 80 and 443
# to the ports used below (using Docker IP Address), and they will be translated back to 80 and 443 by SWAG.
# Change these port numbers if you have conflicting services running on the Docker host computer.
# If ports 80 and 443 are already used, then adjust and redirect incoming ports to 5080 and 5443, or similar.
REVERSE_PROXY_PORT_HTTP=80
REVERSE_PROXY_PORT_HTTPS=443
# SWAG REVERSE PROXY SETTINGS:
DOMAINNAME=your-domain-name-goes-here.com
SUBDOMAINS=wildcard
VALIDATION=dns
DNSPLUGIN=cloudflare
CERTPROVIDER=letsencrypt
PROPAGATION=
DUCKDNSTOKEN=
EMAIL=
ONLY_SUBDOMAINS=false
EXTRA_DOMAINS=
STAGING=false
# Cloudflare Tunnel for SWAG
CF_ZONE_ID=
CF_ACCOUNT_ID=
CF_API_TOKEN=
CF_TUNNEL_NAME=
CF_TUNNEL_TOKEN=