diff --git a/gitea/README.md b/gitea/README.md index 866d3d6..b81c4ba 100644 --- a/gitea/README.md +++ b/gitea/README.md @@ -5,12 +5,27 @@ Gitea es un servidor Git ligero y autoalojado, similar a GitHub o GitLab. ## 馃搵 Descripci贸n Este stack despliega Gitea con: + - Base de datos PostgreSQL - Servidor SSH para operaciones Git - Gitea Actions (CI/CD similar a GitHub Actions) - Act Runner para ejecutar pipelines - Integraci贸n con Traefik y Authentik +## Protecci贸n de `stack.env` + +La configuraci贸n [`traefik-dynamic.yml`](./traefik-dynamic.yml) contiene un router de prioridad alta que devuelve `403 Forbidden` para cualquier ruta de Gitea cuyo 煤ltimo segmento sea exactamente `stack.env`, sin importar may煤sculas o min煤sculas. Esto cubre tanto la vista web como las rutas raw de cualquier repositorio. + +El bloqueo se implementa en Traefik, antes de Gitea, y no usa CrowdSec. Por eso se aplica igual a todas las IP y una petici贸n a `stack.env` no provoca por s铆 sola un baneo que afecte al resto del sitio. Las dem谩s rutas siguen pasando por `crowdsec-bouncer@file`. + +Instala o actualiza la configuraci贸n activa con: + +```bash +sudo install -m 0644 gitea/traefik-dynamic.yml /opt/traefik/dynamic/gitea.yml +``` + +Traefik observa el directorio din谩mico y recarga el archivo sin reiniciar el contenedor. + ## 馃殌 Despliegue ### Prerequisitos diff --git a/gitea/traefik-dynamic.yml b/gitea/traefik-dynamic.yml new file mode 100644 index 0000000..7bd76cf --- /dev/null +++ b/gitea/traefik-dynamic.yml @@ -0,0 +1,35 @@ +http: + routers: + gitea-block-stack-env: + rule: 'Host(`gitea.sherlockhomeless.net`) && PathRegexp(`(?i)(^|/)stack[.]env$`)' + priority: 1000 + entryPoints: + - websecure + tls: + certResolver: letsencrypt + middlewares: + - gitea-deny-stack-env + service: gitea + + gitea: + rule: 'Host(`gitea.sherlockhomeless.net`)' + entryPoints: + - websecure + tls: + certResolver: letsencrypt + middlewares: + - crowdsec-bouncer@file + service: gitea + + middlewares: + gitea-deny-stack-env: + ipAllowList: + sourceRange: + - 0.0.0.0/32 + - ::/128 + + services: + gitea: + loadBalancer: + servers: + - url: http://gitea:3000