From 48bb74f84a81b367defe9f315cda32d33ffe02f1 Mon Sep 17 00:00:00 2001 From: Eduardo David Paredes Vara Date: Mon, 1 Dec 2025 11:40:01 +0000 Subject: [PATCH] Traefik stack portainer --- Traefik/docker-compose.yml | 56 ++++++++++++++++++++++++++++++++++++++ Traefik/stack.env | 14 ++++++++++ 2 files changed, 70 insertions(+) create mode 100644 Traefik/docker-compose.yml create mode 100644 Traefik/stack.env diff --git a/Traefik/docker-compose.yml b/Traefik/docker-compose.yml new file mode 100644 index 0000000..5ac14f2 --- /dev/null +++ b/Traefik/docker-compose.yml @@ -0,0 +1,56 @@ +services: + traefik: + image: traefik:${TRAEFIK_VERSION:-v3.1} + container_name: traefik + restart: unless-stopped + extra_hosts: + - "host.docker.internal:host-gateway" + + command: + # Logs + - "--log.level=${TRAEFIK_LOG_LEVEL:-INFO}" + + # Dashboard (por ahora solo interno) + - "--api.dashboard=true" + - "--api.insecure=false" + + # Entrypoints + - "--entrypoints.web.address=:${TRAEFIK_HTTP_PORT:-80}" + - "--entrypoints.websecure.address=:${TRAEFIK_HTTPS_PORT:-443}" + + # Redirección HTTP -> HTTPS + - "--entrypoints.web.http.redirections.entrypoint.to=websecure" + - "--entrypoints.web.http.redirections.entrypoint.scheme=https" + + # Proveedor Docker + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--providers.docker.network=${TRAEFIK_DOCKER_NETWORK:-proxy}" + + # Proveedor de ficheros dinámicos + - "--providers.file.directory=/dynamic" + - "--providers.file.watch=true" + + # ACME / Let's Encrypt (resolver "letsencrypt" parametrizado) + - "--certificatesresolvers.${TRAEFIK_ACME_RESOLVER:-letsencrypt}.acme.email=${TRAEFIK_ACME_EMAIL}" + - "--certificatesresolvers.${TRAEFIK_ACME_RESOLVER:-letsencrypt}.acme.storage=/letsencrypt/acme.json" + - "--certificatesresolvers.${TRAEFIK_ACME_RESOLVER:-letsencrypt}.acme.httpchallenge=true" + - "--certificatesresolvers.${TRAEFIK_ACME_RESOLVER:-letsencrypt}.acme.httpchallenge.entrypoint=web" + + ports: + - "${TRAEFIK_HTTP_PORT:-80}:80" + - "${TRAEFIK_HTTPS_PORT:-443}:443" + + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - ${TRAEFIK_DYNAMIC_PATH:-/opt/traefik/dynamic}:/dynamic + - ${TRAEFIK_LETSENCRYPT_PATH:-/opt/traefik/letsencrypt}:/letsencrypt + + networks: + - proxy + +networks: + proxy: + external: true + name: ${TRAEFIK_DOCKER_NETWORK:-proxy} + diff --git a/Traefik/stack.env b/Traefik/stack.env new file mode 100644 index 0000000..c2c11c1 --- /dev/null +++ b/Traefik/stack.env @@ -0,0 +1,14 @@ +TRAEFIK_VERSION=v3.1 + +TRAEFIK_LOG_LEVEL=INFO +TRAEFIK_HTTP_PORT=80 +TRAEFIK_HTTPS_PORT=443 + +TRAEFIK_DOCKER_NETWORK=proxy + +TRAEFIK_ACME_RESOLVER=letsencrypt +TRAEFIK_ACME_EMAIL=lets.encrypt@thehomelesssherlock.com + +TRAEFIK_DYNAMIC_PATH=/opt/traefik/dynamic +TRAEFIK_LETSENCRYPT_PATH=/opt/traefik/letsencrypt +