traefik local

This commit is contained in:
Yax 2021-11-01 20:26:33 +01:00
parent 4c2bdef32e
commit 4e29e82851
20 changed files with 119 additions and 74 deletions

View file

@ -2,17 +2,16 @@
GANDIV5_API_KEY=xxxxxxxxxxxxxxxxx
LETSENCRYPT_EMAIL=root@localhost.localdomain
# sites
DOMAIN=traefik.me
# off sites
HOST_BAIKAL=
HOST_BLOG=blog
HOST_DELUGE=deluge
HOST_DOKUWIKI=dokuwiki
HOST_GLANCES=glances
HOST_MAIL=
HOST_NETDATA=
# sites
DOMAIN=traefik.me
HOST_BLOG=blog
HOST_DOKUWIKI=dokuwiki
HOST_PIGALLERY=pigallery
HOST_PORTAINER=portainer
HOST_SEAFILE=seafile
HOST_SELFOSS=selfoss
HOST_SHAARLI=shaarli

View file

@ -15,7 +15,7 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.baikal.rule=Host(`${HOST_BAIKAL}.${DOMAIN}`)
- traefik.http.routers.baikal.entrypoints=websecure
- traefik.http.routers.baikal.entrypoints=https
- traefik.http.routers.baikal.tls=true
- traefik.http.services.baikal.loadbalancer.server.port=80

View file

@ -24,6 +24,6 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.blog.rule=Host(`${HOST_BLOG}.${DOMAIN}`)
- traefik.http.routers.blog.entrypoints=websecure
- traefik.http.routers.blog.entrypoints=https
- traefik.http.routers.blog.tls=true
- traefik.http.services.blog.loadbalancer.server.port=80

View file

@ -21,7 +21,7 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.deluge.rule=Host(`${HOST_WWW}.${DOMAIN}`) && PathPrefix(`${PATH_DELUGE}`)
- traefik.http.routers.deluge.entrypoints=websecure
- traefik.http.routers.deluge.entrypoints=https
- traefik.http.routers.deluge.tls=true
- traefik.http.services.deluge.loadbalancer.server.port=8112
- traefik.http.routers.deluge.middlewares=delugeHeader,sameOriginHeader,delugeRedir,delugePStrip

View file

@ -17,7 +17,7 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.dokuwiki.rule=Host(`${HOST_DOKUWIKI}.${DOMAIN}`)
- traefik.http.routers.dokuwiki.entrypoints=websecure
- traefik.http.routers.dokuwiki.entrypoints=https
- traefik.http.routers.dokuwiki.tls=true
- traefik.http.services.dokuwiki.loadbalancer.server.port=80

View file

@ -16,7 +16,7 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.glances.rule=Host(`${HOST_WWW}.${DOMAIN}`) && PathPrefix(`${PATH_GLANCES}`)
- traefik.http.routers.glances.entrypoints=websecure
- traefik.http.routers.glances.entrypoints=https
- traefik.http.routers.glances.tls=true
- traefik.http.services.glances.loadbalancer.server.port=61208
- traefik.http.routers.glances.middlewares=glancesRedir,glancesPStrip

View file

@ -27,7 +27,7 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.netdata.rule=Host(`${HOST_NETDATA}.${DOMAIN}`)
- traefik.http.routers.netdata.entrypoints=websecure
- traefik.http.routers.netdata.entrypoints=https
- traefik.http.routers.netdata.tls=true
- traefik.http.routers.netdata.middlewares=auth
- traefik.http.middlewares.auth.basicauth.users=${BASIC_AUTH}

View file

