STABLE: Reconstrucción integral de infraestructura, limpieza de middlewares obsoletos y blindaje de Traefik

This commit is contained in:
2026-01-06 00:57:00 +01:00
parent 3c5976e37f
commit 7a496b235c
5 changed files with 63 additions and 64 deletions

View File

@@ -1,8 +1,12 @@
# ==============================================================================
# GITEA - CONFIGURACIÓN DE PRODUCCIÓN PARA SYNOLOGY DSM
# GITEA - CONFIGURACIÓN DE PRODUCCIÓN (REVISIÓN DE SEGURIDAD)
# ==============================================================================
# Este servicio corre bajo el UID 1032 y GID 100 gestionado internamente por s6.
# Se conecta a Traefik v3 a través de la red interna de servicios.
# - Identidad: Ejecución bajo UID 1032 / GID 100 (Estándar OgnirNAS).
# - Red: Conectado a 'services-internal-net' para aislamiento Bridge.
# - Traefik v3:
# * Se utiliza 'security-headers@file' (Middleware dinámico actualizado).
# * Vinculación explícita router-servicio para evitar estados 'disabled'.
# * Resolución de certificados vía Let's Encrypt.
# ==============================================================================
version: "3.9"
@@ -13,29 +17,35 @@ services:
container_name: gitea
restart: always
networks:
- services-internal-net # Red compartida con el Proxy
- services-internal-net
volumes:
- /volume1/docker/data/gitea:/data # Persistencia de datos, SSH y DB
- /volume1/docker/data/gitea:/data
environment:
# IDs de usuario confirmados para evitar conflictos de permisos en el NAS
- USER_UID=1032
- USER_GID=100
- TZ=Europe/Madrid
# URL externa para evitar el redireccionamiento a localhost:3000
- GITEA__server__ROOT_URL=https://gitea.ognir-server.synology.me/
- GITEA__database__DB_TYPE=sqlite3
labels:
- "traefik.enable=true"
# Enrutamiento mediante Host
# --- Configuración del Router ---
- "traefik.http.routers.gitea.rule=Host(`gitea.ognir-server.synology.me`)"
- "traefik.http.routers.gitea.entrypoints=websecure"
- "traefik.http.routers.gitea.tls=true"
- "traefik.http.routers.gitea.tls.certresolver=letsencrypt"
# Forzamos a Traefik a usar la red interna para evitar errores de gateway
- "traefik.docker.network=services-internal-net"
# --- Vinculación Router-Service ---
# Define el destino explícito para habilitar el router en el Dashboard.
- "traefik.http.routers.gitea.service=gitea"
# --- Configuración del Servicio (Backend) ---
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
# Uso del middleware de seguridad definido en el proveedor de archivos (@file)
- "traefik.http.routers.gitea.middlewares=seguridad-general@file"
- "traefik.docker.network=services-internal-net"
# --- Middlewares ---
# Se actualiza de 'seguridad-general' a 'security-headers' según el inventario dinámico.
- "traefik.http.routers.gitea.middlewares=security-headers@file"
networks:
services-internal-net: