O problema de sempre

Antes de CapRover, cada serviço que eu queria colocar no ar era uma cerimônia diferente.

Alguns eram containers Docker que eu subia na mão, com comandos decorados ou salvos num bloco de notas. Outros eram aplicações Laravel que eu precisava configurar manualmente — nginx, PHP, banco, SSL, domínio. Cada novo serviço exigia um ritual de configuração que consumia tempo e, pior, era diferente para cada tipo de aplicação.

Para quem vem do ecossistema SaaS, isso é um choque. No Heroku, você faz git push e pronto. A plataforma cuida do SSL, do domínio, do build, do deploy. Mas Heroku custa caro e não te dá controle sobre onde os dados estão rodando. E, como já comentei no artigo sobre Gitea, reduzir dependência de provedores externos é um objetivo central da minha infraestrutura.

Foi aí que o CapRover entrou em cena.

O que é CapRover?

CapRover é um PaaS (Platform as a Service) open source. Isso significa que ele oferece a mesma experiência de deploy simplificada do Heroku, mas rodando no seu próprio servidor.

Você instala em um VPS, conecta seus domínios, e a partir daí cada novo serviço é questão de minutos: apontar o repositório ou imagem Docker, configurar variáveis de ambiente, e o CapRover cuida do SSL (via Let’s Encrypt), do proxy reverso, do health check, e do deploy.

A stack por trás dele é simples e elegante:

  • Docker para isolamento e execução dos containers
  • Nginx como proxy reverso e balanceador
  • Node.js para o dashboard web e CLI
  • Let’s Encrypt para certificados SSL automáticos

Tudo isso encapsulado em uma interface web limpa e uma CLI que funciona com poucos comandos.

Por que CapRover e não outra coisa?

Antes de CapRover, eu considerei (e em alguns casos testei) algumas alternativas:

Docker Compose puro

Funciona bem para projetos individuais, mas quando você tem múltiplos serviços — cada um com seu próprio domínio, SSL, variáveis de ambiente, e necessidades de deploy — a complexidade multiplica. Você acaba mantendo dezenas de arquivos docker-compose.yml e scripts de deploy manuais.

Kubernetes (K3s, MicroK8s)

É a solução enterprise para orquestração de containers. Mas é pesada demais para um time pequeno. A curva de aprendizado é íngreme, e a manutenção do cluster consome tempo que poderia ser gasto construindo produto.

Coolify

Um concorrente direto do CapRover. Tem uma abordagem similar e uma comunidade crescendo rápido. Na época que fiz a escolha, o CapRover estava mais maduro e com mais integrações prontas.

Heroku / Railway / Render

Serviços gerenciados que funcionam muito bem — até você precisar de algo fora do padrão ou querer controlar os custos. Para projetos pessoais e de pequena escala, o custo mensal de vários serviços no Heroku rapidamente supera o de um VPS onde roda CapRover com dezenas de containers.

Como uso na prática

O CapRover está instalado no meu servidor principal e gerencia o deploy de múltiplos serviços:

  • Este blog — uma imagem Docker com nginx servindo HTML estático (Quartz)
  • Gitea — versionamento de código
  • DashBot — painel multi-inquilino em Laravel
  • Assistentia — plataforma de agentes de IA no WhatsApp
  • E outros serviços que vão sendo adicionados conforme a necessidade

O fluxo de deploy é praticamente o mesmo para todos:

  1. Build da imagem Docker localmente
  2. Envio da imagem para o servidor
  3. No CapRover, um novo deploy aponta para a imagem atualizada
  4. O CapRover troca o container sem downtime, renova SSL se necessário, e pronto

Em alguns casos, uso o deploy via CLI do CapRover, que é ainda mais direto:

caprover deploy --app-name meu-app --tar-file dist.tar.gz

Mas admito que na maioria das vezes ainda uso o fluxo manual via SSH + Docker, porque me dá mais visibilidade do que está acontecendo. Old habits die hard.

O que CapRover resolve de verdade

SSL automático

Essa é a maior conveniência. Cada novo serviço precisa de um certificado SSL. No CapRover, você configura o domínio uma vez, e ele faz a integração com Let’s Encrypt automaticamente. Certificado emitido, renovação programada, zero preocupação.

Proxy reverso embutido

Cada container precisa de um proxy reverso na frente para rotear requisições do domínio certo para o container certo. O CapRover usa nginx para isso, e você não precisa configurar nada — ele gera as configurações automaticamente com base nos domínios que você cadastrou.

Health checks e restart automático

Se um container morre, o CapRover reinicia. Se o serviço não responde, ele faz rollback. Não é tão sofisticado quanto Kubernetes, mas para 99% dos casos é mais do que suficiente.

Deploy sem downtime

Quando você faz deploy de uma nova versão, o CapRover sobe o novo container, espera o health check passar, e só então redireciona o tráfego. Se o health check falha, ele mantém a versão anterior no ar.

E a parte chata?

CapRover não é perfeito. Alguns pontos que você precisa saber:

  • Atualizações: De vez em quando você precisa atualizar o CapRover via CLI. Geralmente é simples (caprover update), mas às vezes quebra compatibilidade com plugins.
  • Plugins: O ecossistema de plugins é pequeno comparado com Heroku. Você vai acabar fazendo muita coisa na mão com Docker.
  • CLI vs Web: A interface web é boa para configurar serviços novos, mas para deploys frequentes a CLI é mais prática.
  • Backup: Não tem backup embutido dos volumes dos containers. Você precisa gerenciar os backups dos dados por conta própria (o que você já deveria fazer de qualquer forma).
  • Logs: O sistema de logs é básico. Para aplicações em produção, você vai querer algo como Loki + Grafana ou um agregador de logs separado.

CapRover e a filosofia de auto-hospedagem

CapRover é um exemplo perfeito do tipo de ferramenta que me fez migrar cada vez mais serviços para minha própria infraestrutura.

Antes, cada novo projeto significava: “vou subir em um VPS separado, configurar nginx, instalar certbot, configurar PostgreSQL, fazer deploy na mão.” Ou então: “vou jogar no Heroku e pagar uma fortuna no mês que tiver mais tráfego.”

Hoje, um novo serviço significa: criar uma nova app no CapRover, configurar domínio, fazer deploy. E o custo é o mesmo VPS que já estou pagando.

Não é tão plug-and-play quanto Heroku nos primeiros 5 minutos. Mas depois que você entende o fluxo, a produtividade é comparável — e o controle é total.

Para quem está começando a jornada de auto-hospedagem e quer uma ferramenta que simplifique o deploy sem esconder a complexidade, CapRover é um ótimo ponto de partida. Ele não abstrai o Docker — ele só torna a experiência menos dolorosa. E pra mim, esse é o equilíbrio certo: simples o suficiente para ser produtivo, flexível o suficiente para não te prender.