@ -1,48 +0,0 @@
version: '3'
services:
nginx-proxy:
container_name: nginx-proxy
image: nginxproxy/nginx-proxy
ports:
- 80:80
- 443:443
labels:
- com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true
environment:
- DEFAULT_HOST=${HOST_WWW}.${DOMAIN}
- DHPARAM_GENERATION=${LETSENCRYPT_GENERATE}
networks:
- srv
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ${ROOT_INSTALL}/data/nginx-proxy/conf.d:/etc/nginx/conf.d
- ${ROOT_INSTALL}/data/nginx-proxy/vhost.d:/etc/nginx/vhost.d
- ${ROOT_INSTALL}/data/nginx-proxy/dhparam:/etc/nginx/dhparam
- ${ROOT_INSTALL}/data/nginx-proxy/html:/usr/share/nginx/html
- ${ROOT_INSTALL}/data/nginx-proxy/certs:/etc/nginx/certs:ro
- ${ROOT_INSTALL}/data/nginx-proxy/htpasswd:/etc/nginx/htpasswd:ro
acme-companion:
image: nginxproxy/acme-companion
container_name: nginx-proxy-acme
environment:
- DEFAULT_EMAIL=${LETSENCRYPT_EMAIL}
- NGINX_PROXY_CONTAINER=nginx-proxy
# - ACME_CA_URI=https://acme-staging-v02.api.letsencrypt.org/directory
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${ROOT_INSTALL}/data/nginx-proxy/conf.d:/etc/nginx/conf.d
- ${ROOT_INSTALL}/data/nginx-proxy/vhost.d:/etc/nginx/vhost.d
- ${ROOT_INSTALL}/data/nginx-proxy/html:/usr/share/nginx/html
- ${ROOT_INSTALL}/data/nginx-proxy/certs:/etc/nginx/certs:rw
- ${ROOT_INSTALL}/data/nginx-proxy/acme.sh:/etc/acme.sh
networks:
- srv
volumes:
conf:
dhparam:
html:
certs:
acme:

View file

@ -28,7 +28,7 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.pigallery_config.rule=Host(`${HOST_PIGALLERY}.${DOMAIN}`)
- traefik.http.routers.pigallery_config.entrypoints=websecure
- traefik.http.routers.pigallery_config.entrypoints=https
- traefik.http.routers.pigallery_config.tls=true
- traefik.http.services.pigallery_config.loadbalancer.server.port=80

View file

@ -16,7 +16,7 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.portainer.rule=Host(`${HOST_WWW}.${DOMAIN}`) && PathPrefix(`${PATH_PORTAINER}`)
- traefik.http.routers.portainer.entrypoints=websecure
- traefik.http.routers.portainer.entrypoints=https
- traefik.http.routers.portainer.tls=true
- traefik.http.services.portainer.loadbalancer.server.port=9000
- traefik.http.routers.portainer.middlewares=portainerRedir,portainerPStrip

View file

@ -17,7 +17,7 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.posteio.rule=Host(`${HOST_MAIL}.${DOMAIN}`)
- traefik.http.routers.posteio.entrypoints=websecure
- traefik.http.routers.posteio.entrypoints=https
- traefik.http.routers.posteio.tls=true
- traefik.http.services.posteio.loadbalancer.server.port=80
networks:

View file

@ -51,7 +51,7 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.seafile.rule=Host(`${HOST_SEAFILE}.${DOMAIN}`)
- traefik.http.routers.seafile.entrypoints=websecure
- traefik.http.routers.seafile.entrypoints=https
- traefik.http.routers.seafile.tls=true
- traefik.http.services.seafile.loadbalancer.server.port=80

View file

@ -14,7 +14,7 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.selfoss.rule=Host(`${HOST_SELFOSS}.${DOMAIN}`)
- traefik.http.routers.selfoss.entrypoints=websecure
- traefik.http.routers.selfoss.entrypoints=https
- traefik.http.routers.selfoss.tls=true
- traefik.http.services.selfoss.loadbalancer.server.port=8888

View file

@ -15,7 +15,7 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.shaarli.rule=Host(`${HOST_SHAARLI}.${DOMAIN}`)
- traefik.http.routers.shaarli.entrypoints=websecure
- traefik.http.routers.shaarli.entrypoints=https
- traefik.http.routers.shaarli.tls=true
- traefik.http.services.shaarli.loadbalancer.server.port=80

View file

