Strapi, Directus e Ghost auto-hospedados: guia honesto pra agências e indie hackers
Os três CMS modernos open-source que devs brasileiros mais auto-hospedam. Cada um pra um caso. Tabela comparativa, requisitos reais e quando vale a pena pagar a versão cloud.
Toda agência brasileira que hospeda site de cliente conhece o dilema. Você tem trinta contas ativas, cada uma com um Wordpress no Wordpress.com Business custando entre US$25 e US$45 por mês — quando o cliente não exige Wordpress.com VIP, que sobe pra três dígitos. Some isso, multiplique por trinta, divida pelo dólar do mês, e a margem some. A alternativa mais antiga é alugar uma hospedagem compartilhada barata e empilhar trinta sites num servidor PHP que cai junto na primeira terça-feira do mês — reputação queimada por economia de quinhentos reais.
Há um caminho do meio que ficou viável nos últimos dois anos: substituir o monolito de PHP por um CMS moderno auto-hospedado. Strapi, Directus e Ghost são os três que mais aparecem em projetos de agência e em SaaS indie no Brasil. Cada um resolve um problema diferente, cada um tem armadilha própria, e a documentação oficial de cada um vende o produto em vez de comparar honestamente. Esse post é a comparação que faltava.
A audiência aqui é dupla. De um lado, a agência de cinco a vinte pessoas que entrega site ou plataforma editorial pra cliente — esse perfil precisa decidir entre cloud gerenciado e auto-hospedagem com base em custo por cliente, não em hype técnico. Do outro, o desenvolvedor solo ou indie hacker que está escolhendo a stack do próprio projeto e quer saber qual CMS escala melhor sem virar dor de cabeça aos sábados.
Os números são o esqueleto do post. Custos em dólares foram convertidos pra real usando a faixa atual de R$5,00 a R$5,30 por dólar — onde o intervalo importa, está marcado. Requisitos de RAM e CPU foram coletados das documentações oficiais e validados em VPS de teste rodando workload sintético. Se algum número parecer otimista, é porque é o piso — produção real costuma pedir 30 a 50 por cento mais.
Por que CMS auto-hospedado virou viável em 2026
Cinco fatores combinados destravaram o cenário. Nenhum deles é novo isoladamente; o que mudou é que todos amadureceram ao mesmo tempo.
O custo de máquina virtual caiu pra perto do absurdo. Hetzner, DigitalOcean, OVH e até provedores nacionais como Magalu Cloud e UOL Host vendem VPS de 2 vCPU e 4 GB de RAM por menos de R$60 por mês. Cinco anos atrás, a mesma capacidade custava o triplo. Pra agência que historicamente terceirizava infra pra revendedores de hospedagem, agora faz mais sentido alugar uma máquina dedicada e empilhar workloads ali.
Painéis de orquestração self-hosted cobrem o que faltava em ops. Coolify, Dokploy, CapRover e o próprio HeroCtl entregam o que era exclusividade de fornecedores caros: deploy a partir de um arquivo de configuração, certificado TLS automático, rollback de uma versão pra outra, métricas básicas. A barreira pra rodar um Strapi em produção caiu de "uma semana de provisionamento manual" pra "cinco minutos depois do servidor estar de pé".
Os CMS modernos publicam imagens Docker oficiais e maduras. Faz três anos que você precisava montar Dockerfile próprio pra Strapi em produção; hoje o time oficial publica imagem testada com receita de docker-compose de referência. Mesmo pra Ghost, que historicamente tinha empacotamento próprio, a imagem ghost:5-alpine é a forma recomendada pelo time oficial.
As comunidades brasileiras pararam de ser invisíveis. O canal Strapi BR no Discord tem milhares de membros ativos, o fórum oficial do Directus responde em inglês mas com alta participação de devs brasileiros, e a documentação do Ghost foi traduzida em peças por contribuidores locais. Não é a comunidade WordPress (que é gigante e cheia de tutorial em PT-BR), mas é o suficiente pra desbloquear a maioria dos problemas sem ter que decifrar inglês técnico no quarto erro consecutivo.
Wordpress.com aumentou preço de forma agressiva. Quem acompanhou o Heroku virar pago em 2022 reconhece o padrão: serviço gratuito ou barato vira premium, plano antigo é descontinuado, conta legada migra ou paga mais. Wordpress.com fez o equivalente nos últimos dois anos — o tier "Personal" subiu, o tier "Premium" subiu mais, e features que antes vinham no plano médio agora exigem o tier Business ou superior. Cada aumento é um empurrão a mais em direção à auto-hospedagem.
Strapi — o CMS API-first
Strapi é o que mais se parece com "Wordpress moderno pra dev". Você define o tipo de conteúdo na interface administrativa (post, autor, categoria, produto, qualquer coisa), e o Strapi gera automaticamente uma API REST e uma API GraphQL pra ler e escrever esse conteúdo. Não há frontend nele — é puro backend headless. O frontend é responsabilidade sua, geralmente um Next.js, Nuxt ou Astro consumindo a API.
A stack é Node.js no backend, banco Postgres ou MySQL pra persistência, e um painel administrativo em React que vem embutido. O painel é o ponto forte do produto: editor não-técnico consegue criar conteúdo sem treinamento, organizar mídia, agendar publicação, gerenciar usuários. Pra agência, isso é venda fácil — o cliente entra no admin e reconhece o paradigma "Wordpress mas mais limpo".
O requisito mínimo realístico em produção é 2 vCPU, 2 GB de RAM e 10 GB de armazenamento. A documentação oficial fala em 1 GB, mas com qualquer plugin ativo e tráfego além de teste local, a memória estoura. Em VPS de R$50 a R$80 por mês você roda confortável; em VPS de R$30 (1 GB de RAM) o processo morre toda vez que um upload de mídia maior acontece.
Os pontos fortes são consistentes. Plugin ecosystem rico — autenticação social, internacionalização, integração com S3 pra mídia, gerador de sitemap, tudo já existe. GraphQL nativo sem configuração extra, o que fecha bem com frontend moderno. Hooks customizados (lifecycle hooks, middlewares, policies) resolvem regra de negócio sem precisar de microserviço separado. A interface administrativa é genuinamente boa — comparada com Drupal ou Wordpress sem plugin de admin, é outro nível.
Os pontos fracos também são consistentes, e cabe falar em voz alta. A transição entre versões majores costuma quebrar — a migração de v4 pra v5 foi notória, com mudanças de API incompatíveis e necessidade de reescrever plugins customizados. Se você adotar Strapi pra um projeto de longo prazo, reserve uma janela de upgrade a cada doze ou dezoito meses como custo recorrente, não como surpresa. Migrações de schema também exigem disciplina — adicionar campo é fácil, renomear ou tipar diferente sem perder dado pede script de migração escrito à mão. E algumas features que aparecem no marketing só rodam no Strapi Cloud (a versão paga deles), como preview ao vivo entre ambientes — auto-hospedando você não tem isso pronto.
Quando faz sentido escolher Strapi: SaaS que precisa de blog próprio e knowledge base no mesmo CMS, agência que entrega pra cliente acostumado com "Wordpress mas sem PHP", projeto headless commerce onde os SKUs são modelados como tipo de conteúdo, e qualquer cenário em que ter GraphQL pronto economiza dias de trabalho.
Directus — o CMS pra dados existentes
Directus é uma criatura diferente. Em vez de te forçar a criar tipo de conteúdo do zero dentro dele, ele coloca uma interface administrativa em cima de qualquer banco que você já tenha. Você apontaria pra um Postgres legado com vinte tabelas existentes, e o Directus mostra cada tabela como uma coleção editável, respeitando os tipos de coluna, as chaves estrangeiras e até as constraints. É a ferramenta que mais se aproxima de "admin universal pra qualquer banco SQL".
A stack é Node.js no backend, suporte oficial a Postgres, MySQL, MariaDB, SQLite, Oracle e SQL Server, e um painel administrativo em Vue. O suporte a banco é deliberadamente amplo — o produto foi desenhado pra adaptar, não pra impor schema próprio. Você pode usar Directus contra um banco zerado e deixar ele criar as tabelas via interface, ou apontar pra um banco com dez anos de histórico e esperar que tudo apareça organizado no admin.
O requisito mínimo é mais leve que Strapi. 1 vCPU, 1 GB de RAM e 5 GB de armazenamento rodam confortável pra workload pequeno e médio. Em VPS de R$30 a R$50 por mês você consegue subir um Directus servindo dezenas de coleções com tráfego moderado. Pra projetos menores, SQLite como banco é suficiente — cabe num único arquivo, simplifica backup, evita ter um Postgres separado pra gerenciar.
Os pontos fortes saem do desenho. A capacidade de adotar banco existente sem reformular schema é genuinamente única — nenhum CMS popular faz isso tão bem. Real-time updates via WebSockets vêm prontos, o que abre porta pra dashboards e ferramentas internas que reagem a mudança em tempo real sem precisar de uma camada adicional. Permissões granulares por coleção, por campo e até por linha (com base em condição) cobrem cenários de multi-tenancy sem hack. A documentação é decente, mantida ativa, e o time responde dúvida em fórum em prazos razoáveis.
Os pontos fracos: a curva de aprendizado pra customizações avançadas (extensions, hooks customizados, panels de dashboard) é mais íngreme que Strapi. O ecossistema de plugins é menor — onde Strapi tem dez plugins de SEO, Directus tem dois ou três. E pra editor não-técnico, a interface é menos amigável que a do Strapi — Directus prioriza poder e flexibilidade, não onboarding suave.
Quando faz sentido escolher Directus: agência que pegou cliente com banco MySQL legado de dez anos e precisa entregar painel administrativo sem refazer schema, ferramenta interna onde a modelagem é dirigida pelos dados (CRM custom, gestão de estoque, plataforma de operações), aplicação cuja entidade central é "dado relacional", não "documento editorial". Também é a escolha óbvia quando o cliente já tem Postgres ou MySQL rodando outro sistema e quer aproveitar.
Ghost — o CMS de publicação
Ghost é o oposto da neutralidade. Não pretende ser CMS universal — é blog e plataforma de newsletter, especializado em conteúdo editorial. Quem tenta usar Ghost pra produto de e-commerce ou app SaaS está usando ferramenta errada. Quem usa pra blog corporativo, site de mídia, podcast com membership ou newsletter paga, encontra um produto polido e focado.
A stack é Node.js no backend, banco MySQL ou SQLite (Postgres não é oficialmente suportado), e frontend em Handlebars com tema. O frontend é parte do pacote — o Ghost serve as páginas direto, com tema instalado via upload. Há modo headless (você usa só a Content API e monta o frontend separado), mas o caso comum é Ghost servindo tudo.
O requisito mínimo é o mais leve dos três. 1 vCPU, 1 GB de RAM e 5 GB de armazenamento rodam Ghost com folga pra blog de tráfego médio. Em VPS de R$30 dá pra rodar — com o cuidado de configurar SMTP externo pra newsletter (mandar email a partir do próprio servidor é receita pra cair no spam).
Os pontos fortes são afiados. SEO out-of-the-box é o melhor entre os três — meta tags, sitemap, schema.org, AMP (quando faz sentido), tudo configurado por padrão. Sistema de membership e paywall vem nativo: você cria níveis de assinatura, cobra via Stripe, libera conteúdo pago automaticamente. O editor markdown é genuinamente bom, com cards (chamadas, callouts, código) que cobrem o caso comum sem virar editor de Word. Os temas focam em legibilidade e tipografia editorial — nada da estética genérica de tema Wordpress.
Os pontos fracos saem da especialização. Plugin ecosystem é fechado por design — apps de integração existem no Ghost.org como produto pago, e instalar app customizado é mais difícil que em Strapi ou Directus. Não-blog é território hostil — tentar modelar produto, autor com perfil rico, taxonomia complexa esbarra em decisões de design que priorizam o caso "post + autor + tag". E suporte oficial a Postgres não existe — se você tem padrão de empresa em Postgres, vai operar MySQL paralelo só pro Ghost.
Quando faz sentido escolher Ghost: blog corporativo com paywall ou conteúdo premium, site de mídia ou jornalismo independente, podcast que quer monetizar via membership, content marketing levado a sério com editor que vai usar o admin todo dia. Pra qualquer coisa fora desse escopo, é forçar a barra.
Tabela comparativa
Os três CMS modernos lado a lado com Wordpress (a referência herdada) e Payload (concorrente recente que vale mencionar):
| Critério | Strapi | Directus | Ghost | Wordpress | Payload |
|---|---|---|---|---|---|
| RAM mínima realística | 2 GB | 1 GB | 1 GB | 1 GB | 2 GB |
| Tempo até primeiro deploy | 30–60 min | 30–60 min | 15–30 min | 10–20 min | 30–60 min |
| Modo headless | Sim, default | Sim, default | Opcional | Opcional (REST + GraphQL) | Sim, default |
| GraphQL nativo | Sim | Sim | Não (REST) | Plugin externo | Sim |
| Multi-tenancy fácil | Médio | Bom | Difícil | Plugin externo | Bom |
| Membership / paywall | Plugin | Plugin | Nativo | Plugin pago | Customizado |
| Plugin ecosystem | Rico | Médio | Fraco | Riquíssimo | Crescendo |
| Custo Cloud (USD/mês inicial) | 15 | 25 | 11 | 25 | 35 |
| Documentação em PT-BR | Parcial | Mínima | Mínima | Riquíssima | Inglês |
| Faixa ideal de uso | API + admin | Admin sobre dado | Conteúdo editorial | Site genérico | App custom Node.js |
A coluna "tempo até primeiro deploy" assume servidor já provisionado e Docker instalado. A coluna "custo Cloud" é o tier de entrada do produto — escala de preço sobe conforme limites de tráfego, membros ou seats no admin. A coluna "documentação em PT-BR" reflete o que existe oficial mais o que a comunidade brasileira mantém ativa; nenhum dos três tem manual completo traduzido, mas Strapi tem o melhor caminho de aprendizado em português.
Setup auto-hospedado em alto nível
A receita não é copy-paste — é o roteiro mental do que vai ser preciso. Detalhes específicos mudam por VPS e por escolha de orquestrador.
Pra Strapi, o setup minimamente sério é docker-compose com três serviços: Strapi, Postgres e Redis (Redis é opcional, mas acelera o admin notavelmente quando há mais de cinco editores). Volume nomeado pra /srv/strapi/uploads (mídia) e pra dados do Postgres. Painel sobe na porta 1337 internamente, exposto via subdomínio com TLS pelo roteador do orquestrador. Variáveis de ambiente críticas: APP_KEYS, JWT_SECRET, ADMIN_JWT_SECRET, DATABASE_*. Esquecer qualquer uma dessas faz o admin não subir ou perder sessão a cada restart.
Pra Directus, o setup é parecido mas mais leve. Docker-compose com Directus e banco (SQLite cabe num volume só, Postgres se a expectativa é multi-usuário com escrita concorrente). Sem Redis necessário pra começar. Painel na porta 8055. Variáveis críticas: KEY, SECRET, ADMIN_EMAIL, ADMIN_PASSWORD, DB_*. Ponto de atenção: se você apontar Directus pra banco existente com schema rico, abra o admin com calma e configure as permissões antes de dar acesso pra qualquer outro usuário — por padrão o role admin vê tudo e o role public vê nada, o que é razoável; mas se você criar role intermediário sem cuidado, expõe coleções inteiras sem querer.
Pra Ghost, docker-compose com Ghost e MySQL. SQLite serve pra desenvolvimento mas é desencorajado em produção pelo time oficial. Volume nomeado pra /var/lib/ghost/content (temas, mídia, configs) e pra MySQL. Configurar SMTP externo é etapa obrigatória — Mailgun, Postmark e Resend têm tier gratuito ou barato, qualquer um deles serve. Sem SMTP, recuperação de senha não funciona, newsletter não envia, signup de membro fica quebrado. Variáveis críticas: url (domínio público com https), database__connection__*, mail__*. Erro comum: configurar url como http://localhost em produção e descobrir só depois que todos os links de email saíram quebrados.
Custos comparados
A planilha honesta de cloud gerenciado contra auto-hospedado, em moeda corrente (R$5,00 por dólar como referência):
Strapi Cloud começa em US$15 por mês no tier Developer (R$75), sobe pra US$99 por mês no tier Pro (R$495) com features como ambientes separados de staging e produção, mais seats no admin e suporte. Auto-hospedado em VPS de R$50 a R$80 por mês roda Strapi com folga pra workload pequeno e médio. Diferença mensal: de R$25 a R$445 dependendo do tier que você compararia. Pra agência com cinco clientes em Strapi, isso se traduz em economia anual entre R$1.500 e R$26.700.
Directus Cloud começa em US$25 por mês no tier Standard (R$125), sobe pra US$99 por mês no tier Pro (R$495) e tem tier Enterprise com preço sob consulta. Auto-hospedado em VPS de R$50 por mês cobre o caso comum. Diferença similar à do Strapi — entre R$75 e R$445 por mês por instância.
Ghost Pro começa em US$11 por mês no tier Starter (R$55) com até 500 membros e um único staff seat, escala pra US$31 (R$155) com 1.000 membros, e atinge US$249 por mês (R$1.245) no tier que suporta 50 mil membros. Auto-hospedado em VPS de R$50 a R$80 por mês não tem teto de membros — você pode ter 50 mil ou 500 mil sem mudar o servidor (a única coisa que muda é o volume de email transacional, que escala separado). Pra publicação que cresce em audiência, a economia anual auto-hospedando Ghost passa de R$10 mil rapidamente.
Wordpress.com Business custa US$25 por mês (R$125), VIP fica em três dígitos. Comparar com auto-hospedagem de Wordpress numa VPS de R$50 é meh — Wordpress é pesado por natureza, exige mais cuidado de segurança e backup, e o ecossistema de plugin é fonte recorrente de incidente de produção. Pra projeto novo em 2026, é mais sensato escolher entre Strapi, Directus ou Ghost do que herdar a complexidade do PHP.
Estratégia pra agência hospedando trinta clientes
Três opções com tradeoffs claros.
Opção A — uma VPS por cliente. Isolamento total: se um cliente derruba o servidor dele, os outros vinte e nove não sentem. Custo direto: 30 VPS × R$30 a R$50 = R$900 a R$1.500 por mês só de infra. Custo operacional: trinta vezes tudo — trinta atualizações de SO, trinta certificados pra monitorar, trinta backups pra orquestrar. Pra agência com mais de dez clientes, a sobrecarga operacional come a margem que a opção tinha em primeiro lugar.
Opção B — um cluster compartilhado rodando trinta instâncias dos CMS. Quatro servidores totalizando 5 vCPU e 10 GB de RAM (a configuração que rodamos em produção aqui no HeroCtl) hospedam confortavelmente trinta instâncias de Strapi/Directus/Ghost com tráfego típico de cliente PME. Custo de infra: cerca de R$300 a R$400 por mês pelo cluster inteiro. Custo operacional: uma estratégia única de monitoramento, uma estratégia única de backup, um lugar pra olhar quando algo pesa o sistema. Margem da agência aumenta porque o ponto onde você cobra é o mesmo e o ponto onde você gasta caiu.
Opção C — cluster compartilhado com cada cliente em subdomínio próprio. Variação da opção B, mas com roteamento explícito por subdomínio (cliente1.suaagencia.com, cliente2.suaagencia.com) ou domínio próprio do cliente (loja-do-cliente.com.br). O roteador integrado do orquestrador resolve a parte de TLS automático e direcionamento de tráfego. Multi-tenancy fica no nível de DNS + container, não no nível do CMS — cada cliente tem instância isolada de Strapi/Directus/Ghost com banco próprio. Pra agência que vende "site exclusivo" como diferencial, é a forma de manter a promessa sem multiplicar VPS.
A opção B com elementos da C é o que faz mais sentido pra agência típica. Cluster compartilhado, instâncias isoladas, subdomínio ou domínio próprio por cliente, backup centralizado.
Backup e migração entre CMS
Migração entre CMS é território onde fornecedores omitem detalhe deliberadamente. A verdade prática:
Strapi pra Strapi (entre versões ou entre instâncias) tem export e import via plugin oficial, gera arquivo JSON com schema e dados. Funciona bem pra migração entre staging e produção; entre versões majores, pode pedir ajuste manual no JSON antes do import.
Strapi pra Directus não tem ferramenta pronta. Schema é diferente o suficiente pra exigir mapping manual — script em Node lendo a API REST do Strapi e escrevendo na API REST do Directus, item por item. Pra base de mil ou dez mil registros é trabalho de uma tarde; pra base maior, vale paralelizar.
Wordpress pra Strapi tem ferramentas third-party (wp2strapi e variantes), todas parciais. O que migra bem é post + autor + categoria + mídia. O que não migra bem é qualquer custom post type complexo, plugin de SEO com metadados próprios, ou estrutura de menu. Reserve um a três dias por site na migração e revise mídia manualmente.
Ghost pra Ghost tem export e import nativo no admin — gera JSON com posts, autores, configurações de site, membros. Funciona limpo entre instâncias e entre versões.
Backup do banco é a etapa não-negociável. Pg_dump (Postgres) ou mysqldump (MySQL) diário, copiado pra storage objeto fora do servidor (S3, Backblaze B2, Wasabi). Sem isso, qualquer incidente — disco corrompido, rm acidental, hack — vira evento de extinção pra dados do cliente. Custo de S3 com versionamento pra um cluster pequeno fica abaixo de R$50 por mês mesmo guardando trinta dias de retenção.
Cinco erros que matam CMS auto-hospedado
Não atualizar. CMS desatualizado é vulnerabilidade aberta. Cron de update mensal é o piso — calendário fixo, janela de manutenção combinada com cliente, teste de smoke depois. Não fazer isso significa que mais cedo ou mais tarde alguém abre o admin do cliente sem credencial.
Senha admin fraca. Admin/admin em produção continua acontecendo em 2026. Senha forte gerada por gerenciador de senha, autenticação de dois fatores quando o CMS suporta, role separado pra editor (o cliente não recebe senha de admin total).
Sem backup automático. Cliente vê seis meses de conteúdo sumir e a relação acaba. Backup do banco diário, retido por trinta dias mínimo, copiado pra storage fora do servidor que hospeda o CMS. Testar restore pelo menos uma vez por trimestre — backup que nunca foi restaurado é teoria, não backup.
Storage de mídia local sem CDN. Imagens grandes em VPS pequena derrubam o servidor quando uma página viraliza. Configurar storage objeto (S3, R2, Spaces) pra mídia desde o dia um, mesmo que o tráfego seja baixo no começo. Strapi e Directus têm provedores oficiais pra isso; Ghost suporta via configuração.
Email transacional não testado. Strapi e Directus precisam de SMTP configurado pra password reset funcionar. Ghost depende de SMTP pra newsletter inteira. Configurar e testar no dia do deploy — mandar email de teste pra você mesmo, conferir caixa de entrada e pasta de spam, ajustar SPF/DKIM se cair em spam. Sem isso, o cliente descobre que o site quebrou no dia em que precisar trocar a própria senha.
HeroCtl como infra de agência
A última parte do guia é honesta sobre como o HeroCtl encaixa nesse cenário. Não pretendemos ser a única opção — Coolify, Dokploy e CapRover cobrem casos parecidos com tradeoffs diferentes. O que o HeroCtl traz pra agência hospedando CMS é:
Templates de job pra subir CMS novo em segundos. Em vez de escrever docker-compose do zero pra cada cliente, você guarda um arquivo de configuração de cinquenta linhas com Strapi + Postgres já parametrizado, troca o domínio e o nome do banco, e submete. Cliente novo entra em produção em menos tempo que demora pra fazer café.
Roteamento por subdomínio com TLS automático. Cada cliente em subdomínio próprio (ou domínio próprio com DNS apontando) recebe certificado Let's Encrypt sem intervenção. Renovação acontece sozinha. Você não toca em arquivo de configuração de servidor web — o roteador integrado lida com isso.
Métricas por job. Qual cliente está pesando o cluster fica visível no painel — CPU, memória, requisições por segundo, latência. Quando um cliente passa do volume contratado, você vê antes de o cluster sentir.
Backup gerenciado (no plano Business) cobre todos os clientes de uma vez. Em vez de configurar trinta scripts de pg_dump separados, é uma política central com retenção configurável.
Auditoria detalhada (no plano Business) cobre exigência de LGPD pra cliente que precisa demonstrar quem acessou o quê e quando. Pra agência atendendo cliente em saúde, finanças ou educação, deixa de ser luxo.
A linha entre o que vem no plano Community (gratuito, sem limite de servidores ou jobs) e o que está no Business é desenhada pelo tipo de exigência que aparece quando a agência cresce. Pra cinco ou dez clientes, Community resolve. Pra trinta clientes onde dois deles exigem SSO e um exige relatório de auditoria, o Business paga ele mesmo no primeiro mês.
Perguntas que a gente recebe
Wordpress vs esses três — quando ainda Wordpress ganha? Quando o cliente tem equipe interna acostumada com Wordpress, quando o site depende de plugin específico que só existe em Wordpress (alguns plugins de e-commerce hyper-localizados, alguns LMS), e quando o orçamento é tão pequeno que treinar editor em CMS novo custa mais do que a economia de hospedagem. Pra projeto novo em 2026 sem essas restrições, raramente.
Posso rodar Strapi em VPS de R$30? Tecnicamente sim, na prática é fonte de incidente. 1 GB de RAM é o piso e qualquer pico de tráfego ou upload de mídia maior derruba o processo. Suba pra R$50 a R$80 — a diferença é menor que um almoço, e a estabilidade vira outra coisa.
Ghost e Strapi no mesmo servidor, ok? Em VPS pequena (4 GB de RAM ou menos) é apertado e sujeito a contenção. Em servidor de 8 GB ou mais com docker-compose separando recursos, funciona. Em cluster com orquestrador, é o caso comum — os dois rodam em hosts diferentes ou compartilham com isolamento de processo.
Como migro Strapi v4 pra v5 sem virar a noite? Documente o esquema atual antes de mexer. Suba ambiente de staging com v5 e o mesmo banco copiado. Rode o migrador oficial e verifique tudo no admin. Reescreva plugins customizados antes de promover pra produção — eles não migram automaticamente. Reserve dois a quatro dias úteis pra um Strapi médio. Sem ambiente de staging, não vire o jogo direto em produção.
Email transacional pra Ghost newsletter — qual provedor mais barato? Mailgun tem tier gratuito até cinco mil emails por mês, depois custa por volume. Resend tem tier gratuito até três mil. Postmark é pago desde o primeiro email mas é o mais confiável em entrega. Pra newsletter pequena (até dois mil membros), Mailgun ou Resend gratuito resolve. Acima disso, Postmark vale o custo pela taxa de entrega.
Tem case de agência brasileira escalando assim? Tem várias, mas as que falam em público são minoria. O padrão típico é agência com dez a trinta clientes, cluster de três ou quatro servidores em provedor cloud, instâncias separadas por cliente, backup centralizado. Quando a agência publica número, costuma falar em economia de cinquenta a setenta por cento sobre o equivalente em hospedagem gerenciada — o que bate com a aritmética acima.
Mídia de imagens grandes — onde guardar? Storage objeto fora do servidor que hospeda o CMS. AWS S3, Cloudflare R2, Backblaze B2 e DigitalOcean Spaces cobrem o caso. R2 e B2 têm preço melhor que S3 puro pra workload de leitura intensiva. Configure desde o dia um, mesmo com tráfego baixo — migrar mídia depois é dor de cabeça que não compensa.
Fechamento
Os três CMS modernos cobrem três casos distintos. Strapi pra quem quer admin polido com API headless e plugin pra tudo. Directus pra quem tem dado e precisa de admin sobre ele. Ghost pra quem publica conteúdo editorial e quer paywall sem hack.
Auto-hospedar virou viável porque máquina ficou barata, orquestrador self-hosted ficou bom, e os três produtos amadureceram empacotamento pra Docker. Pra agência com mais de cinco clientes, a economia de cloud pra auto-hospedagem em cluster compartilhado paga uma pessoa do time em poucos meses.
Se você quer testar o caminho do orquestrador sobre cluster próprio:
curl -sSL https://get.heroctl.com/install.sh | sh
Posts relacionados que aprofundam pontos específicos: Heroku auto-hospedado em 2026 cobre o panorama mais amplo de "fugir do PaaS caro", e Quanto custa hospedar SaaS brasileiro em 2026 traz a planilha completa de infra pra produto digital saindo do zero.
Sem cerimônia.