Wokring traefik
With whoami and gitea working (although I haven't rebuilt yet)
This commit is contained in:
@@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
# Storage
|
# Storage
|
||||||
STORAGE_PATH=/mnt/storage/docker-data
|
STORAGE_PATH=/mnt/storage/docker-data
|
||||||
MEDIA_PATH=/mnt/storage
|
|
||||||
|
|
||||||
# User
|
# User
|
||||||
USER_UID=1000
|
USER_UID=1000
|
||||||
@@ -12,7 +11,6 @@ USER_GID=1000
|
|||||||
|
|
||||||
# Domain
|
# Domain
|
||||||
DOMAIN=sjhl.nz
|
DOMAIN=sjhl.nz
|
||||||
DOMAIN_WWW=__CHANGEME__
|
|
||||||
|
|
||||||
# Timezone
|
# Timezone
|
||||||
TZ=Pacific/Auckland
|
TZ=Pacific/Auckland
|
||||||
|
|||||||
22
Makefile
22
Makefile
@@ -1,14 +1,28 @@
|
|||||||
SERVICES=traefik whoami gitea nextcloud devbox
|
SERVICES=traefik whoami gitea nextcloud devbox
|
||||||
|
|
||||||
.PHONY: up down restart backup init-env env-sync docs generate-docs serve-docs logs status
|
.PHONY: up down restart backup init-env env-sync docs generate-docs serve-docs logs status up-% down-%
|
||||||
|
|
||||||
up:
|
up:
|
||||||
@for svc in $(SERVICES); do \
|
for svc in $(SERVICES); do \
|
||||||
if [ -f "$$svc/docker-compose.yml" ]; then \
|
if [ -f "$$svc/docker-compose.yml" ]; then \
|
||||||
echo "Starting $$svc..."; \
|
echo "Starting $$svc..."; \
|
||||||
(cd $$svc && docker compose up -d); \
|
(cd $$svc && docker compose --env-file ../.env `if [ -f .env ]; then echo --env-file .env; fi` up -d); \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done; \
|
||||||
|
|
||||||
|
up-%:
|
||||||
|
@svc=$*; \
|
||||||
|
if [ -f "$$svc/docker-compose.yml" ]; then \
|
||||||
|
echo "Starting $$svc..."; \
|
||||||
|
(cd $$svc && docker compose --env-file ../.env `if [ -f .env ]; then echo --env-file .env; fi` up -d); \
|
||||||
|
fi
|
||||||
|
|
||||||
|
down-%:
|
||||||
|
@svc=$*; \
|
||||||
|
if [ -f "$$svc/docker-compose.yml" ]; then \
|
||||||
|
echo "Stopping $$svc..."; \
|
||||||
|
(cd $$svc && docker compose down); \
|
||||||
|
fi
|
||||||
|
|
||||||
down:
|
down:
|
||||||
@for svc in $(SERVICES); do \
|
@for svc in $(SERVICES); do \
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# traefik/.env
|
# traefik/.env
|
||||||
# Copy to .env and fill in real values. NEVER commit .env.
|
# Copy to .env and fill in real values. NEVER commit .env.
|
||||||
|
|
||||||
TRAEFIK_DASHBOARD_PORT=8082
|
TRAEFIK_DASHBOARD_PORT=8080
|
||||||
ACME_EMAIL=letsencrypt@example.com
|
ACME_EMAIL=letsencrypt@example.com
|
||||||
DASHBOARD_BASIC_AUTH=admin:$$apr1$$changeme$$REPLACE_WITH_HTPASSWD_HASH
|
DASHBOARD_BASIC_AUTH=admin:$$apr1$$changeme$$REPLACE_WITH_HTPASSWD_HASH
|
||||||
|
|||||||
@@ -1,3 +1 @@
|
|||||||
THis is the project
|
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.
|
||||||
|
|
||||||
More information hear.
|
|
||||||
@@ -6,11 +6,12 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
- "443:443"
|
- "443:443"
|
||||||
- "${TRAEFIK_DASHBOARD_PORT:-8082}:8080"
|
- "${TRAEFIK_DASHBOARD_PORT}:8080"
|
||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
- ${STORAGE_PATH}/traefik/certs:/certs:rw
|
- ${STORAGE_PATH}/traefik/certs:/certs:rw
|
||||||
- ${STORAGE_PATH}/traefik/dynamic:/dynamic:ro
|
- ${STORAGE_PATH}/traefik/dynamic:/dynamic:ro
|
||||||
|
- ${STORAGE_PATH}/traefik/letsencrypt:/letsencrypt
|
||||||
networks:
|
networks:
|
||||||
- web
|
- web
|
||||||
security_opt:
|
security_opt:
|
||||||
@@ -23,6 +24,7 @@ services:
|
|||||||
- "traefik.http.routers.dashboard.rule=Host(`dashboard.${DOMAIN}`)"
|
- "traefik.http.routers.dashboard.rule=Host(`dashboard.${DOMAIN}`)"
|
||||||
- "traefik.http.routers.dashboard.service=api@internal"
|
- "traefik.http.routers.dashboard.service=api@internal"
|
||||||
- "traefik.http.routers.dashboard.tls=true"
|
- "traefik.http.routers.dashboard.tls=true"
|
||||||
|
- "traefik.http.routers.dashboard.tls.certresolver=letsencrypt"
|
||||||
command:
|
command:
|
||||||
- "--entrypoints.web.address=:80"
|
- "--entrypoints.web.address=:80"
|
||||||
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
|
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
|
||||||
@@ -31,6 +33,8 @@ services:
|
|||||||
- "--providers.docker=true"
|
- "--providers.docker=true"
|
||||||
- "--providers.docker.exposedbydefault=false"
|
- "--providers.docker.exposedbydefault=false"
|
||||||
- "--providers.docker.network=web"
|
- "--providers.docker.network=web"
|
||||||
|
- "--api.dashboard=true"
|
||||||
|
- "--api.insecure=false"
|
||||||
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
|
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
|
||||||
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
|
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
|
||||||
- "--certificatesresolvers.letsencrypt.acme.email=${ACME_EMAIL}"
|
- "--certificatesresolvers.letsencrypt.acme.email=${ACME_EMAIL}"
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ services:
|
|||||||
- "traefik.http.routers.whoami.entrypoints=websecure"
|
- "traefik.http.routers.whoami.entrypoints=websecure"
|
||||||
- "traefik.http.routers.whoami.rule=Host(`whoami.${DOMAIN}`)"
|
- "traefik.http.routers.whoami.rule=Host(`whoami.${DOMAIN}`)"
|
||||||
- "traefik.http.routers.whoami.tls=true"
|
- "traefik.http.routers.whoami.tls=true"
|
||||||
|
- "traefik.http.routers.whoami.tls.certresolver=letsencrypt"
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
web:
|
web:
|
||||||
|
|||||||
Reference in New Issue
Block a user