From 2045bda9b56ed1551981ef3d9c00659aca605d55 Mon Sep 17 00:00:00 2001 From: Eduardo David Paredes Vara Date: Wed, 3 Dec 2025 14:46:08 +0000 Subject: [PATCH] ruleta --- ruleta/docker-compose.yml | 57 +++++++++++++++++++++++++++++++++++++++ ruleta/stack.env | 18 +++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 ruleta/docker-compose.yml create mode 100644 ruleta/stack.env diff --git a/ruleta/docker-compose.yml b/ruleta/docker-compose.yml new file mode 100644 index 0000000..f941790 --- /dev/null +++ b/ruleta/docker-compose.yml @@ -0,0 +1,57 @@ +services: + # Aplicación Next.js + app: + image: ${RULETA_IMAGE} + container_name: ruleta-app + restart: unless-stopped + + environment: + NODE_ENV: ${RULETA_NODE_ENV} + NEXT_TELEMETRY_DISABLED: ${RULETA_NEXT_TELEMETRY_DISABLED} + # Si usas Supabase, descomenta y configura: + # NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL} + # NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY} + # SUPABASE_SERVICE_ROLE_KEY: ${SUPABASE_SERVICE_ROLE_KEY} + + networks: + - proxy + + labels: + traefik.enable: "true" + traefik.docker.network: "${TRAEFIK_DOCKER_NETWORK}" + + # --------------------------- + # 1) Router EXISTENTE (subdominio) + # https://ruleta.thehomelesssherlock.com + # --------------------------- + traefik.http.routers.ruleta-sub.rule: "Host(`${RULETA_SUBDOMAIN}`)" + traefik.http.routers.ruleta-sub.entrypoints: "${TRAEFIK_ENTRYPOINT_SECURE}" + traefik.http.routers.ruleta-sub.tls.certresolver: "${TRAEFIK_CERTRESOLVER}" + traefik.http.routers.ruleta-sub.service: "ruleta" + + # --------------------------- + # 2) Router NUEVO (.net + path) + # https://sherlockhomeless.net/ruleta + # --------------------------- + traefik.http.routers.ruleta-path.rule: "Host(`${RULETA_MAIN_DOMAIN}`) && PathPrefix(`/ruleta`)" + traefik.http.routers.ruleta-path.entrypoints: "${TRAEFIK_ENTRYPOINT_SECURE}" + traefik.http.routers.ruleta-path.tls.certresolver: "${TRAEFIK_CERTRESOLVER}" + traefik.http.routers.ruleta-path.service: "ruleta" + traefik.http.routers.ruleta-path.middlewares: "ruleta-strip@docker" + + # Quita /ruleta antes de llegar a Next.js + traefik.http.middlewares.ruleta-strip.stripprefix.prefixes: "/ruleta" + traefik.http.middlewares.ruleta-strip.stripprefix.forceSlash: "true" + + # Servicio interno (Next.js escucha en 3000) + traefik.http.services.ruleta.loadbalancer.server.port: "${RULETA_APP_PORT}" + + # Proteger con Authentik (si quieres habilitarlo) + # OJO: si lo activas, ponlo en ambos routers o usa una cadena. + # traefik.http.routers.ruleta-sub.middlewares: "authentik@docker" + # traefik.http.routers.ruleta-path.middlewares: "authentik@docker,ruleta-strip@docker" + +networks: + proxy: + external: true + diff --git a/ruleta/stack.env b/ruleta/stack.env new file mode 100644 index 0000000..6913c7c --- /dev/null +++ b/ruleta/stack.env @@ -0,0 +1,18 @@ +##### Ruleta - App ##### +RULETA_IMAGE= +RULETA_NODE_ENV= +RULETA_NEXT_TELEMETRY_DISABLED= +RULETA_APP_PORT= + +# Supabase (opcional) +NEXT_PUBLIC_SUPABASE_URL= +NEXT_PUBLIC_SUPABASE_ANON_KEY= +SUPABASE_SERVICE_ROLE_KEY= + +##### Traefik / dominios ##### +TRAEFIK_DOCKER_NETWORK= +RULETA_SUBDOMAIN= +RULETA_MAIN_DOMAIN= +TRAEFIK_ENTRYPOINT_SECURE= +TRAEFIK_CERTRESOLVER= +