Remove docker labels, new v2 config.yaml is now mandatory on this branch
This commit is contained in:
parent
32da0ba9ac
commit
48fa3a1eb6
52
README.md
52
README.md
|
@ -3,13 +3,14 @@
|
|||
A collection of Dockerfiles and a docker-compose configuration to set up a
|
||||
seedbox and personal media server.
|
||||
|
||||
⚠️ Version 2 is released, please make sure you read [this V2 Migration Guide](doc/UPGRADE_V2.md) as there are breaking changes!
|
||||
|
||||
## Included Applications
|
||||
|
||||
| Application | Web Interface | Docker image | Version (image tag) | Notes |
|
||||
-----------------------|----------------------------|------------------------------------------------------------------------|-------------------------|---------------------|
|
||||
| Plex | plex.yourdomain.com | [linuxserver/plex](https://hub.docker.com/r/linuxserver/plex) | *latest* | Media Streaming |
|
||||
| Deluge | deluge.yourdomain.com | [linuxserver/deluge](https://hub.docker.com/r/linuxserver/deluge) | *latest* | Torrents downloader |
|
||||
| Deluge (VPN) | deluge.yourdomain.com | [linuxserver/deluge](https://hub.docker.com/r/linuxserver/deluge) | *latest* | Torrents downloader (behind VPN) |
|
||||
| Flood | flood.yourdomain.com | [jesec/flood](https://hub.docker.com/r/jesec/flood) | *latest* | Web client for Deluge (experimental) |
|
||||
| Sonarr | sonarr.yourdomain.com | [linuxserver/sonarr](https://hub.docker.com/r/linuxserver/sonarr) | *develop* | TV Shows monitor |
|
||||
| Radarr | radarr.yourdomain.com | [linuxserver/radarr](https://hub.docker.com/r/linuxserver/radarr) | *develop* | Movies monitor |
|
||||
|
@ -23,7 +24,6 @@ seedbox and personal media server.
|
|||
| Jackett | jackett.yourdomain.com | [linuxserver/jackett](https://hub.docker.com/r/linuxserver/jackett) | *latest* | Tracker indexer |
|
||||
| Prowlarr | prowlarr.yourdomain.com | [linuxserver/prowlarr](https://hub.docker.com/r/linuxserver/prowlarr) | *develop* | Tracker indexer |
|
||||
| JDownloader | jdownloader.yourdomain.com | [jlesage/jdownloader-2](https://hub.docker.com/r/jlesage/jdownloader-2)| *latest* | Direct downloader |
|
||||
| JDownloader (VPN) | jdownloader.yourdomain.com | [jlesage/jdownloader-2](https://hub.docker.com/r/jlesage/jdownloader-2)| *latest* | Direct downloader (behind VPN) |
|
||||
| Tautulli (plexPy) | tautulli.yourdomain.com | [linuxserver/tautulli](https://hub.docker.com/r/linuxserver/tautulli) | *latest* | Plex stats and admin|
|
||||
| Tdarr | tdarr.yourdomain.com | [haveagitgat/tdarr](https://hub.docker.com/r/haveagitgat/tdarr) | *latest* | Re-encode files |
|
||||
| NextCloud | nextcloud.yourdomain.com | [linuxserver/nextcloud](https://hub.docker.com/r/linuxserver/nextcloud) | *latest* | Files management |
|
||||
|
@ -32,9 +32,9 @@ seedbox and personal media server.
|
|||
| Netdata | netdata.yourdomain.com | [netdata/netdata](https://hub.docker.com/r/netdata/netdata) | *latest* | Server monitoring |
|
||||
| Duplicati | duplicati.yourdomain.com | [linuxserver/duplicati](https://hub.docker.com/r/linuxserver/duplicati)| *latest* | Backups |
|
||||
| Heimdall | yourdomain.com | [linuxserver/heimdall](https://hub.docker.com/r/linuxserver/heimdall)| *latest* | Main dashboard |
|
||||
| Gluetun | - | [qmcgaw/gluetun](https://hub.docker.com/r/qmcgaw/gluetun)| *latest* | VPN client (still WIP...) |
|
||||
| Gluetun | - | [qmcgaw/gluetun](https://hub.docker.com/r/qmcgaw/gluetun)| *latest* | VPN client |
|
||||
|
||||
The front-end reverse proxy (Traefik - **check the next section if you have already the seedbox with Traefik v1**) routes based on the lowest level subdomain
|
||||
The front-end reverse proxy (Traefik - **check [this guide](doc/traefik_v2.md) if you still have the seedbox with Traefik v1**) routes based on the lowest level subdomain
|
||||
(e.g. `deluge.example.com` would route to deluge). Since this is how the router
|
||||
works, it is recommended for you to get a top level domain. If you do not have
|
||||
one, you can edit your domains locally by changing your hosts file or use a
|
||||
|
@ -45,38 +45,11 @@ Traefik takes care of valid Let's Encrypt certificates and auto-renewal.
|
|||
Note: Plex is also available directly through the `32400` port without going
|
||||
through the reverse proxy.
|
||||
|
||||
## September 2020 - Upgrade to Traefik v2 instructions
|
||||
|
||||
Before upgrading Traefik to version 2, please check the following:
|
||||
|
||||
- In this repo, Traefik v2 upgrade is as seamless as possible (same environment variables than before, out-of-the-box config file...).
|
||||
- **First, ``git pull`` to grab the latest code.**
|
||||
- The ``HTTP_PASSWORD`` variable now must be simple-quoted in the .env file. See the updated ``.env.sample`` file (which has also been reorganized)
|
||||
- Run ``init.sh`` in order to create required Docker objects (network name has changed).
|
||||
- You can update your acme.json to a Traefik v2-compliant one by doing the following (before launching Traefik v2):
|
||||
|
||||
```sh
|
||||
mkdir -p /tmp/migration
|
||||
cd /tmp/migration
|
||||
sudo cp /opt/traefik/acme.json .
|
||||
sudo chmod 775 /tmp/migration/acme.json
|
||||
# Do *NOT* forget the --resolver at the end! (le = Let's Encrypt resolver, see traefik/traefik.yml)
|
||||
docker run --rm -v ${PWD}:/data -w /data containous/traefik-migration-tool acme -i acme.json -o acme2.json --resolver le
|
||||
mkdir -p /data/config/traefik
|
||||
sudo cp acme2.json /data/config/traefik/acme.json
|
||||
sudo chmod 600 /data/config/traefik/acme.json
|
||||
# When you already have a backup!
|
||||
sudo rm -rf /opt/traefik /tmp/migration
|
||||
```
|
||||
|
||||
- As from Traefik v2, as Http Authentication is now possible on the Traefik console, the latter is enabled at ``traefik.yourdomain.com``.
|
||||
- After all this, you can simply do: ``./update-all.sh``! Voilà!
|
||||
|
||||
## Dependencies
|
||||
|
||||
- [Docker](https://github.com/docker/docker) >= 20.10
|
||||
- [Docker Compose](https://github.com/docker/compose) >= 1.28.0
|
||||
- [local-persist Docker plugin](https://github.com/MatchbookLab/local-persist): installed directly on host (not in container). This is a volume plugin that extends the default local driver’s functionality by allowing you specify a mountpoint anywhere on the host, which enables the files to always persist, even if the volume is removed via `docker volume rm`. Use *systemd* install for Ubuntu 16.04.
|
||||
- [Docker Compose](https://github.com/docker/compose) >= 2.2
|
||||
- [local-persist Docker plugin](https://github.com/MatchbookLab/local-persist): installed directly on host (not in container). This is a volume plugin that extends the default local driver’s functionality by allowing you specify a mountpoint anywhere on the host, which enables the files to always persist, even if the volume is removed via `docker volume rm`. Use *systemd* install for Ubuntu.
|
||||
|
||||
## Configuration
|
||||
|
||||
|
@ -91,22 +64,15 @@ sudo su -c "mkdir /data && mkdir /data/config && mkdir /data/torrents"
|
|||
Edit the `.env` file and change the variables as desired.
|
||||
The variables are all self-explanatory.
|
||||
|
||||
**NEW**
|
||||
You can also disable a service if you do not need it by editing the ``services.conf`` file.
|
||||
Simply change the "*enable*" key with the "*disable*" one for the service you want to disable.
|
||||
If you remove a line in this file, it will be considered as "enabled" as all services are enabled by default.
|
||||
|
||||
## Running & updating
|
||||
|
||||
```sh
|
||||
./update-all.sh
|
||||
./run-seedbox.sh
|
||||
```
|
||||
|
||||
docker-compose should manage all the volumes and network setup for you. If it
|
||||
does not, verify that your docker and docker-compose version is updated.
|
||||
docker-compose should manage all the volumes and network setup for you. If it does not, verify that your docker and docker-compose version is updated.
|
||||
|
||||
Make sure you install the dependencies and finish configuration before doing
|
||||
this.
|
||||
Make sure you install the dependencies and finish configuration before doing this.
|
||||
|
||||
## PlexPass
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ Since there are some breaking changes and a configuration structure migration, a
|
|||
* ``Readarr``: [Ebook and comic monitor](https://github.com/Readarr/Readarr)
|
||||
* ``Komga``: [Comic Book Manager](https://github.com/gotson/komga)
|
||||
* ``Kavita``: [Comic / Book Manager](https://github.com/Kareadita/Kavita)
|
||||
* Docker compose v2.2+ is now required
|
||||
|
||||
And also:
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# September 2020 - Upgrade to Traefik v2 instructions
|
||||
|
||||
Before upgrading Traefik to version 2, please check the following:
|
||||
|
||||
- In this repo, Traefik v2 upgrade is as seamless as possible (same environment variables than before, out-of-the-box config file...).
|
||||
- **First, ``git pull`` to grab the latest code.**
|
||||
- The ``HTTP_PASSWORD`` variable now must be simple-quoted in the .env file. See the updated ``.env.sample`` file (which has also been reorganized)
|
||||
- Run ``init.sh`` in order to create required Docker objects (network name has changed).
|
||||
- You can update your acme.json to a Traefik v2-compliant one by doing the following (before launching Traefik v2):
|
||||
|
||||
```sh
|
||||
mkdir -p /tmp/migration
|
||||
cd /tmp/migration
|
||||
sudo cp /opt/traefik/acme.json .
|
||||
sudo chmod 775 /tmp/migration/acme.json
|
||||
# Do *NOT* forget the --resolver at the end! (le = Let's Encrypt resolver, see traefik/traefik.yml)
|
||||
docker run --rm -v ${PWD}:/data -w /data containous/traefik-migration-tool acme -i acme.json -o acme2.json --resolver le
|
||||
mkdir -p /data/config/traefik
|
||||
sudo cp acme2.json /data/config/traefik/acme.json
|
||||
sudo chmod 600 /data/config/traefik/acme.json
|
||||
# When you already have a backup!
|
||||
sudo rm -rf /opt/traefik /tmp/migration
|
||||
```
|
||||
|
||||
- As from Traefik v2, as Http Authentication is now possible on the Traefik console, the latter is enabled at ``traefik.yourdomain.com``.
|
||||
- After all this, you can simply do: ``./update-all.sh``! Voilà!
|
|
@ -1,132 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
SKIP_PULL=0
|
||||
|
||||
for i in "$@"; do
|
||||
case $i in
|
||||
--no-pull)
|
||||
SKIP_PULL=1
|
||||
;;
|
||||
*)
|
||||
echo "[$0] ❌ ERROR: unknown parameter \"$i\""
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Create/update http_auth file according to values in .env file
|
||||
source .env
|
||||
echo "${HTTP_USER}:${HTTP_PASSWORD}" > traefik/http_auth
|
||||
|
||||
# Docker-compose settings
|
||||
export COMPOSE_HTTP_TIMEOUT=240
|
||||
|
||||
# Retro-compatibility
|
||||
[[ -z $HOST_CONFIG_PATH ]] && export HOST_CONFIG_PATH="/data/config"
|
||||
[[ -z $HOST_MEDIA_PATH ]] && export HOST_MEDIA_PATH="/data/torrents"
|
||||
[[ -z $DOWNLOAD_SUBFOLDER ]] && export DOWNLOAD_SUBFOLDER="deluge"
|
||||
|
||||
if [[ ! -f services.conf ]]; then
|
||||
echo "[$0] No services.conf file found. Copying from sample file..."
|
||||
cp services.conf.sample services.conf
|
||||
fi
|
||||
|
||||
# Alert in case new services have been added (or removed) in sample but active file has not changed
|
||||
NB_SERVICES_ACTIVE=$(cat services.conf | wc -l)
|
||||
NB_SERVICES_ORIG=$(cat services.conf.sample | wc -l)
|
||||
if [[ ${NB_SERVICES_ACTIVE} != ${NB_SERVICES_ORIG} ]]; then
|
||||
echo "[$0] Your services.conf file seems outdated. It appears there are new services available, or services that have been removed."
|
||||
diff -yt services.conf services.conf.sample || true
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Check if *-vpn services are enabled. If so, check that gluetun is enabled.
|
||||
if [[ $(cat services.conf | { grep -E ".*vpn: enable" || true; } | wc -l) -ge 1 ]]; then
|
||||
if [[ $(cat services.conf | { grep "gluetun: enable" || true; } | wc -l) -eq 0 ]]; then
|
||||
echo "[$0] ERROR. A VPN-enabled service has been enabled BUT gluetun has not been enabled. Please check your services.conf file."
|
||||
echo "******* Exiting *******"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check if there are no conflict in enabled services (for example, you cannot enable deluge AND deluge-vpn)
|
||||
for svc in deluge plex jdownloader; do
|
||||
if [[ $(cat services.conf | { grep -E "${svc}.*: enable" || true; } | wc -l) -gt 1 ]]; then
|
||||
echo "[$0] ERROR. You cannot enable multiple ${svc^} services simultaneously. Please edit this section in your services.conf file:"
|
||||
cat services.conf | { grep -E "${svc}.*: enable" || true; }
|
||||
echo "******* Exiting *******"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Determine what host Flood should connect to
|
||||
# => If deluge-vpn is enabled => gluetun
|
||||
# => If deluge is enabled => deluge
|
||||
if [[ $(cat services.conf | { grep -E "flood\: enable" || true; } | wc -l) -eq 1 ]]; then
|
||||
if [[ $(cat services.conf | { grep -E "deluge\-vpn\: enable" || true; } | wc -l) -eq 1 ]]; then
|
||||
export DELUGE_HOST="gluetun"
|
||||
elif [[ $(cat services.conf | { grep -E "deluge\: enable" || true; } | wc -l) -eq 1 ]]; then
|
||||
export DELUGE_HOST="deluge"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Apply Traefik dynamic files in traefik conf directory if VPN are enabled for some services
|
||||
for svc in $(cat services.conf | grep "\-vpn: enable" | sed -E "s/(.*)\: enable/\1/g"); do
|
||||
if [[ -f samples/traefik-${svc}.yaml ]]; then
|
||||
echo "[$0] traefik-$svc.yaml file detected in samples/ directory. Applying into Traefik runtime config directory..."
|
||||
cp samples/traefik-${svc}.yaml traefik/custom/dynamic-${svc}.yaml
|
||||
else
|
||||
echo "[$0] No custom traefik file found in samples/directory for app $svc. Skipping..."
|
||||
fi
|
||||
done
|
||||
|
||||
# Apply other arbitrary custom Traefik config files
|
||||
for f in `find samples/custom-traefik -maxdepth 1 -mindepth 1 -type f | grep -E "\.yml$|\.yaml$" | sort`; do
|
||||
echo "[$0] Applying custom Traefik config $f..."
|
||||
cp $f traefik/custom/dynamic-$(basename $f)
|
||||
done
|
||||
|
||||
# Detect Synology devices for Netdata compatibility
|
||||
if [[ $(cat services.conf | { grep -E "netdata\: enable" || true; } | wc -l) -eq 1 ]]; then
|
||||
if [[ $(uname -a | { grep synology || true; } | wc -l) -eq 1 ]]; then
|
||||
export OS_RELEASE_FILEPATH="/etc/VERSION"
|
||||
else
|
||||
export OS_RELEASE_FILEPATH="/etc/os-release"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Fetch all YAML files
|
||||
disabled_pattern=""
|
||||
while read -r line ; do
|
||||
disabled_pattern="${disabled_pattern} ! -name $line.yaml"
|
||||
done < <(grep "disable" services.conf | awk -F : '{print $1}' )
|
||||
|
||||
SERVICES=$(find services -mindepth 1 -maxdepth 1 -name "*.yaml" ${disabled_pattern} | sed -e 's/^/-f /')
|
||||
ALL_SERVICES="-f docker-compose.yaml $SERVICES"
|
||||
|
||||
# Specific instructions for Flood
|
||||
# User for Deluge daemon RPC has to be created in deluge auth config file
|
||||
if [[ ! -z ${FLOOD_PASSWORD} && ${FLOOD_AUTOCREATE_USER_IN_DELUGE_DAEMON} == true ]]; then
|
||||
if ! grep -q "flood" $HOST_CONFIG_PATH/deluge/auth; then
|
||||
echo "flood:${FLOOD_PASSWORD}:10" >> $HOST_CONFIG_PATH/deluge/auth
|
||||
else
|
||||
echo "[$0] No need to add user/password for flood as it has already been created."
|
||||
echo "[$0] Consider setting FLOOD_AUTOCREATE_USER_IN_DELUGE_DAEMON variable to false in .env file."
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${SKIP_PULL}" != "1" ]]; then
|
||||
echo "[$0] ***** Pulling all images... *****"
|
||||
docker-compose ${ALL_SERVICES} pull
|
||||
fi
|
||||
|
||||
echo "[$0] ***** Recreating containers if required... *****"
|
||||
docker-compose ${ALL_SERVICES} up -d --remove-orphans
|
||||
echo "[$0] ***** Done updating containers *****"
|
||||
echo "[$0] ***** Clean unused images and volumes... *****"
|
||||
docker image prune -af
|
||||
docker volume prune -f
|
||||
echo "[$0] ***** Done! *****"
|
||||
exit 0
|
|
@ -1,12 +0,0 @@
|
|||
http:
|
||||
routers:
|
||||
deluge:
|
||||
rule: 'Host(`deluge.{{ env "TRAEFIK_DOMAIN" }}`)'
|
||||
middlewares:
|
||||
- common-auth@file
|
||||
service: deluge
|
||||
services:
|
||||
deluge:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://gluetun:8112"
|
|
@ -1,12 +0,0 @@
|
|||
http:
|
||||
routers:
|
||||
jdownloader:
|
||||
rule: 'Host(`jdownloader.{{ env "TRAEFIK_DOMAIN" }}`)'
|
||||
middlewares:
|
||||
- common-auth@file
|
||||
service: deluge
|
||||
services:
|
||||
jdownloader:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://gluetun:5800"
|
|
@ -10,10 +10,6 @@ services:
|
|||
- PGID=${PGID}
|
||||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.bazarr.rule=Host(`bazarr.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.bazarr.middlewares=common-auth@file"
|
||||
|
||||
volumes:
|
||||
configbazarr:
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
services:
|
||||
deluge:
|
||||
image: ghcr.io/linuxserver/deluge
|
||||
container_name: deluge
|
||||
restart: always
|
||||
network_mode: "service:gluetun"
|
||||
volumes:
|
||||
- torrents:/torrents
|
||||
- configdeluge:/config
|
||||
- downloads:/downloads
|
||||
environment:
|
||||
- PGID=${PGID}
|
||||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
# Traefik labels are in Gluetun YAML as deluge must be accessed via Gluetun
|
||||
|
||||
volumes:
|
||||
configdeluge:
|
||||
driver: local-persist
|
||||
driver_opts:
|
||||
mountpoint: $HOST_CONFIG_PATH/deluge
|
|
@ -11,10 +11,6 @@ services:
|
|||
- PGID=${PGID}
|
||||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.deluge.rule=Host(`deluge.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.deluge.middlewares=common-auth@file"
|
||||
|
||||
volumes:
|
||||
configdeluge:
|
||||
|
|
|
@ -11,10 +11,6 @@ services:
|
|||
- configduplicati:/config
|
||||
- backups:/backups
|
||||
- config:/source
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.duplicati.rule=Host(`duplicati.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.duplicati.middlewares=common-auth@file"
|
||||
|
||||
volumes:
|
||||
configduplicati:
|
||||
|
|
|
@ -18,12 +18,6 @@ services:
|
|||
- torrents:/torrents
|
||||
- downloads:/downloads
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.flood.rule=Host(`flood.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.flood.middlewares=common-auth@file"
|
||||
- "traefik.http.routers.flood.service=flood-service"
|
||||
- "traefik.http.services.flood-service.loadbalancer.server.port=3000"
|
||||
|
||||
volumes:
|
||||
configflood:
|
||||
|
|
|
@ -17,15 +17,6 @@ services:
|
|||
- WIREGUARD_PUBLIC_KEY=${WIREGUARD_PUBLIC_KEY}
|
||||
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
|
||||
- WIREGUARD_ADDRESS=${WIREGUARD_ADDRESS}
|
||||
#labels:
|
||||
# Control Panel
|
||||
# - "traefik.enable=true"
|
||||
# - "traefik.http.routers.gluetun.rule=Host(`gluetun.${TRAEFIK_DOMAIN}`)"
|
||||
# - "traefik.http.routers.gluetun.middlewares=common-auth@file"
|
||||
# - "traefik.http.routers.gluetun.service=gluetun"
|
||||
# - "traefik.http.services.gluetun.loadbalancer.server.port=8000"
|
||||
# Traefik rules for VPN-enabled services (which have ot be accessed through gluetun) are defined in the samples/ directory
|
||||
# and are applied automatically in the update-all.sh script.
|
||||
|
||||
volumes:
|
||||
configgluetun:
|
||||
|
|
|
@ -9,10 +9,6 @@ services:
|
|||
- PGID=${PGID}
|
||||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.heimdall.rule=Host(`${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.heimdall.middlewares=common-auth@file"
|
||||
|
||||
volumes:
|
||||
configheimdall:
|
||||
|
|
|
@ -12,7 +12,3 @@ services:
|
|||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
- RUN_OPTS='-FlareSolverrURL="http://flaresolverr:8191"'
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.jackett.rule=Host(`jackett.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.jackett.middlewares=common-auth@file"
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
services:
|
||||
jdownloader:
|
||||
image: jlesage/jdownloader-2
|
||||
container_name: jdownloader
|
||||
restart: always
|
||||
network_mode: "service:gluetun"
|
||||
volumes:
|
||||
- configjdownloader:/config
|
||||
- downloads:/output
|
||||
environment:
|
||||
- USER_ID=${PUID}
|
||||
- GROUP_ID=${PGID}
|
||||
- TZ=${TZ}
|
||||
# Traefik routing rules are defined in the samples/ directory and applied automatically when this service is enabled
|
||||
|
||||
volumes:
|
||||
configjdownloader:
|
||||
driver: local-persist
|
||||
driver_opts:
|
||||
mountpoint: $HOST_CONFIG_PATH/jdownloader
|
|
@ -10,11 +10,6 @@ services:
|
|||
- USER_ID=${PUID}
|
||||
- GROUP_ID=${PGID}
|
||||
- TZ=${TZ}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.services.jdownloader-seedbox.loadbalancer.server.port=5800"
|
||||
- "traefik.http.routers.jdownloader.rule=Host(`jdownloader.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.jdownloader.middlewares=common-auth@file"
|
||||
|
||||
volumes:
|
||||
configjdownloader:
|
||||
|
|
|
@ -11,9 +11,6 @@ services:
|
|||
- TZ=${TZ}
|
||||
# Wait for https://github.com/Kareadita/Kavita/issues/301 to be resolved
|
||||
#user: "${PUID}:${PGID}"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.kavita.rule=Host(`kavita.${TRAEFIK_DOMAIN}`)"
|
||||
|
||||
volumes:
|
||||
configkavita:
|
||||
|
|
|
@ -10,9 +10,6 @@ services:
|
|||
environment:
|
||||
- TZ=${TZ}
|
||||
user: "${PUID}:${PGID}"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.komga.rule=Host(`komga.${TRAEFIK_DOMAIN}`)"
|
||||
|
||||
volumes:
|
||||
configkomga:
|
||||
|
|
|
@ -10,10 +10,6 @@ services:
|
|||
- PGID=${PGID}
|
||||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.lidarr.rule=Host(`lidarr.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.lidarr.middlewares=common-auth@file"
|
||||
|
||||
volumes:
|
||||
configlidarr:
|
||||
|
|
|
@ -17,7 +17,3 @@ services:
|
|||
- /etc/group:/host/etc/group:ro
|
||||
- ${OS_RELEASE_FILEPATH}:/host/etc/os-release:ro
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.netdata.rule=Host(`netdata.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.netdata.middlewares=common-auth@file"
|
|
@ -32,11 +32,6 @@ services:
|
|||
- nextclouddata:/data
|
||||
- torrents:/torrents
|
||||
- config:/seedbox-config
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.nextcloud.rule=Host(`nextcloud.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.services.nextcloud-seedbox.loadbalancer.server.scheme=https"
|
||||
- "traefik.http.services.nextcloud-seedbox.loadbalancer.server.port=443"
|
||||
|
||||
volumes:
|
||||
nextclouddb:
|
||||
|
|
|
@ -10,10 +10,6 @@ services:
|
|||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
- BASE_URL=/
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.ombi.rule=Host(`ombi.${TRAEFIK_DOMAIN}`)"
|
||||
#- "traefik.http.routers.ombi.middlewares=common-auth@file"
|
||||
|
||||
volumes:
|
||||
configombi:
|
||||
|
|
|
@ -9,9 +9,6 @@ services:
|
|||
- PGID=${PGID}
|
||||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.overseerr.rule=Host(`overseerr.${TRAEFIK_DOMAIN}`)"
|
||||
|
||||
volumes:
|
||||
configoverseerr:
|
||||
|
|
|
@ -19,10 +19,6 @@ services:
|
|||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
- VERSION=latest
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.services.plex-seedbox.loadbalancer.server.port=32400"
|
||||
- "traefik.http.routers.plex.rule=Host(`plex.${TRAEFIK_DOMAIN}`)"
|
||||
|
||||
volumes:
|
||||
configplex:
|
||||
|
|
|
@ -16,10 +16,6 @@ services:
|
|||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
- VERSION=latest
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.services.plex-seedbox.loadbalancer.server.port=32400"
|
||||
- "traefik.http.routers.plex.rule=Host(`plex.${TRAEFIK_DOMAIN}`)"
|
||||
|
||||
volumes:
|
||||
configplex:
|
||||
|
|
|
@ -5,8 +5,4 @@ services:
|
|||
restart: always
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
command: --admin-password ${PORTAINER_ADMIN_PASSWORD} --host=unix:///var/run/docker.sock
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.portainer.rule=Host(`portainer.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.services.portainer-seedbox.loadbalancer.server.port=9000"
|
||||
command: --admin-password ${PORTAINER_ADMIN_PASSWORD} --host=unix:///var/run/docker.sock
|
|
@ -9,10 +9,6 @@ services:
|
|||
- PGID=${PGID}
|
||||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.prowlarr.rule=Host(`prowlarr.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.prowlarr.middlewares=common-auth@file"
|
||||
|
||||
volumes:
|
||||
configprowlarr:
|
||||
|
|
|
@ -11,10 +11,6 @@ services:
|
|||
- PGID=${PGID}
|
||||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.radarr.rule=Host(`radarr.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.radarr.middlewares=common-auth@file"
|
||||
|
||||
volumes:
|
||||
configradarr:
|
||||
|
|
|
@ -11,10 +11,6 @@ services:
|
|||
- PGID=${PGID}
|
||||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.readarr.rule=Host(`readarr.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.readarr.middlewares=common-auth@file"
|
||||
|
||||
volumes:
|
||||
configreadarr:
|
||||
|
|
|
@ -11,10 +11,6 @@ services:
|
|||
- PGID=${PGID}
|
||||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.sonarr.rule=Host(`sonarr.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.sonarr.middlewares=common-auth@file"
|
||||
|
||||
volumes:
|
||||
configsonarr:
|
||||
|
|
|
@ -16,12 +16,6 @@ services:
|
|||
- 22000:22000/tcp
|
||||
- 22000:22000/udp
|
||||
- 21027:21027/udp
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.syncthing.rule=Host(`syncthing.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.syncthing.middlewares=common-auth@file"
|
||||
- "traefik.http.routers.syncthing.service=syncthing"
|
||||
- "traefik.http.services.syncthing.loadbalancer.server.port=8384"
|
||||
|
||||
volumes:
|
||||
configsyncthing:
|
||||
|
|
|
@ -10,9 +10,6 @@ services:
|
|||
- PGID=${PGID}
|
||||
- PUID=${PUID}
|
||||
- TZ=${TZ}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.tautulli.rule=Host(`tautulli.${TRAEFIK_DOMAIN}`)"
|
||||
|
||||
volumes:
|
||||
configtautulli:
|
||||
|
|
|
@ -15,11 +15,6 @@ services:
|
|||
- transcodes:/temp
|
||||
- configtdarrv2:/app/server
|
||||
- settingstdarrv2:/app/configs
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.services.tdarrv2-seedbox.loadbalancer.server.port=8265"
|
||||
- "traefik.http.routers.tdarrv2.rule=Host(`tdarr.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.tdarrv2.middlewares=common-auth@file"
|
||||
|
||||
tdarr_node:
|
||||
image: haveagitgat/tdarr_node:latest
|
||||
|
|
|
@ -16,12 +16,6 @@ services:
|
|||
environment:
|
||||
- TRAEFIK_DOMAIN=${TRAEFIK_DOMAIN}
|
||||
- TZ=${TZ}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
# Docker labels for enabling Traefik dashboard
|
||||
- "traefik.http.routers.traefik.rule=Host(`traefik.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.traefik.service=api@internal"
|
||||
- "traefik.http.routers.traefik.middlewares=common-auth@file"
|
||||
|
||||
volumes:
|
||||
configtraefik:
|
||||
|
|
Loading…
Reference in New Issue