# ============================================================================== # GITEA - CONFIGURACIÓN DE PRODUCCIÓN (REVISIÓN DE SEGURIDAD) # ============================================================================== # - 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" services: server: image: gitea/gitea:latest container_name: gitea restart: always networks: - services-internal-net volumes: - /volume1/docker/data/gitea:/data environment: - USER_UID=1032 - USER_GID=100 - TZ=Europe/Madrid - GITEA__server__ROOT_URL=https://gitea.ognir-server.synology.me/ - GITEA__server__SSH_PORT=2222 - GITEA__server__SSH_LISTEN_PORT=22 - GITEA__database__DB_TYPE=sqlite3 labels: - "traefik.enable=true" # --- 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" # --- 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" - "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" # --- NUEVO: BLOQUE SSH (SELLADO) --- - "traefik.tcp.routers.gitea-ssh.rule=HostSNI(`*`)" - "traefik.tcp.routers.gitea-ssh.entrypoints=ssh-git" - "traefik.tcp.routers.gitea-ssh.service=gitea-ssh-svc" - "traefik.tcp.routers.gitea-ssh.priority=100" - "traefik.tcp.services.gitea-ssh-svc.loadbalancer.server.port=22" # El Sello de Seguridad (Whitelist) # ESTE ES EL SELLO: Solo estas IPs pueden cruzar el puente # Nota: En TCP puro (sin TLS), Traefik v3 usa el filtrado por IP en el middleware o router - "traefik.tcp.routers.gitea-ssh.middlewares=whitelist-ssh" - "traefik.tcp.middlewares.whitelist-ssh.ipallowlist.sourcerange=100.120.105.35,192.168.178.30-192.168.178.39" networks: services-internal-net: external: true