Add in cloudflare ddns and restructure repo
This commit is contained in:
6
services/traefik/.env.example
Executable file
6
services/traefik/.env.example
Executable file
@@ -0,0 +1,6 @@
|
||||
# traefik/.env
|
||||
# Copy to .env and fill in real values. NEVER commit .env.
|
||||
|
||||
TRAEFIK_DASHBOARD_PORT=8080
|
||||
ACME_EMAIL=letsencrypt@example.com
|
||||
DASHBOARD_BASIC_AUTH=admin:$$apr1$$changeme$$REPLACE_WITH_HTPASSWD_HASH
|
||||
1
services/traefik/README.md
Normal file
1
services/traefik/README.md
Normal file
@@ -0,0 +1 @@
|
||||
This is the core proxy that protects my server. It handles SSL termination, routing, and the dashboard for monitoring. I use Traefik's Docker provider to automatically discover services and route traffic based on labels in their `docker-compose.yml` files.
|
||||
52
services/traefik/docker-compose.yml
Executable file
52
services/traefik/docker-compose.yml
Executable file
@@ -0,0 +1,52 @@
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:v3.6
|
||||
container_name: traefik
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "${TRAEFIK_DASHBOARD_PORT}:8080"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- ${STORAGE_PATH}/traefik/certs:/certs:rw
|
||||
- ./dynamic:/dynamic:ro
|
||||
- ${STORAGE_PATH}/traefik/letsencrypt:/letsencrypt
|
||||
networks:
|
||||
- web
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.dashboard-auth.basicauth.users=${DASHBOARD_BASIC_AUTH}"
|
||||
- "traefik.http.routers.dashboard.entrypoints=websecure"
|
||||
- "traefik.http.routers.dashboard.middlewares=dashboard-auth@docker"
|
||||
- "traefik.http.routers.dashboard.rule=Host(`dashboard.${DOMAIN}`)"
|
||||
- "traefik.http.routers.dashboard.service=api@internal"
|
||||
- "traefik.http.routers.dashboard.tls=true"
|
||||
- "traefik.http.routers.dashboard.tls.certresolver=letsencrypt"
|
||||
command:
|
||||
- "--entrypoints.web.address=:80"
|
||||
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
|
||||
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
|
||||
- "--entrypoints.websecure.address=:443"
|
||||
- "--providers.docker=true"
|
||||
- "--providers.docker.exposedbydefault=false"
|
||||
- "--providers.docker.network=web"
|
||||
- "--api.dashboard=true"
|
||||
- "--api.insecure=false"
|
||||
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
|
||||
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
|
||||
- "--certificatesresolvers.letsencrypt.acme.email=${ACME_EMAIL}"
|
||||
- "--certificatesresolvers.letsencrypt.acme.storage=/certs/acme.json"
|
||||
- "--metrics.prometheus=true"
|
||||
- "--accesslog=true"
|
||||
- "--providers.file.directory=/dynamic"
|
||||
- "--providers.file.watch=true"
|
||||
|
||||
environment:
|
||||
- DOMAIN=${DOMAIN}
|
||||
|
||||
networks:
|
||||
web:
|
||||
external: true
|
||||
38
services/traefik/dynamic/nextcloud.yml
Normal file
38
services/traefik/dynamic/nextcloud.yml
Normal file
@@ -0,0 +1,38 @@
|
||||
http:
|
||||
routers:
|
||||
nextcloud:
|
||||
rule: 'Host(`nextcloud.{{ env "DOMAIN" }}`)'
|
||||
entryPoints:
|
||||
- websecure
|
||||
service: nextcloud
|
||||
middlewares:
|
||||
- nextcloud-chain
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
|
||||
services:
|
||||
nextcloud:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://nextcloud-aio-apache:11000"
|
||||
|
||||
middlewares:
|
||||
nextcloud-secure-headers:
|
||||
headers:
|
||||
hostsProxyHeaders:
|
||||
- X-Forwarded-Host
|
||||
customRequestHeaders:
|
||||
X-Forwarded-Proto: https
|
||||
referrerPolicy: same-origin
|
||||
|
||||
nextcloud-dav:
|
||||
redirectRegex:
|
||||
regex: "^https://([^/]+)/.well-known/(card|cal)dav"
|
||||
replacement: "https://${1}/remote.php/dav/"
|
||||
permanent: true
|
||||
|
||||
nextcloud-chain:
|
||||
chain:
|
||||
middlewares:
|
||||
- nextcloud-dav
|
||||
- nextcloud-secure-headers
|
||||
4
services/traefik/dynamic/tls.yaml
Normal file
4
services/traefik/dynamic/tls.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
tls:
|
||||
certificates:
|
||||
- certFile: /certs/local.crt
|
||||
keyFile: /certs/local.key
|
||||
Reference in New Issue
Block a user