O server-general é o "cérebro" da infraestrutura do projeto. É onde ficam rodando todas as aplicações web (frontend e backend) de forma organizada e segura.
Imagine que você tem uma casa (servidor) e precisa organizar vários quartos (aplicações) para diferentes pessoas (usuários). O server-general é como o "gerente da casa" que:
- Organiza tudo: Coloca cada aplicação no lugar certo
- Protege a casa: Configura segurança (SSL, senhas, etc.)
- Mantém tudo funcionando: Se algo quebra, ele conserta sozinho
- Permite crescimento: Se precisar de mais espaço, ele adiciona facilmente
- Frontend: A parte que o usuário vê (site, painel admin)
- Backend: A parte que processa dados (APIs)
- Proxy: O "porteiro" que direciona o tráfego
- Segurança: Protege tudo com certificados SSL
- Backup: Mantém cópias de segurança
- ✅ Confiável: Se uma parte falha, outras continuam funcionando
- ✅ Seguro: Proteção automática contra ataques
- ✅ Escalável: Fácil de crescer conforme necessário
- ✅ Automático: Gerencia tudo sozinho
- Cria uma rede Docker overlay chamada
traefik-public - Inicia os serviços na ordem: Traefik → Frontend → Backend
- Coordena todo o stack de aplicações
- Inicializa o cluster Docker Swarm
- Necessário executar antes de usar os outros scripts
- Traefik v2.11 como proxy reverso
- SSL automático com Let's Encrypt
- Redirecionamento HTTPS forçado
- Rate limiting e compressão habilitados
- Certificados SSL gerenciados automaticamente
- api-web: API principal da aplicação
- api-admin: API administrativa
- api-upload: API de upload de arquivos
Cada API tem:
- 2 réplicas para alta disponibilidade
- 200MB de limite de memória
- Política de restart automático
- Rollback automático em caso de falha
- nuxt-web: Aplicação principal
- nuxt-admin: Painel administrativo
Cada frontend tem:
- 2 réplicas para alta disponibilidade
- 30MB de limite de memória
- Nginx servindo arquivos estáticos
up.sh: Inicia todo o stackstop.sh: Para todos os serviçosrestart.sh: Reinicia serviços específicosmaintain.sh: Scripts de manutençãohelpers/docker-login.sh: Autenticação no registry
- Alta Disponibilidade: Múltiplas réplicas de cada serviço
- Escalabilidade: Fácil adição de novos nós ao cluster
- Segurança: SSL automático, rate limiting, autenticação
- Monitoramento: Logs centralizados e health checks
- Zero Downtime: Deploy com rolling updates
- Backup: Certificados e configurações persistidos
- Inicializar Docker Swarm:
bash install.sh- Iniciar todo o stack:
bash up.sh- Parar todos os serviços:
bash stop.shEste setup é ideal para aplicações em produção que precisam de alta disponibilidade, escalabilidade e segurança, especialmente para sistemas que lidam com dados sensíveis.
devops/server-general/
├── backend/ # Configurações das APIs
│ ├── stack.yml
│ ├── up.sh
│ └── restart.sh
├── frontend/ # Configurações dos frontends
│ ├── stack.yml
│ ├── up.sh
│ └── restart.sh
├── traefik/ # Proxy reverso e SSL
│ ├── stack.yml
│ ├── up.sh
│ └── restart.sh
├── helpers/ # Scripts auxiliares
│ └── docker-login.sh
├── up.sh # Script principal
├── install.sh # Inicialização do Swarm
├── stop.sh # Parar serviços
└── maintain.sh # Manutenção