🚀 INFRA_INFINITY

Infraestrutura base centralizada em Docker para roteamento (Traefik), banco de dados (PostgreSQL) e documentação interna.

⚠️ Atenção: Cloudflare (ERR_TOO_MANY_REDIRECTS)

Se você estiver utilizando a nuvem (proxy) do Cloudflare para seus domínios apontados para a infraestrutura, você DEVE acessar o painel do domínio no Cloudflare, ir no menu SSL/TLS e alterar o modo de encriptação de "Flexible" para "Full" ou "Full (strict)".

O modo Flexible causará um erro instantâneo de ERR_TOO_MANY_REDIRECTS (Loop de Redirecionamento Infinito) e a página não vai carregar. Isso acontece porque o Traefik bloqueia o acesso HTTP simples devolvido pelo Cloudflare, exigindo HTTPS de ponta-a-ponta.

🛠️ Como criar um novo banco de dados

Para criar um banco de dados e usuário exclusivos para um novo projeto, utilize o script novo-banco.sh no servidor host, de dentro da pasta infra_infinity:

# Como executar:
./novo-banco.sh nome_do_projeto

# Exemplo prático:
./novo-banco.sh my_awesome_app

O script gerará uma senha blindada automaticamente e criará os acessos. O host que seus projetos utilizarão dentro da rede compartilhada é postgres_infinity na porta 5432.

🔗 Template de Labels do Traefik

Para integrar e expor futuros projetos através da INFRA_INFINITY, o docker-compose.yml do seu projeto DEVE entrar na rede infinity_net e usar as seguintes labels (não mapeie portas diretamente para o host!):

version: '3.8'

services:
  meuprojeto:
    image: minhaimagem:v1
    networks:
      - infinity_net
    # A configuração do Traefik é inteiramente via labels:
    labels:
      - "traefik.enable=true"
      # Altere 'meuprojeto' pelo nome único do seu app e aponte para seu domínio
      - "traefik.http.routers.meuprojeto.rule=Host(`meuprojeto.softwareinfinity.com`)"
      - "traefik.http.routers.meuprojeto.entrypoints=websecure"
      - "traefik.http.routers.meuprojeto.tls.certresolver=myresolver"
      
      # Redirecionamento forçado de HTTP para HTTPS:
      - "traefik.http.routers.meuprojeto-http.rule=Host(`meuprojeto.softwareinfinity.com`)"
      - "traefik.http.routers.meuprojeto-http.entrypoints=web"
      - "traefik.http.routers.meuprojeto-http.middlewares=redirect-to-https"
      
      # Descomente a linha abaixo caso o serviço exponha várias portas internamente:
      # - "traefik.http.services.meuprojeto.loadbalancer.server.port=8080"

networks:
  infinity_net:
    external: true