1

Criei o DeployHub: um gerenciador leve de CI/CD via Webhooks e Nginx VirtualHosts em PHP/Bash

Se você abrir a documentação oficial das grandes ferramentas de CI/CD ou seguir os tutoriais da moda, a receita é sempre a mesma: conecte seu repositório a pipelines complexos, configure runners externos, pague por minutos de execução ou suba clusters com Docker, Coolify, Portainer ou Kubernetes.

Não me entenda mal: essas ferramentas são incríveis para quem tem orçamento corporativo ou capital de risco para queimar. Mas quando olhei para a fatura e para a complexidade exigida só para colocar aplicações simples no ar em uma VPS de 1 GB ou 2 GB de RAM, eu simplesmente me senti pobre.

Não fazia sentido eu gastar recursos preciosos da máquina (ou do bolso) apenas para fazer um deploy.

Por isso decidi criar o DeployHub (Webhook CI/CD Manager): uma ferramenta 100% open source, pensada para quem tem servidor próprio (self-hosted) e quer automação real direto no sistema operacional, sem pagar pedágio.


"Qualquer um faz isso com IA hoje..." — Mas quem realmente botou pra rodar?

Hoje em dia, qualquer pessoa pode abrir um prompt de IA e pedir um script de deploy. Só que da teoria ao terminal existe um abismo:

  • Lidar com permissões reais de Linux (www-data, grupos, permissões 775).
  • Não abrir brechas de segurança como um sudo su descontrolado.
  • Validar criptograficamente o webhook que chega do GitHub com HMAC-SHA256.
  • Fazer a sincronização do Git sem quebrar a pasta em produção (git clean/reset).
  • Validar a sintaxe do Nginx com nginx -t antes de recarregar o daemon para não derrubar os outros sites do servidor.

O código foi construído com PHP 8.2+ (CodeIgniter 4) no backend, scripts em Bash bem amarrados e uma interface limpa com Tailwind CSS.


💡 Como a arquitetura funciona na prática

Em vez de deixar agentes pesados consumindo 400 MB de RAM no servidor, o DeployHub fica dormindo até que um evento real aconteça:

[ Push no GitHub ] 
       │ (POST assinado com HMAC-SHA256)
       ▼
[ DeployHub Webhook ] ──▶ Valida Assinatura ──▶ Dispara Rotina Bash da Stack
                                                      │
         ┌────────────────────────────────────────────┴──────────────────────┐
         ▼                                                                   ▼
[ Deploy Automatizado ]                                            [ Gestão de VirtualHosts ]
• Git sync limpo                                                   • Criação de Server Blocks
• Dependências (Composer/NPM)                                      • Teste prévio com `nginx -t`
• Migrations + Backup do MySQL                                     • Reload seguro do PHP-FPM
• Reload da aplicação (Artisan/PM2)                                • Certificados SSL com Certbot

⚙️ O que ele já faz hoje

  1. GitHub Webhook Seguro: Validação rigorosa via header X-Hub-Signature-256. Se o payload ou o segredo não baterem, o comando nem é enfileirado.
  2. Pipelines sob medida por Stack:
    • Laravel: Ativa modo de manutenção (artisan down), sincroniza Git, roda composer install, compila assets via Vite, roda migrations e reativa a aplicação (artisan up).
    • CodeIgniter 4: Atualização de dependências Composer, migrations de banco e sincronização da branch.
    • Node.js / PM2: Instalação de pacotes via npm e reload gracioso de processos sem downtime com o PM2.
    • Sites Estáticos / Legados: Deploy direto e rápido.
  3. Provisionador de Nginx no Painel: Cria novos domínios, configura sockets PHP-FPM ou reverse proxies e só recarrega o Nginx se o teste nginx -t passar com sucesso.
  4. Logs e Depuração em Tempo Real: Os logs ficam gravados em writable/logs/deploy/ com flags estritas de shell (set -e e set -x), permitindo ver exatamente em qual linha um comando falhou.
  5. Permissões Granulares no Linux: Você não roda a aplicação como root. Apenas comandos específicos recebem autorização via sudoers:
    echo "www-data ALL=(ALL) NOPASSWD: /bin/systemctl reload php8.4-fpm" | sudo tee /etc/sudoers.d/deploy-php-fpm
    

Por que estou compartilhando isso aqui?

Eu poderia ter guardado essa ferramenta apenas para os meus próprios servidores. Mas o ecossistema dev só evolui quando a gente resolve uma dor real nossa e disponibiliza a solução para que outros não precisem passar pelo mesmo perrengue.

Não adianta postar isso em redes sociais corporativas cheias de bots e aparências; o lugar para discutir código, infraestrutura e soluções de verdade é com a comunidade técnica.

O projeto é 100% aberto sob licença MIT. Quem quiser usar em suas VPS, clonar, testar, encontrar bugs ou mandar PRs para adicionar novas stacks (Python, Go, Docker, etc.), será muito bem-vindo:

👉 Repositório: https://github.com/castrohs/webhook-cicd-manager

Gostaria de ouvir de quem também gerencia servidores próprios: como vocês costumam resolver o deploy contínuo em VPS enxutas sem estourar o orçamento?

Carregando publicação patrocinada...