commit
a2543bcb0d
15
.env.sample
15
.env.sample
|
@ -1,18 +1,21 @@
|
|||
# General Traefik (reverse proxy) settings
|
||||
TRAEFIK_DOMAIN=mydomain.com
|
||||
ACME_MAIL=my-email@my-provider.com
|
||||
|
||||
# HTTP Auth
|
||||
HTTP_USER=myuser
|
||||
HTTP_PASSWORD=mypassword_encoded
|
||||
PORTAINER_ADMIN_PASSWORD=h4ckMePleAse
|
||||
HTTP_PASSWORD='mypassword_encoded' # Keep these simple quotes!
|
||||
|
||||
# Containers permissions mapping
|
||||
PGID=1000
|
||||
PUID=1000
|
||||
|
||||
# now these cloufdlare variables are useless
|
||||
CLOUDFLARE_EMAIL=your@email.com
|
||||
CLOUDFLARE_API_KEY=your_cloudflare_api_key
|
||||
|
||||
# Nextcloud
|
||||
NEXTCLOUD_ADMIN_USER=admin
|
||||
NEXTCLOUD_ADMIN_PASSWORD=nextcloud_admin_password
|
||||
NEXTCLOUD_DB_NAME=nextcloud_db_name
|
||||
NEXTCLOUD_DB_USER=nextcloud
|
||||
NEXTCLOUD_DB_PASSWORD=nextcloud_db_password
|
||||
|
||||
# Portainer
|
||||
PORTAINER_ADMIN_PASSWORD=h4ckMePleAse
|
|
@ -3,4 +3,5 @@
|
|||
/config
|
||||
tunnel-options.sh
|
||||
.env
|
||||
traefik/http_auth
|
||||
backup/
|
||||
|
|
29
README.md
29
README.md
|
@ -21,7 +21,7 @@ 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 |
|
||||
|
||||
The front-end reverse proxy (Traefik - *version1 **v1.7-alpine***) routes based on the lowest level subdomain
|
||||
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
|
||||
(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
|
||||
|
@ -32,6 +32,33 @@ 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) >= 1.13.0
|
||||
|
|
|
@ -2,30 +2,36 @@ version: '3'
|
|||
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:v1.7-alpine
|
||||
image: traefik
|
||||
container_name: traefik
|
||||
restart: always
|
||||
networks:
|
||||
- webgateway
|
||||
command: --acme.email=${ACME_MAIL} --docker.domain=${TRAEFIK_DOMAIN} #--acme.dnschallenge=true --acme.dnschallenge.provider="cloudflare" --acme.dnschallenge.delaybeforecheck=300
|
||||
command: --certificatesresolvers.le.acme.email=${ACME_MAIL}
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
#- "8080:8080"
|
||||
# environment:
|
||||
# - CF_API_EMAIL=${CLOUDFLARE_EMAIL}
|
||||
# - CF_API_KEY=${CLOUDFLARE_API_KEY}
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ./traefik.toml:/traefik.toml
|
||||
- /opt/traefik/acme.json:/acme.json
|
||||
- ./traefik:/etc/traefik
|
||||
- configtraefik:/config
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
# HTTP to HTTPS redirection
|
||||
- "traefik.http.routers.http_catchall.rule=HostRegexp(`{any:.+}`)"
|
||||
- "traefik.http.routers.http_catchall.entrypoints=insecure"
|
||||
- "traefik.http.routers.http_catchall.middlewares=https_redirect"
|
||||
- "traefik.http.middlewares.https_redirect.redirectscheme.scheme=https"
|
||||
- "traefik.http.middlewares.https_redirect.redirectscheme.permanent=true"
|
||||
# Docker labels for enabling Traefik dashboard
|
||||
- "traefik.http.routers.traefik.rule=Host(`traefik.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.traefik.entrypoints=secure"
|
||||
- "traefik.http.routers.traefik.service=api@internal"
|
||||
- "traefik.http.routers.traefik.tls.certresolver=le"
|
||||
- "traefik.http.routers.traefik.middlewares=common-auth@file"
|
||||
|
||||
deluge:
|
||||
image: linuxserver/deluge
|
||||
container_name: deluge
|
||||
restart: always
|
||||
networks:
|
||||
- web
|
||||
volumes:
|
||||
- torrents:/torrents
|
||||
- configdeluge:/config
|
||||
|
@ -35,18 +41,16 @@ services:
|
|||
- PUID=${PUID}
|
||||
- TZ=Europe/Paris
|
||||
labels:
|
||||
- 'traefik.backend=deluge'
|
||||
- 'traefik.port=8112'
|
||||
- 'traefik.frontend.rule=Host:deluge.${TRAEFIK_DOMAIN}'
|
||||
- 'traefik.frontend.auth.basic.users=${HTTP_USER}:${HTTP_PASSWORD}'
|
||||
- 'traefik.enable=true'
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.deluge.rule=Host(`deluge.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.deluge.entrypoints=secure"
|
||||
- "traefik.http.routers.deluge.tls.certresolver=le"
|
||||
- "traefik.http.routers.deluge.middlewares=common-auth@file"
|
||||
|
||||
plex:
|
||||
image: linuxserver/plex
|
||||
container_name: plex
|
||||
restart: always
|
||||
networks:
|
||||
- web
|
||||
ports:
|
||||
- "32400:32400"
|
||||
- "32400:32400/udp"
|
||||
|
@ -62,20 +66,17 @@ services:
|
|||
- PUID=${PUID}
|
||||
- TZ=Europe/Paris
|
||||
- VERSION=latest
|
||||
#- VERSION=1.14.0.5470-9d51fdfaa
|
||||
labels:
|
||||
- 'traefik.backend=plex'
|
||||
- 'traefik.port=32400'
|
||||
- 'traefik.frontend.rule=Host:plex.${TRAEFIK_DOMAIN}'
|
||||
#- 'traefik.frontend.auth.basic.users=${HTTP_USER}:${HTTP_PASSWORD}'
|
||||
- 'traefik.enable=true'
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.services.plex-seedbox.loadbalancer.server.port=32400"
|
||||
- "traefik.http.routers.plex.rule=Host(`plex.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.plex.entrypoints=secure"
|
||||
- "traefik.http.routers.plex.tls.certresolver=le"
|
||||
|
||||
jackett:
|
||||
image: linuxserver/jackett
|
||||
container_name: jackett
|
||||
restart: always
|
||||
networks:
|
||||
- web
|
||||
volumes:
|
||||
- config:/config
|
||||
- torrents:/downloads
|
||||
|
@ -85,18 +86,16 @@ services:
|
|||
- PUID=${PUID}
|
||||
- TZ=Europe/Paris
|
||||
labels:
|
||||
- 'traefik.backend=jackett'
|
||||
- 'traefik.port=9117'
|
||||
- 'traefik.frontend.rule=Host:jackett.${TRAEFIK_DOMAIN}'
|
||||
- 'traefik.frontend.auth.basic.users=${HTTP_USER}:${HTTP_PASSWORD}'
|
||||
- 'traefik.enable=true'
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.jackett.rule=Host(`jackett.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.jackett.entrypoints=secure"
|
||||
- "traefik.http.routers.jackett.tls.certresolver=le"
|
||||
- "traefik.http.routers.jackett.middlewares=common-auth@file"
|
||||
|
||||
sonarr:
|
||||
image: linuxserver/sonarr:preview
|
||||
container_name: sonarr
|
||||
restart: always
|
||||
networks:
|
||||
- web
|
||||
volumes:
|
||||
- configsonarr:/config
|
||||
- torrents:/torrents
|
||||
|
@ -106,18 +105,16 @@ services:
|
|||
- PUID=${PUID}
|
||||
- TZ=Europe/Paris
|
||||
labels:
|
||||
- 'traefik.backend=sonarr'
|
||||
- 'traefik.port=8989'
|
||||
- 'traefik.frontend.rule=Host:sonarr.${TRAEFIK_DOMAIN}'
|
||||
- 'traefik.frontend.auth.basic.users=${HTTP_USER}:${HTTP_PASSWORD}'
|
||||
- 'traefik.enable=true'
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.sonarr.rule=Host(`sonarr.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.sonarr.entrypoints=secure"
|
||||
- "traefik.http.routers.sonarr.tls.certresolver=le"
|
||||
- "traefik.http.routers.sonarr.middlewares=common-auth@file"
|
||||
|
||||
radarr:
|
||||
image: linuxserver/radarr
|
||||
container_name: radarr
|
||||
restart: always
|
||||
networks:
|
||||
- web
|
||||
volumes:
|
||||
- configradarr:/config
|
||||
- torrents:/torrents
|
||||
|
@ -127,18 +124,16 @@ services:
|
|||
- PUID=${PUID}
|
||||
- TZ=Europe/Paris
|
||||
labels:
|
||||
- 'traefik.backend=radarr'
|
||||
- 'traefik.port=7878'
|
||||
- 'traefik.frontend.rule=Host:radarr.${TRAEFIK_DOMAIN}'
|
||||
- 'traefik.frontend.auth.basic.users=${HTTP_USER}:${HTTP_PASSWORD}'
|
||||
- 'traefik.enable=true'
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.radarr.rule=Host(`radarr.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.radarr.entrypoints=secure"
|
||||
- "traefik.http.routers.radarr.tls.certresolver=le"
|
||||
- "traefik.http.routers.radarr.middlewares=common-auth@file"
|
||||
|
||||
bazarr:
|
||||
image: linuxserver/bazarr
|
||||
container_name: bazarr
|
||||
restart: always
|
||||
networks:
|
||||
- web
|
||||
volumes:
|
||||
- torrents:/torrents
|
||||
- configbazarr:/config
|
||||
|
@ -147,18 +142,16 @@ services:
|
|||
- PUID=${PUID}
|
||||
- TZ=Europe/Paris
|
||||
labels:
|
||||
- 'traefik.backend=bazarr'
|
||||
- 'traefik.port=6767'
|
||||
- 'traefik.frontend.rule=Host:bazarr.${TRAEFIK_DOMAIN}'
|
||||
- 'traefik.frontend.auth.basic.users=${HTTP_USER}:${HTTP_PASSWORD}'
|
||||
- 'traefik.enable=true'
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.bazarr.rule=Host(`bazarr.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.bazarr.entrypoints=secure"
|
||||
- "traefik.http.routers.bazarr.tls.certresolver=le"
|
||||
- "traefik.http.routers.bazarr.middlewares=common-auth@file"
|
||||
|
||||
lidarr:
|
||||
image: linuxserver/lidarr:preview
|
||||
container_name: lidarr
|
||||
restart: always
|
||||
networks:
|
||||
- web
|
||||
volumes:
|
||||
- configlidarr:/config
|
||||
- torrents:/torrents
|
||||
|
@ -167,18 +160,16 @@ services:
|
|||
- PUID=${PUID}
|
||||
- TZ=Europe/Paris
|
||||
labels:
|
||||
- 'traefik.backend=lidarr'
|
||||
- 'traefik.port=8686'
|
||||
- 'traefik.frontend.rule=Host:lidarr.${TRAEFIK_DOMAIN}'
|
||||
- 'traefik.frontend.auth.basic.users=${HTTP_USER}:${HTTP_PASSWORD}'
|
||||
- 'traefik.enable=true'
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.lidarr.rule=Host(`lidarr.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.lidarr.entrypoints=secure"
|
||||
- "traefik.http.routers.lidarr.tls.certresolver=le"
|
||||
- "traefik.http.routers.lidarr.middlewares=common-auth@file"
|
||||
|
||||
tautulli:
|
||||
image: linuxserver/tautulli
|
||||
container_name: tautulli
|
||||
restart: always
|
||||
networks:
|
||||
- web
|
||||
volumes:
|
||||
- configtautulli:/config
|
||||
- config:/logs:ro # Inside of tautulli, bind to logs via "/logs/Plex Media Server/Logs"
|
||||
|
@ -187,16 +178,15 @@ services:
|
|||
- PUID=${PUID}
|
||||
- TZ=Europe/Paris
|
||||
labels:
|
||||
- 'traefik.tautulli.backend=tautulli'
|
||||
- 'traefik.tautulli.port=8181'
|
||||
- 'traefik.tautulli.frontend.rule=Host:tautulli.${TRAEFIK_DOMAIN}'
|
||||
- 'traefik.enable=true'
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.tautulli.rule=Host(`tautulli.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.tautulli.entrypoints=secure"
|
||||
- "traefik.http.routers.tautulli.tls.certresolver=le"
|
||||
|
||||
jdownloader:
|
||||
image: jlesage/jdownloader-2
|
||||
container_name: jdownloader
|
||||
networks:
|
||||
- web
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- configjdownloader:/config
|
||||
- downloads:/output
|
||||
|
@ -205,18 +195,17 @@ services:
|
|||
- GROUP_ID=${PGID}
|
||||
- TZ=Europe/Paris
|
||||
labels:
|
||||
- 'traefik.backend=jdownloader'
|
||||
- 'traefik.port=5800'
|
||||
- 'traefik.frontend.rule=Host:jdownloader.${TRAEFIK_DOMAIN}'
|
||||
- 'traefik.frontend.auth.basic.users=${HTTP_USER}:${HTTP_PASSWORD}'
|
||||
- 'traefik.enable=true'
|
||||
- "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.entrypoints=secure"
|
||||
- "traefik.http.routers.jdownloader.tls.certresolver=le"
|
||||
- "traefik.http.routers.jdownloader.middlewares=common-auth@file"
|
||||
|
||||
nextcloud:
|
||||
image: wonderfall/nextcloud
|
||||
container_name: nextcloud
|
||||
restart: always
|
||||
networks:
|
||||
- web
|
||||
volumes:
|
||||
- confignextcloud:/config
|
||||
- nextclouddata:/data
|
||||
|
@ -234,10 +223,10 @@ services:
|
|||
- DB_USER=${NEXTCLOUD_DB_USER}
|
||||
- DB_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
|
||||
labels:
|
||||
- 'traefik.backend=nextcloud'
|
||||
- 'traefik.port=8888'
|
||||
- 'traefik.frontend.rule=Host:nextcloud.${TRAEFIK_DOMAIN}'
|
||||
- 'traefik.enable=true'
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.nextcloud.rule=Host(`nextcloud.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.nextcloud.entrypoints=secure"
|
||||
- "traefik.http.routers.nextcloud.tls.certresolver=le"
|
||||
|
||||
portainer:
|
||||
image: portainer/portainer
|
||||
|
@ -245,22 +234,18 @@ services:
|
|||
restart: always
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
networks:
|
||||
- web
|
||||
command: --admin-password ${PORTAINER_ADMIN_PASSWORD} --host=unix:///var/run/docker.sock
|
||||
labels:
|
||||
- 'traefik.backend=portainer'
|
||||
- 'traefik.port=9000'
|
||||
- 'traefik.frontend.rule=Host:portainer.${TRAEFIK_DOMAIN}'
|
||||
- 'traefik.enable=true'
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.portainer.rule=Host(`portainer.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.portainer.entrypoints=secure"
|
||||
- "traefik.http.routers.portainer.tls.certresolver=le"
|
||||
|
||||
netdata:
|
||||
image: netdata/netdata
|
||||
restart: always
|
||||
container_name: netdata
|
||||
hostname: netdata.${TRAEFIK_DOMAIN}
|
||||
networks:
|
||||
- web
|
||||
environment:
|
||||
PGID: 999
|
||||
cap_add:
|
||||
|
@ -272,18 +257,16 @@ services:
|
|||
- /sys:/host/sys:ro
|
||||
- /var/run/docker.sock:/var/run/docker.sock:rw
|
||||
labels:
|
||||
- 'traefik.backend=netdata'
|
||||
- 'traefik.port=19999'
|
||||
- 'traefik.frontend.rule=Host:netdata.${TRAEFIK_DOMAIN}'
|
||||
- 'traefik.frontend.auth.basic.users=${HTTP_USER}:${HTTP_PASSWORD}'
|
||||
- 'traefik.enable=true'
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.netdata.rule=Host(`netdata.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.netdata.entrypoints=secure"
|
||||
- "traefik.http.routers.netdata.tls.certresolver=le"
|
||||
- "traefik.http.routers.netdata.middlewares=common-auth@file"
|
||||
|
||||
duplicati:
|
||||
image: linuxserver/duplicati
|
||||
container_name: duplicati
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- web
|
||||
environment:
|
||||
- PUID=${PUID}
|
||||
- PGID=${PGID}
|
||||
|
@ -293,18 +276,17 @@ services:
|
|||
- backups:/backups
|
||||
- alldata:/source
|
||||
labels:
|
||||
- 'traefik.backend=duplicati'
|
||||
- 'traefik.port=8200'
|
||||
- 'traefik.frontend.rule=Host:duplicati.${TRAEFIK_DOMAIN}'
|
||||
- 'traefik.frontend.auth.basic.users=${HTTP_USER}:${HTTP_PASSWORD}'
|
||||
- 'traefik.enable=true'
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.duplicati.rule=Host(`duplicati.${TRAEFIK_DOMAIN}`)"
|
||||
- "traefik.http.routers.duplicati.entrypoints=secure"
|
||||
- "traefik.http.routers.duplicati.tls.certresolver=le"
|
||||
- "traefik.http.routers.duplicati.middlewares=common-auth@file"
|
||||
|
||||
networks:
|
||||
webgateway:
|
||||
driver: bridge
|
||||
web:
|
||||
default:
|
||||
external:
|
||||
name: seedbox_webgateway
|
||||
name: "traefik-network"
|
||||
|
||||
volumes:
|
||||
alldata:
|
||||
driver: local-persist
|
||||
|
@ -314,6 +296,10 @@ volumes:
|
|||
driver: local-persist
|
||||
driver_opts:
|
||||
mountpoint: /data/config
|
||||
configtraefik:
|
||||
driver: local-persist
|
||||
driver_opts:
|
||||
mountpoint: /data/config/traefik
|
||||
configplex:
|
||||
driver: local-persist
|
||||
driver_opts:
|
||||
|
|
10
init.sh
10
init.sh
|
@ -1,8 +1,10 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "[$0] Initializing..."
|
||||
sudo mkdir /opt/traefik
|
||||
sudo touch /opt/traefik/acme.json && sudo chmod 600 /opt/traefik/acme.json
|
||||
cp .env.sample .env
|
||||
echo "[$0] Please edit .env file"
|
||||
docker network create traefik-network 2&>1 || true
|
||||
if [[ ! -f .env ]]; then
|
||||
cp .env.sample .env
|
||||
echo "[$0] Please edit .env file"
|
||||
fi
|
||||
echo "[$0] Done."
|
||||
exit 0
|
40
traefik.toml
40
traefik.toml
|
@ -1,40 +0,0 @@
|
|||
#https://docs.traefik.io/toml/
|
||||
#https://docs.traefik.io/user-guide/examples/
|
||||
################################################################
|
||||
# Global configuration
|
||||
################################################################
|
||||
logLevel = "WARNING"
|
||||
defaultEntryPoints = ["http", "https"]
|
||||
InsecureSkipVerify = true
|
||||
|
||||
[entryPoints]
|
||||
[entryPoints.http]
|
||||
address = ":80"
|
||||
[entryPoints.http.redirect]
|
||||
entryPoint = "https"
|
||||
[entryPoints.https]
|
||||
address = ":443"
|
||||
[entryPoints.https.tls]
|
||||
|
||||
[retry]
|
||||
|
||||
[acme]
|
||||
email = "overriden@in-traefik.yml"
|
||||
storage = "acme.json"
|
||||
entryPoint = "https"
|
||||
onHostRule = true
|
||||
acmeLogging = true
|
||||
[acme.httpChallenge]
|
||||
entryPoint = "http"
|
||||
|
||||
################################################################
|
||||
# Docker configuration backend
|
||||
################################################################
|
||||
[docker]
|
||||
endpoint = "unix:///var/run/docker.sock"
|
||||
domain = "mydomain.com"
|
||||
watch = true
|
||||
exposedByDefault = false
|
||||
|
||||
[file]
|
||||
watch = true
|
|
@ -0,0 +1,5 @@
|
|||
http:
|
||||
middlewares:
|
||||
common-auth:
|
||||
basicAuth:
|
||||
usersFile: "/etc/traefik/http_auth"
|
|
@ -0,0 +1,24 @@
|
|||
api:
|
||||
dashboard: true
|
||||
|
||||
providers:
|
||||
docker:
|
||||
endpoint: "unix:///var/run/docker.sock"
|
||||
network: "traefik-network"
|
||||
exposedByDefault: false # Only expose explicitly enabled containers
|
||||
file:
|
||||
filename: /etc/traefik/file-provider.yml
|
||||
|
||||
entryPoints:
|
||||
insecure:
|
||||
address: ":80"
|
||||
secure:
|
||||
address: ":443"
|
||||
|
||||
certificatesResolvers:
|
||||
le:
|
||||
acme:
|
||||
storage: /config/acme.json
|
||||
httpChallenge:
|
||||
# used during the challenge
|
||||
entryPoint: insecure
|
|
@ -1,5 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Create/update http_auth file according to values in .env file
|
||||
source .env
|
||||
echo "${HTTP_USER}:${HTTP_PASSWORD}" > traefik/http_auth
|
||||
|
||||
echo "[$0] ***** Pulling all images... *****"
|
||||
docker-compose pull
|
||||
echo "[$0] ***** Recreating containers if required... *****"
|
||||
|
|
Loading…
Reference in New Issue