Publicação · sem KYC
Hospede Ghost em um VPS offshore
O Ghost é uma plataforma de publicação rápida e moderna que você pode hospedar por conta própria em minutos em uma VPS offshore, mantendo seus textos, assinantes e pagamentos fora das nuvens de terceiros.
O que é
O Ghost é um CMS de código aberto em Node.js criado para blogs, newsletters e sites de assinatura, com inscrições por e-mail nativas, planos pagos e um editor Markdown limpo. Ele é distribuído como uma imagem Docker oficial com suporte do MySQL 8, servindo seu site em sua própria porta atrás de um proxy reverso.
Por que hospedar offshore
Rodar o Ghost em uma VPS sem KYC e paga com cripto significa que sua publicação não fica presa a uma conta que possa ser vinculada à sua identidade, banida ou entregue mediante solicitação. Com localizações offshore voltadas à privacidade e banda larga ilimitada, você mantém controle total sobre seu conteúdo, sua lista de assinantes e seus repasses do Stripe, sem que um provedor de hospedagem controle suas palavras.
A implantação
Uma configuração de referência funcional
Copie isto para uma instância nova do ChainVPS. Substitua os placeholders e depois coloque no ar.
services:
ghost:
image: ghost:5-alpine
restart: always
ports:
# Bind to localhost only; terminate TLS in a reverse proxy (nginx/Caddy)
- "127.0.0.1:2368:2368"
environment:
url: https://blog.example.com
NODE_ENV: production
database__client: mysql
database__connection__host: db
database__connection__port: 3306
database__connection__user: ghost
database__connection__password: CHANGE_ME_DB_PASSWORD
database__connection__database: ghostdb
# Optional outbound SMTP for member/newsletter email:
# mail__transport: SMTP
# mail__options__host: smtp.example.com
# mail__options__port: 587
# mail__options__auth__user: [email protected]
# mail__options__auth__pass: CHANGE_ME_SMTP
volumes:
- ghost-content:/var/lib/ghost/content
depends_on:
- db
db:
image: mysql:8.0
restart: always
command: --default-authentication-plugin=caching_sha2_password
environment:
MYSQL_ROOT_PASSWORD: CHANGE_ME_ROOT_PASSWORD
MYSQL_DATABASE: ghostdb
MYSQL_USER: ghost
MYSQL_PASSWORD: CHANGE_ME_DB_PASSWORD
volumes:
- ghost-db:/var/lib/mysql
volumes:
ghost-content:
ghost-db:
# Deploy:
# apt-get update && apt-get install -y docker.io docker-compose-v2
# docker compose up -d
# Then point a reverse proxy (Caddy/nginx) at 127.0.0.1:2368 to add HTTPS,
# and set `url:` to your real https:// domain before first boot.
Firewall
Portas a abrir
| Porta | Protocolo | Finalidade |
|---|---|---|
| 2368 | TCP | Porta HTTP do aplicativo Ghost - mantenha vinculada a 127.0.0.1 e use proxy reverso, nunca exponha publicamente |
| 443 | TCP | HTTPS para o público através do seu proxy reverso (Caddy/nginx) |
| 80 | TCP | HTTP para emissão de certificados ACME/Let's Encrypt e redirecionamento para a 443 |
| 3306 | TCP | MySQL - somente rede interna do Docker, nunca publique para o host |
Dimensionamento adequado
Qual plano você precisa
VPS Nano/Small (1-2 vCPU, 2 GB RAM)
Blog pessoal ou uma newsletter pequena. O Ghost + MySQL cabem confortavelmente; adicione 1 GB de swap como margem de segurança.
VPS Pro (2-4 vCPU, 4-8 GB RAM)
Publicação ativa com assinaturas pagas, posts com muitas imagens e envios de e-mail regulares. Margem para o cache do MySQL e picos de tráfego.
Dedicated (dedicated cores, 16 GB+ RAM, NVMe)
Site de alto tráfego ou configuração multi-blog com bibliotecas de mídia grandes; isole o MySQL e sirva a mídia via cache para uma latência consistente.
Melhores localizações: Para uma publicação que precisa continuar online independente de pressões de remoção, escolha uma localização ChainVPS voltada à privacidade: Islândia (IS), Suíça (CH), Romênia (RO), Moldávia (MD), Países Baixos (NL) ou Luxemburgo (LU). CH e IS possuem fortes proteções à imprensa/liberdade de expressão e leis de privacidade; NL e LU oferecem baixa latência para o público leitor europeu, com banda larga ilimitada para sites com muitas imagens e newsletters.
Bloqueie tudo
Checklist de hardening
- Nunca publique a porta 2368 ou 3306 em 0.0.0.0. Mantenha o Ghost vinculado a 127.0.0.1 e o MySQL apenas na rede interna do Docker; exponha o site exclusivamente através de um proxy reverso TLS (o Caddy emite certificados Let's Encrypt automaticamente, ou use nginx + certbot).
- Defina a variável de ambiente `url` com seu domínio https:// real antes da primeiríssima inicialização. O Ghost incorpora a URL nos links dos recursos, e alterá-la depois exige uma atualização no banco de dados e a limpeza do cache.
- Proteja o painel de administração: exija uma senha longa e exclusiva na primeira configuração, e restrinja /ghost/ por lista de IPs permitidos ou autenticação básica no proxy, caso você publique a partir de localizações fixas. Ative a 2FA integrada para a equipe do Ghost.
- Faça backup dos dois volumes em uma programação regular: exporte o MySQL (`docker compose exec db mysqldump -u ghost -p ghostdb`) e arquive o volume de conteúdo (`/var/lib/ghost/content`, que armazena imagens e temas). Envie backups criptografados para o armazenamento ChainVPS ou para fora do servidor.
- Fixe as tags das imagens (ghost:5-alpine, mysql:8.0) e atualize de forma deliberada com `docker compose pull && docker compose up -d`; teste a compatibilidade de temas/integrações antes de pular para versões principais do Ghost, e mantenha ativada, na borda da rede, a proteção contra DDoS que já vem incluída no plano.
Perguntas
Hospedagem Ghost — FAQ
O Ghost precisa do MySQL, ou posso usar o SQLite?
O Ghost 5 exige oficialmente o MySQL 8 em produção. O arquivo compose acima já configura o MySQL 8 automaticamente. O SQLite só é suportado para desenvolvimento local e não é recomendado para uma implantação offshore em produção.
Como eu adiciono HTTPS?
O próprio Ghost serve HTTP simples na porta 2368. Coloque um proxy reverso na frente - o Caddy é o mais simples (ele emite e renova certificados Let's Encrypt automaticamente), ou use o nginx com certbot. Aponte-o para 127.0.0.1:2368 e defina o `url` do Ghost para o seu domínio https://.
Posso enviar newsletters sem deixar rastros de identidade em serviços de terceiros?
O Ghost envia e-mails para assinantes através de qualquer provedor SMTP ou do Mailgun. Em uma configuração focada em privacidade, use um relay SMTP que aceite cripto ou tenha cadastro mínimo, e configure-o através das variáveis de ambiente mail__. O e-mail transacional ainda precisa de um domínio de envio confiável, com SPF/DKIM configurados.
De quanto espaço em disco eu vou precisar?
O núcleo do Ghost mais o MySQL ocupam pouco espaço (algumas centenas de MB). O crescimento real vem das imagens e vídeos enviados no volume de conteúdo. Um blog leve funciona bem com 20-40 GB; sites com muitas imagens ou de assinatura devem planejar armazenamento NVMe e backups regulares do volume de conteúdo.
Meu site vai resistir a picos de tráfego ou ataques DDoS?
Os planos ChainVPS incluem proteção contra DDoS na borda da rede, e a banda é ilimitada, então um post viral não vai gerar cobranças extras. Para picos de requisições, ative o cache no nível do proxy para as visualizações de página offshore e migre para um plano VPS Pro ou dedicado se você observar alta concorrência de forma constante.
Mais para hospedar você mesmo
Outros stacks de um clique
Implante Ghost
nos próximos 60 segundos.
Banda ilimitada · DDoS incluído · 21 criptomoedas · sem KYC.