2 Commits

Author SHA1 Message Date
npatenaude 0edafb6a51 Added env examples and scripts 2026-04-04 17:48:57 +00:00
npatenaude 9a9f269699 Added Qbittorrent and Gluetun 2026-03-30 00:55:51 +00:00
7 changed files with 215 additions and 101 deletions
+3
View File
@@ -7,6 +7,9 @@ Config/Prowlarr/*
Config/Radarr/* Config/Radarr/*
Config/Sonarr/* Config/Sonarr/*
config/
*.log *.log
*.pid *.pid
*.sock *.sock
+94
View File
@@ -0,0 +1,94 @@
When Setting up dependancies:
no localhost -- use radarr:XXXX ect
For download client -- Host: host.docker.internal
save this as docker-compose.yml
In the directory
run: docker compose up -d
check: docker ps
stop: docker compose down
version: "3.9"
services:
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
environment:
- PUID=1000
- PGID=1000
- TZ=America/Detroit
volumes:
- "C:/Media Server Testing/Config/jellyfin:/config"
- "C:/Media Server Testing/Media/Movies:/data/movies"
- "C:/Media Server Testing/Media/TV Shows:/data/tvshows"
ports:
- 8096:8096
restart: unless-stopped
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
environment:
- LOG_LEVEL=debug
- TZ=America/Detroit
ports:
- 5055:5055
volumes:
- "C:/Media Server Testing/Config/jellyseer:/app/config"
restart: unless-stopped
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=1000
- PGID=1000
- TZ=America/Detroit
volumes:
- "C:/Media Server Testing/Config/sonarr:/config"
- "M:/Media Server Testing/Media/TV Shows:/data/tvshows"
- "M:/Media Server Testing/Media/Downloads:/downloads"
ports:
- 8989:8989
restart: unless-stopped
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=1000
- PGID=1000
- TZ=America/Detroit
volumes:
- "C:/Media Server Testing/Config/Radarr:/config"
- "M:/Media Server Testing/Media/Movies:/data/movies"
- "M:/Media Server Testing/Media/Downloads:/downloads"
ports:
- 7878:7878
restart: unless-stopped
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=1000
- PGID=1000
- TZ=America/Detroit
volumes:
- "C:/Media Server Testing/Config/prowlarr:/config"
ports:
- 9696:9696
restart: unless-stopped
flaresolverr:
# DockerHub mirror flaresolverr/flaresolverr:latest
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
environment:
- LOG_LEVEL=info
- TZ=America/Detroit
ports:
- 8191:8191
restart: unless-stopped
+7 -25
View File
@@ -9,41 +9,27 @@
### Information: ### Information:
This is hopefully a comprehensive stack for the automated Jellyfin server. This folder contains the compose and config files for all media server utilities
It contains all of the needed containers for the server hosting, download managers, indexers, and vpns
### Instructions:
- copy the `docker-compose.yml` and `example.env` to your chosen directory (preferably `~/docker/media_server`)
- rename `example.env` to `.env`, fill out the needed fields for the media mapping and vpn settings
- run `docker compose up -d`
### Services: ### Services:
- **Bazarr** --> Subtitle manager - **Bazarr** --> Subtitle manager
- **Flaresolverr** --> cloudflare proxy for indexers - **Flaresolverr** --> cloudflare proxy for indexers
- **Gluetun** --> VPN Container
- **Jellyfin** --> Main media server manager and UI - **Jellyfin** --> Main media server manager and UI
- **Jellyseer** --> Media search and resquest UI - **Jellyseer** --> Media search and resquest UI
- **Prowlarr** --> Inderxer manager - **Prowlarr** --> Inderxer manager
- **qBittorrent** --> Torrent client
- **Radarr** --> Movies download automator and manager - **Radarr** --> Movies download automator and manager
- **Sonarr** --> TV shows download automator and manager - **Sonarr** --> TV shows download automator and manager
### Contents: ### Contents:
**`Media Server/`** **`Media Server/`**
├── **`Config/`** ├── **`Config/`**
│   ├── **`Bazarr/`** │   ├── **`Bazarr/`**
│   ├── **`Flaresolverr/`** │   ├── **`Flaresolverr/`**
│   ├── **`Gluetun/`**
│   ├── **`Jellyfin/`** │   ├── **`Jellyfin/`**
│   ├── **`Jellyseer/`** │   ├── **`Jellyseer/`**
│   ├── **`Prowlarr/`** │   ├── **`Prowlarr/`**
│   ├── **`qBittorrent/`**
│   ├── **`Radarr/`** │   ├── **`Radarr/`**
│   └── **`Sonarr/`** │   └── **`Sonarr/`**
├── **`docker-compose.yml/`** ├── **`docker-compose.yml/`**
@@ -55,11 +41,9 @@ It contains all of the needed containers for the server hosting, download manage
- **`Config/`**: Mian configuration folder - **`Config/`**: Mian configuration folder
- **`Bazarr/`**: Config data - **`Bazarr/`**: Config data
- **`Flaresolverr/`**: config data - **`Flaresolverr/`**: config data
- **`Gluetun/`**: Config data
- **`Jellyfin/`**: Config data - **`Jellyfin/`**: Config data
- **`Jellyseer/`**: Config data - **`Jellyseer/`**: Config data
- **`Prowlarr/`**: Config data - **`Prowlarr/`**: Config data
- **`qBittorent/`**: Config data
- **`Radarr/`**: Config data - **`Radarr/`**: Config data
- **`Sonarr/`**: Config data - **`Sonarr/`**: Config data
- **`docker-compose.yml/`**: Docker Compose file - **`docker-compose.yml/`**: Docker Compose file
@@ -68,11 +52,9 @@ It contains all of the needed containers for the server hosting, download manage
### Current Ports ### Current Ports
- `6767` --> Bazarr - find later
- `8198` --> Flaresolverr
- `8096` --> Jellyfin
- `5055` --> Jellyseer
- `9696` --> Prowlarr
- `8080` --> qBittorrent
- `7878` --> Radarr
- `8989` --> Sonarr
+57 -54
View File
@@ -7,12 +7,21 @@ services:
- PUID=1000 - PUID=1000
- PGID=1000 - PGID=1000
- TZ=America/Detroit - TZ=America/Detroit
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
volumes: volumes:
- ${JELLYFIN_CONFIG}:/config - "./config/jellyfin:/config"
- ${MOVIES}:/data/movies - "/home/npate/storage/media/movies:/data/movies"
- ${TV_SHOWS}:/data/tvshows - "/home/npate/storage/media/tvshows:/data/tvshows"
ports: ports:
- 8096:8096 - 8096:8096
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
restart: unless-stopped restart: unless-stopped
jellyseerr: jellyseerr:
@@ -24,7 +33,7 @@ services:
ports: ports:
- 5055:5055 - 5055:5055
volumes: volumes:
- ${JELLYSEER_CONFIG}:/app/config - "./config/jellyseerr:/app/config"
restart: unless-stopped restart: unless-stopped
sonarr: sonarr:
@@ -35,9 +44,9 @@ services:
- PGID=1000 - PGID=1000
- TZ=America/Detroit - TZ=America/Detroit
volumes: volumes:
- ${SONARR_CONFIG}:/config - "./config/sonarr:/config"
- ${TV_SHOWS}:/data/tvshows - "/home/npate/storage/media/tvshows:/data/tvshows"
- ${DOWNLOADS}:/downloads - "/home/npate/storage/media/downloads:/downloads"
ports: ports:
- 8989:8989 - 8989:8989
restart: unless-stopped restart: unless-stopped
@@ -50,9 +59,9 @@ services:
- PGID=1000 - PGID=1000
- TZ=America/Detroit - TZ=America/Detroit
volumes: volumes:
- ${RADARR_CONFIG}:/config - "./config/radarr:/config"
- ${MOVIES}:/data/movies - "/home/npate/storage/media/movies:/data/movies"
- ${DOWNLOADS}:/downloads - "/home/npate/storage/media/downloads:/downloads"
ports: ports:
- 7878:7878 - 7878:7878
restart: unless-stopped restart: unless-stopped
@@ -65,11 +74,45 @@ services:
- PGID=1000 - PGID=1000
- TZ=America/Detroit - TZ=America/Detroit
volumes: volumes:
- ${PROWLARR_CONFIG}:/config - "./config/prowlarr:/config"
ports: ports:
- 9696:9696 - 9696:9696
restart: unless-stopped restart: unless-stopped
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
cap_add:
- NET_ADMIN
environment:
- VPN_SERVICE_PROVIDER=nordvpn
- VPN_TYPE=openvpn
- OPENVPN_USER=${NORDVPN_USER}
- OPENVPN_PASSWORD=${NORDVPN_PASSWORD}
- SERVER_COUNTRIES=${NORDVPN_SERVER_COUNTRIES:-United States}
- TZ=America/Detroit
volumes:
- "./config/gluetun:/gluetun"
ports:
- 8080:8080
restart: unless-stopped
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
network_mode: "service:gluetun"
depends_on:
- gluetun
environment:
- PUID=1000
- PGID=1000
- TZ=America/Detroit
- WEBUI_PORT=8080
volumes:
- "./config/qbittorrent:/config"
- "/home/npate/storage/media/downloads:/downloads"
restart: unless-stopped
flaresolverr: flaresolverr:
# DockerHub mirror flaresolverr/flaresolverr:latest # DockerHub mirror flaresolverr/flaresolverr:latest
image: ghcr.io/flaresolverr/flaresolverr:latest image: ghcr.io/flaresolverr/flaresolverr:latest
@@ -89,49 +132,9 @@ services:
- PGID=1000 - PGID=1000
- TZ=Etc/UTC - TZ=Etc/UTC
volumes: volumes:
- ${BAZARR_CONFIG}:/config - "./config/bazarr:/config"
- ${MOVIES}:/data/movies - "/home/npate/storage/media/movies:/data/movies"
- ${TV_SHOWS}:/data/tvshows - "/home/npate/storage/media/tvshows:/data/tvshows"
ports: ports:
- 6767:6767 - 6767:6767
restart: unless-stopped restart: unless-stopped
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
cap_add:
- NET_ADMIN
environment:
- VPN_SERVICE_PROVIDER=${VPN_SERVICE_PROVIDER}
# OpenVPN:
- VPN_TYPE=openvpn
- OPENVPN_USER=${OPENVPN_USER}
- OPENVPN_PASSWORD=${OPENVPN_PASSWORD}
# Wireguard:
# - VPN_TYPE=wireguard
# - WIREGUARD_PRIVATE_KEY=${WIREGAURD_PRIVATE_KEY}
# - WIREGUARD_ADDRESSES=${WIREGUARD_ADDRESSES}
- SERVER_COUNTRIES=${SERVER_COUNTRIES}
# Gluetun wiki has other env var for specific vpns
- TZ=America/Detroit
volumes:
- ${GLUETUN_CONFIG}:/gluetun
ports:
- 8080:8080
restart: unless-stopped
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
network_mode: "service:gluetun"
depends_on:
- gluetun
environment:
- PUID=1000
- PGID=1000
- TZ=America/Detroit
- WEBUI_PORT=8080
volumes:
- ${QBITTORRENT_CONFIG}:/config
- ${DOWNLOADS}:/downloads
restart: unless-stopped
+9
View File
@@ -0,0 +1,9 @@
# NordVPN credentials for Gluetun
# Get these from: https://my.nordaccount.com/dashboard/nordvpn/ -> Manual Setup
# These are *service* credentials, not your regular NordVPN login
NORDVPN_USER=
NORDVPN_PASSWORD=
# Optional: Comma-separated list of countries (e.g. "United States", "Canada", "Netherlands")
# Leave unset to use "United States"
# NORDVPN_SERVER_COUNTRIES=United States
-22
View File
@@ -1,22 +0,0 @@
# Config Paths
JELLYFIN_CONFIG=./jellyfin
JELLYSEER_CONFIG=./jellyseer
SONARR_CONFIG=./sonarr
RADARR_CONFIG=./radarr
PROWLARR_CONFIG=./prowlarr
BAZARR_CONFIG=./bazarr
GLUETUN_CONFIG=./gluetun
QBITTORRENT_CONFIG=./qbittorrent
# Media Storage Paths
DOWNLOADS=
MOVIES=
TV_SHOWS=
# VPN Setup (OpenVPN or wireguard)
VPN_SERVICE_PROVIDER=
OPENVPN_USER=
OPENVPN_PASSWORD=
# WIREGUARD_PRIVATE_KEY=
# WIREGUARD_ADDRESSES=
SERVER_COUNTRIES=
+45
View File
@@ -0,0 +1,45 @@
#!/usr/bin/env bash
# Install proprietary NVIDIA driver + NVIDIA Container Toolkit on Ubuntu (for Docker GPU).
# Run on the server: bash scripts/install-nvidia-stack.sh
# Reboot after completion, then: nvidia-smi
set -euo pipefail
echo "==> Updating apt"
sudo apt-get update
echo "==> Installing ubuntu-drivers-common"
sudo apt-get install -y ubuntu-drivers-common
echo "==> Detected devices / recommendations:"
ubuntu-drivers devices || true
echo "==> Installing recommended proprietary NVIDIA driver"
sudo ubuntu-drivers autoinstall
echo "==> Adding NVIDIA Container Toolkit repository"
sudo apt-get install -y curl gnupg2
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
echo "==> Installing nvidia-container-toolkit"
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
echo "==> Configuring Docker to use NVIDIA runtime"
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
echo ""
echo "Done. Reboot the server so the kernel loads the NVIDIA driver:"
echo " sudo reboot"
echo ""
echo "After reboot, verify:"
echo " nvidia-smi"
echo " docker run --rm --gpus all nvidia/cuda:12.6.3-base-ubuntu22.04 nvidia-smi"
echo ""
echo "Then recreate Jellyfin:"
echo " cd $(dirname "$(dirname "$(readlink -f "$0")")") && docker compose up -d jellyfin"