Traefik for Exposed Self-hosted service
This commit is contained in:
commit
2cb94a3925
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
.env
|
||||
dashboard_authfile
|
||||
access.log
|
||||
certs/
|
25
docker-compose.yaml
Normal file
25
docker-compose.yaml
Normal file
@ -0,0 +1,25 @@
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:latest
|
||||
container_name: traefik
|
||||
network_mode: host
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- CLOUDFLARE_EMAIL=${CLOUDFLARE_EMAIL}
|
||||
- CLOUDFLARE_DNS_API_TOKEN=${CLOUDFLARE_DNS_API_TOKEN}
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- ./certs:/letsencrypt
|
||||
- ./dashboard_authfile:/dashboard_authfile:ro
|
||||
- ./dynamic.yml:/dynamic.yml
|
||||
- ./traefik.yml:/traefik.yml:ro
|
||||
- ./access.log:/access.log:ro
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.traefik.rule=Host(`gbanyan.net`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
|
||||
- "traefik.http.routers.traefik.entrypoints=websecure"
|
||||
- "traefik.http.routers.traefik.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.routers.traefik.service=api@internal"
|
||||
- "traefik.http.routers.traefik.middlewares=auth"
|
||||
- "traefik.http.middlewares.auth.basicauth.usersfile=/dashboard_authfile"
|
||||
- "traefik.http.services.traefik.loadbalancer.server.port=443"
|
6
dynamic.yml
Normal file
6
dynamic.yml
Normal file
@ -0,0 +1,6 @@
|
||||
http:
|
||||
middlewares:
|
||||
cloudflarewarp:
|
||||
plugin:
|
||||
cloudflarewarp:
|
||||
disableDefault: false
|
48
dynamic.yml_bac
Normal file
48
dynamic.yml_bac
Normal file
@ -0,0 +1,48 @@
|
||||
http:
|
||||
routers:
|
||||
nextcloud:
|
||||
rule: Host(`next.gbanyan.net`)
|
||||
service: nextcloud
|
||||
middlewares:
|
||||
- nextcloud-chain
|
||||
entryPoints: ["websecure"]
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
|
||||
services:
|
||||
nextcloud:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://192.168.40.11:8081
|
||||
|
||||
middlewares:
|
||||
limit:
|
||||
buffering:
|
||||
memRequestBodyBytes: 2048000
|
||||
nextcloud-secure-headers:
|
||||
headers:
|
||||
hostsProxyHeaders:
|
||||
- "X-Forwarded-Host"
|
||||
referrerPolicy: "same-origin"
|
||||
stsSeconds: 15552000
|
||||
https-redirect:
|
||||
redirectscheme:
|
||||
scheme: https
|
||||
|
||||
nextcloud-redirect:
|
||||
replacepathregex:
|
||||
regex: "^/.well-known/ca(l|rd)dav"
|
||||
replacement: "/remote.php/dav/"
|
||||
|
||||
nextcloud-webfinger:
|
||||
replacepathregex:
|
||||
regex: "^(/.well-known/*)"
|
||||
replacement: "/index.php$${1}"
|
||||
|
||||
nextcloud-chain:
|
||||
chain:
|
||||
middlewares:
|
||||
#- https-redirect
|
||||
- nextcloud-secure-headers
|
||||
- nextcloud-redirect
|
||||
- nextcloud-webfinger
|
61
traefik.yml
Normal file
61
traefik.yml
Normal file
@ -0,0 +1,61 @@
|
||||
## STATIC CONFIGURATION
|
||||
log:
|
||||
level: DEBUG
|
||||
|
||||
accessLog:
|
||||
filePath: "/access.log"
|
||||
format: json
|
||||
filters:
|
||||
statusCodes:
|
||||
- "200-299" # log successful http requests
|
||||
- "400-599" # log failed http requests
|
||||
#retryAttempts: true
|
||||
#minDuration: "10ms"
|
||||
# collect logs as in-memory buffer before writing into log file
|
||||
bufferingSize: 0
|
||||
fields:
|
||||
headers:
|
||||
defaultMode: drop # drop all headers per default
|
||||
names:
|
||||
User-Agent: keep # log user agent strings
|
||||
|
||||
api:
|
||||
insecure: false
|
||||
dashboard: true
|
||||
|
||||
entryPoints:
|
||||
web:
|
||||
address: ":80"
|
||||
http:
|
||||
redirections: # HTTPS redirection (80 to 443)
|
||||
entryPoint:
|
||||
to: "websecure" # The target element
|
||||
scheme: "https"
|
||||
# The redirection target scheme
|
||||
websecure:
|
||||
address: ":443"
|
||||
http3: {}
|
||||
|
||||
global:
|
||||
checknewversion: false # Periodically check if a new version has been released.
|
||||
sendanonymoususage: false # Periodically send anonymous usage statistics.
|
||||
|
||||
providers:
|
||||
docker:
|
||||
exposedByDefault: false
|
||||
file:
|
||||
filename: "/dynamic.yml"
|
||||
|
||||
certificatesResolvers:
|
||||
letsencrypt:
|
||||
acme:
|
||||
email: gbanyan.huang@gmail.com
|
||||
storage: /letsencrypt/acme.json
|
||||
dnsChallenge:
|
||||
provider: cloudflare
|
||||
|
||||
experimental:
|
||||
plugins:
|
||||
cloudflarewarp:
|
||||
modulename: github.com/BetterCorp/cloudflarewarp
|
||||
version: v1.4.0
|
Loading…
x
Reference in New Issue
Block a user