services: nginx: build: . container_name: nginx-proxy restart: always network_mode: host # Recomendado para performance e Fail2Ban # Se mudar para bridge futuramente, não esquecer: # ports: # - "80:80/tcp" # - "122:122/tcp" # SSH volumes: # Volumes para Configurações (Persistência Interna) # nginx.conf e snippets estáticos são "assados" na imagem (Dockerfile) # Volume Compartilhado e Persistente (Blacklist Dinâmica) - dynamic_conf:/etc/nginx/dynamic # Persistência de Dados e Certificados - ./ssl:/etc/nginx/ssl - ./certbot:/etc/letsencrypt - ./logs:/var/log/nginx:rw # Customização do Shell - ./.bashrc:/root/.bashrc:ro environment: - TZ=America/Sao_Paulo # Sidecar Fail2Ban - Proteção fail2ban: image: lscr.io/linuxserver/fail2ban:latest container_name: fail2ban-sidecar network_mode: host cap_add: - NET_ADMIN - NET_RAW restart: always volumes: - ./logs:/var/log/nginx:ro # Monitora os logs do Nginx - ./fail2ban/data:/config # Configurações do F2B - dynamic_conf:/etc/nginx/dynamic # Escreve na Blacklist Dinâmica do Nginx - /var/run/docker.sock:/var/run/docker.sock # Para reload do Nginx user: root # Necessário para interagir com o socket environment: - PUID=1000 - PGID=1000 - FAIL2BAN_LOGLEVEL=INFO volumes: dynamic_conf: