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" # - "443:443/tcp" # - "443:443/udp" # HTTP/3 # - "122:122/tcp" # SSH volumes: # Volumes para Configurações (Persistência Interna) - ../sites-ativos/nginx.conf:/etc/nginx/nginx.conf:ro - ../sites-ativos/conf.d:/etc/nginx/conf.d - ../sites-ativos/snippets:/etc/nginx/snippets - ../sites-ativos/modsec/main.conf:/etc/nginx/modsec/main.conf:ro # Persistência de Dados e Certificados - ./ssl:/etc/nginx/ssl - ./certbot:/etc/letsencrypt - ../sites-ativos/logs:/var/log/nginx # Customização do Shell - ./.bashrc:/root/.bashrc:ro environment: - TZ=America/Sao_Paulo fail2ban: image: linuxserver/fail2ban:latest container_name: fail2ban-sidecar network_mode: host cap_add: - NET_ADMIN - NET_RAW restart: always volumes: - ../sites-ativos/logs:/var/log/nginx:ro # Monitora os logs do Nginx - ./fail2ban/data:/config # Configurações do F2B - ../sites-ativos/snippets:/etc/nginx/snippets # Onde ele gera o blacklist.conf - /var/run/docker.sock:/var/run/docker.sock # Para reload do Nginx user: root # Necessário para interagir com o socket environment: - TZ=America/Sao_Paulo - PUID=1000 - PGID=1000 test-backend: image: traefik/whoami container_name: test-backend restart: always # Na network host, ele vai ouvir em uma porta alta para não conflitar command: --port 8080 network_mode: host