diff --git a/.env.example b/.env.example
index d1292bb..18baaee 100644
--- a/.env.example
+++ b/.env.example
@@ -1,6 +1,8 @@
USER_ID=1000
GROUP_ID=1000
TIMEZONE="America/New_York"
+DATA_ROOT="/mnt/data"
+DOWNLOAD_ROOT="/mnt/data/torrents"
PIA_LOCATION=ca
PIA_USER=
PIA_PASS=
diff --git a/CONFIGURATION.md b/CONFIGURATION.md
index ce6e8ca..bce10dd 100644
--- a/CONFIGURATION.md
+++ b/CONFIGURATION.md
@@ -23,9 +23,7 @@ but you could use other providers:
- NordVPN + OpenVPN: [bubuntux/nordvpn](https://hub.docker.com/r/bubuntux/nordvpn/dockerfile)
- NordVPN + Wireguard (NordLynx): [bubuntux/nordlynx](https://hub.docker.com/r/bubuntux/nordlynx)
-For PIA + Wireguard, copy the example `.env` and fill it with your PIA credentials:
-
-`cp .env.example .env`
+For PIA + Wireguard, fill `.env` and fill it with your PIA credentials.
The location of the server it will connect to is set by `LOC=ca`, defaulting to Montreal - Canada.
@@ -68,8 +66,8 @@ place in the VPN container, the hostname for qBittorrent is the hostname of the
The indexers are configured through Prowlarr. They synchronize automatically to Radarr and Sonarr.
-Radarr and Sonarr may then be added via Settongs > Apps. The Prowlarr server is `http://prowlarr:9696`, the Radarr server
-is `http://radarr:7878` and Sonarr `http://sonarr:8989`:
+Radarr and Sonarr may then be added via Settongs > Apps. The Prowlarr server is `http://prowlarr:9696/prowlarr`, the Radarr server
+is `http://radarr:7878/radarr` and Sonarr `http://sonarr:8989/sonarr`:
![](https://cdn.poupa.net/uploads/2022/03/sonarr.png)
@@ -95,7 +93,7 @@ The web UI login page can be disabled on for the local network in Settings > Web
## Heimdall
-Applications can be added in Items > Add. The URLs should be the static IP, ie: `http://192.168.0.10:8989/` for Sonarr
+Applications can be added in Items > Add. The URLs should be the static IP, ie: `http://192.168.0.10/` for Sonarr
for example.
![](https://cdn.poupa.net/uploads/2022/03/homepage.png)
diff --git a/INSTALL.md b/INSTALL.md
index 9f5d028..2508055 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -61,6 +61,9 @@ copy `/usr/libexec/docker/cli-plugins` rather than `$HOME/.docker/cli-plugins/do
You may then run the applications with `sudo docker compose up -d`
+Then, to update the Sonarr/Radarr/Prowlarr base path, please run `./update-config.sh`.
+This is only needed for the first time, and will update their `config.xml` file to set the correct path.
+
## NFS Share
It is now time to share the folders to other local devices using NFS, as it is easy to set up and fast.
diff --git a/README.md b/README.md
index 59125ac..b7775c2 100644
--- a/README.md
+++ b/README.md
@@ -15,12 +15,13 @@ The following applications are available:
- [PIA Wireguard VPN](https://github.com/thrnz/docker-wireguard-pia): Encapsulate qBittorrent traffic in
[PIA](https://www.privateinternetaccess.com/) with [Wireguard](https://www.wireguard.com/) with port forwarding.
- [Heimdall](https://heimdall.site/): Application dashboard
+- [Traefik](https://traefik.io/): Reverse proxy
## Installation
See [installation instructions](./INSTALL.md).
-TLDR: `cp .env.example .env`, edit to your needs then `sudo docker compose up -d`
+TLDR: `cp .env.example .env`, edit to your needs then `sudo docker compose up -d`, then for the first time `./update-config.sh`.
## Configuration
@@ -28,19 +29,20 @@ See [configuration](./CONFIGURATION.md).
## Containers
-| **Application** | **Image** | **Port** | **Notes** |
-|-------------------|------------------------------------------------------------------------------------|----------|-------------------------------------------------------------------|
-| Sonarr | [linuxserver/sonarr](https://hub.docker.com/r/linuxserver/sonarr) | 8989 | |
-| Radarr | [linuxserver/radarr](https://hub.docker.com/r/linuxserver/radarr) | 7878 | |
-| Prowlarr | [linuxserver/prowlarr:develop](https://hub.docker.com/r/linuxserver/prowlarr) | 9696 | `develop` tag as it is not stable yet |
-| PIA Wireguard VPN | [thrnz/docker-wireguard-pia](https://hub.docker.com/r/thrnz/docker-wireguard-pia) | | |
-| qBittorrent | [linuxserver/qbittorrent:14.3.9](https://hub.docker.com/r/linuxserver/qbittorrent) | 8080 | Uses VPN network
Frozen to v4.3.9 due to Libtorrent 2.x issues |
-| Heimdall | [linuxserver/heimdall](https://hub.docker.com/r/linuxserver/heimdall) | 80, 443 | |
+| **Application** | **Image** | **URL** | **Notes** |
+|-------------------|------------------------------------------------------------------------------------|--------------|-------------------------------------------------------------------|
+| Sonarr | [linuxserver/sonarr](https://hub.docker.com/r/linuxserver/sonarr) | /sonarr | |
+| Radarr | [linuxserver/radarr](https://hub.docker.com/r/linuxserver/radarr) | /radarr | |
+| Prowlarr | [linuxserver/prowlarr:develop](https://hub.docker.com/r/linuxserver/prowlarr) | /prowlarr | `develop` tag as it is not stable yet |
+| PIA Wireguard VPN | [thrnz/docker-wireguard-pia](https://hub.docker.com/r/thrnz/docker-wireguard-pia) | | |
+| qBittorrent | [linuxserver/qbittorrent:14.3.9](https://hub.docker.com/r/linuxserver/qbittorrent) | /qbittorrent | Uses VPN network
Frozen to v4.3.9 due to Libtorrent 2.x issues |
+| Heimdall | [linuxserver/heimdall](https://hub.docker.com/r/linuxserver/heimdall) | / | |
+| Traefik | [traefik](https://hub.docker.com/_/traefik) | | |
## Improvement
-There is always room for improvement. I did not need those containers so I did not include them, but maybe you could
+There is always room for improvement. I did not need those containers, so I did not include them, but maybe you could
benefit from:
- [Bazarr](https://www.bazarr.media/): companion application to Sonarr and Radarr that manages and downloads subtitles
@@ -49,4 +51,7 @@ benefit from:
for some indexers in Prowlarr
- [Jackett](https://github.com/Jackett/Jackett): API Support for your favorite torrent trackers, as a Prowlarr replacement
- [Plex](https://www.plex.tv/): Plex Media Server
+- [Pi-hole](https://pi-hole.net/): DNS that blocks ads
+- Use a domain name and Let's Encrypt certificate to get SSL
+- Expose services with CloudFlare Tunnel
- you tell me!
diff --git a/docker-compose.yml b/docker-compose.yml
index bdfcb84..3a6a6f4 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,5 +1,21 @@
version: "3.9"
services:
+ traefik:
+ image: traefik:v2.6
+ container_name: traefik
+ command:
+ - --providers.docker=true
+ - --providers.docker.exposedbydefault=false
+ - --entrypoints.web.address=:80
+ - --entrypoints.web-secure.address=:443
+ - --entrypoints.web.http.redirections.entryPoint.to=web-secure
+ - --entrypoints.web.http.redirections.entryPoint.scheme=https
+ - --entrypoints.web.http.redirections.entrypoint.permanent=true
+ ports:
+ - "80:80"
+ - "443:443"
+ volumes:
+ - "/var/run/docker.sock:/var/run/docker.sock:ro"
sonarr:
image: lscr.io/linuxserver/sonarr
container_name: sonarr
@@ -8,10 +24,13 @@ services:
- PGID=${GROUP_ID}
volumes:
- ./sonarr:/config
- - /mnt/data:/data
- ports:
- - "8989:8989"
+ - ${DATA_ROOT}:/data
restart: unless-stopped
+ labels:
+ - traefik.enable=true
+ - traefik.http.routers.sonarr.rule=PathPrefix(`/sonarr`)
+ - traefik.http.services.sonarr.loadbalancer.server.port=8989
+ - traefik.http.routers.sonarr.tls=true
radarr:
image: lscr.io/linuxserver/radarr
container_name: radarr
@@ -20,10 +39,13 @@ services:
- PGID=${GROUP_ID}
volumes:
- ./radarr:/config
- - /mnt/data:/data
- ports:
- - "7878:7878"
+ - ${DATA_ROOT}:/data
restart: unless-stopped
+ labels:
+ - traefik.enable=true
+ - traefik.http.routers.radarr.rule=PathPrefix(`/radarr`)
+ - traefik.http.routers.radarr.tls=true
+ - traefik.http.services.radarr.loadbalancer.server.port=7878
prowlarr:
image: lscr.io/linuxserver/prowlarr:develop
container_name: prowlarr
@@ -32,9 +54,12 @@ services:
- PGID=${GROUP_ID}
volumes:
- ./prowlarr:/config
- ports:
- - "9696:9696"
restart: unless-stopped
+ labels:
+ - traefik.enable=true
+ - traefik.http.routers.prowlarr.rule=PathPrefix(`/prowlarr`)
+ - traefik.http.routers.prowlarr.tls=true
+ - traefik.http.services.prowlarr.loadbalancer.server.port=9696
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:14.3.9
container_name: qbittorrent
@@ -45,21 +70,29 @@ services:
- WEBUI_PORT=8080
volumes:
- ./qbittorrent:/config
- - /mnt/data/torrents:/data/torrents
+ - ${DOWNLOAD_ROOT}:/data/torrents
restart: unless-stopped
network_mode: "service:vpn"
depends_on:
- vpn
+ labels:
+ - traefik.enable=true
+ - traefik.http.routers.qbittorrent.rule=PathPrefix(`/qbittorrent`)
+ - traefik.http.routers.qbittorrent.tls=true
+ - traefik.http.services.qbittorrent.loadbalancer.server.port=8080
+ - traefik.http.routers.qbittorrent.middlewares=qbittorrent-strip-slash,qbittorrent-stripprefix
+ # https://github.com/qbittorrent/qBittorrent/issues/5693#issuecomment-552146296
+ - traefik.http.middlewares.qbittorrent-stripprefix.stripPrefix.prefixes=/qbittorrent
+ # https://community.traefik.io/t/middleware-to-add-the-if-needed/1895/19
+ - traefik.http.middlewares.qbittorrent-strip-slash.redirectregex.regex=(^.*\/qbittorrent$$)
+ - traefik.http.middlewares.qbittorrent-strip-slash.redirectregex.replacement=$$1/
+ - traefik.http.middlewares.qbittorrent-strip-slash.redirectregex.permanent=false
vpn:
image: thrnz/docker-wireguard-pia
container_name: vpn
volumes:
- ./pia:/pia
- ./pia-shared:/pia-shared
- ports:
- - "6881:6881"
- - "6881:6881/udp"
- - "8080:8080"
cap_add:
- NET_ADMIN
- SYS_MODULE
@@ -89,7 +122,9 @@ services:
- PGID=${GROUP_ID}
volumes:
- ./heimdall:/config
- ports:
- - "80:80"
- - "443:443"
restart: unless-stopped
+ labels:
+ - traefik.enable=true
+ - traefik.http.routers.heimdall.rule=PathPrefix(`/`)
+ - traefik.http.services.heimdall.loadbalancer.server.port=80
+ - traefik.http.routers.heimdall.tls=true
\ No newline at end of file
diff --git a/update-config.sh b/update-config.sh
new file mode 100755
index 0000000..b5a5a3d
--- /dev/null
+++ b/update-config.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+# See https://stackoverflow.com/a/44864004 for the sed GNU/BSD compatible hack
+
+echo "Updating Radarr configuration..."
+until [ -f ./radarr/config.xml ]
+do
+ sleep 5
+done
+sed -i.bak "s/<\/UrlBase>/\/radarr<\/UrlBase>/" ./radarr/config.xml && rm ./radarr/config.xml.bak
+
+echo "Updating Sonarr configuration..."
+until [ -f ./sonarr/config.xml ]
+do
+ sleep 5
+done
+sed -i.bak "s/<\/UrlBase>/\/sonarr<\/UrlBase>/" ./sonarr/config.xml && rm ./sonarr/config.xml.bak
+
+echo "Updating Prowlarr configuration..."
+until [ -f ./prowlarr/config.xml ]
+do
+ sleep 5
+done
+sed -i.bak "s/<\/UrlBase>/\/prowlarr<\/UrlBase>/" ./prowlarr/config.xml && rm ./prowlarr/config.xml.bak
+
+echo "Restarting containers..."
+docker compose restart radarr sonarr prowlarr