@ -0,0 +1,65 @@
version: '3'
services:
traefik:
container_name: traefik
image: traefik:v2.2.1
command:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --api=true
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
# - --certificatesresolvers.letsencrypt.acme.email=${LETSENCRYPT_EMAIL}
# - --certificatesresolvers.letsencrypt.acme.storage=/acme.json
# - --certificatesResolvers.letsencrypt.acme.dnsChallenge=true
# - --certificatesResolvers.letsencrypt.acme.dnsChallenge.resolvers=1.1.1.1:53,8.8.8.8:53
# - --certificatesresolvers.letsencrypt.acme.dnschallenge.provider=gandiv5
# - --certificatesResolvers.letsencrypt.acme.dnsChallenge.delayBeforeCheck=0
# staging server
#- --certificatesresolvers.letsencrypt.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
# environment:
# - GANDIV5_API_KEY=${GANDIV5_API_KEY}
#labels:
# - traefik.enable=true
# - traefik.http.routers.api.rule=Host(`${HOST_TRAEFIK}.${DOMAIN}`)
# - traefik.http.routers.api.entrypoints=web
# - traefik.http.routers.api.entrypoints=websecure
# - traefik.http.routers.api.service=api@internal
# - traefik.http.routers.api.middlewares=auth
# - traefik.http.middlewares.auth.basicauth.users=${BASIC_AUTH}
# request widlcard certificate
# - traefik.http.routers.api.tls.certresolver=letsencrypt
# - traefik.http.routers.api.tls.domains[0].main=${DOMAIN}
# - traefik.http.routers.api.tls.domains[0].sans=*.${DOMAIN}
# global redirect to https
# - traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
# - traefik.http.routers.http-catchall.entrypoints=web
# - traefik.http.routers.http-catchall.middlewares=redirect-to-https
# middleware redirect
# - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
# - traefik.http.middlewares.redirect-to-https.redirectscheme.permanent=true
ports:
- 80:80
- 443:443
expose:
- 8080
networks:
- srv
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${ROOT_INSTALL}/hosting/traefik/traefik.yml:/etc/traefik/traefik.yml
- ${ROOT_INSTALL}/hosting/traefik/tls.yml:/etc/traefik/tls.yml
- certs:/etc/ssl/traefik
reverse-proxy-https-helper:
image: alpine
command: sh -c "cd /etc/ssl/traefik
&& wget traefik.me/cert.pem -O cert.pem
&& wget traefik.me/privkey.pem -O privkey.pem"
volumes:
- certs:/etc/ssl/traefik
volumes:
certs:

10
traefik/docker-compose.traefik.yml Executable file → Normal file
View file

@ -8,8 +8,8 @@ services:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --api=true
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --entrypoints.http.address=:80
- --entrypoints.https.address=:443
- --certificatesresolvers.letsencrypt.acme.email=${LETSENCRYPT_EMAIL}
- --certificatesresolvers.letsencrypt.acme.storage=/acme.json
- --certificatesResolvers.letsencrypt.acme.dnsChallenge=true
@ -23,8 +23,8 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.api.rule=Host(`${HOST_TRAEFIK}.${DOMAIN}`)
- traefik.http.routers.api.entrypoints=web
- traefik.http.routers.api.entrypoints=websecure
- traefik.http.routers.api.entrypoints=http
- traefik.http.routers.api.entrypoints=https
- traefik.http.routers.api.service=api@internal
- traefik.http.routers.api.middlewares=auth
- traefik.http.middlewares.auth.basicauth.users=${BASIC_AUTH}
@ -34,7 +34,7 @@ services:
- traefik.http.routers.api.tls.domains[0].sans=*.${DOMAIN}
# global redirect to https
- traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
- traefik.http.routers.http-catchall.entrypoints=web
- traefik.http.routers.http-catchall.entrypoints=http
- traefik.http.routers.http-catchall.middlewares=redirect-to-https
# middleware redirect
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https

9
traefik/tls.yml Normal file
View file

@ -0,0 +1,9 @@
tls:
stores:
default:
defaultCertificate:
certFile: /etc/ssl/traefik/cert.pem
keyFile: /etc/ssl/traefik/privkey.pem
certificates:
- certFile: /etc/ssl/traefik/cert.pem
keyFile: /etc/ssl/traefik/privkey.pem

20
traefik/traefik.yml Normal file
View file

@ -0,0 +1,20 @@
logLevel: INFO
api:
insecure: true
dashboard: true
entryPoints:
http:
address: ":80"
https:
address: ":443"
providers:
file:
filename: /etc/traefik/tls.yml
docker:
endpoint: unix:///var/run/docker.sock
watch: true
exposedByDefault: true
defaultRule: "HostRegexp(`{{ index .Labels \"com.docker.compose.service\"}}.traefik.me`,`{{ index .Labels \"com.docker.compose.service\"}}-{dashed-ip:.*}.traefik.me`)"

View file

@ -18,7 +18,7 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.wallabag.rule=Host(`${HOST_WALLABAG}.${DOMAIN}`)
- traefik.http.routers.wallabag.entrypoints=websecure
- traefik.http.routers.wallabag.entrypoints=https
- traefik.http.routers.wallabag.tls=true
- traefik.http.services.wallabag.loadbalancer.server.port=80

View file

@ -12,6 +12,6 @@ services:
labels:
- traefik.enable=true
- traefik.http.routers.www.rule=Host(`${HOST_WWW}.${DOMAIN}`)
- traefik.http.routers.www.entrypoints=websecure
- traefik.http.routers.www.entrypoints=https
- traefik.http.routers.www.tls=true
- traefik.http.services.www.loadbalancer.server.port=80