Hospedar Ghost® em um VPS gerenciado: sua publicação, em seu servidor

Hospedar o Ghost em um VPS gerenciado é publicar seus artigos, reunir seus membros e enviar suas newsletters a partir de uma máquina própria, que nossas equipes mantêm atualizada e supervisionam dia e noite. O Ghost é um software livre sob a licença MIT. Este guia segue a documentação oficial dele: Ghost-CLI ou Docker Compose, MySQL, HTTPS, os e-mails, os backups e as atualizações.

Simon Vasconcelos Lee Por Publicado em 9 de novembro de 2026Leitura: 13 minutos

Todos os guias

O essencial

  1. A licença MIT do Ghost permite usá-lo livremente em uma empresa, mantendo o aviso de licença. O nome e o logotipo dependem, à parte, da política de marca da Ghost Foundation.
  2. O projeto recomenda o Ghost-CLI no Ubuntu, com Nginx, Node.js 22, MySQL 8 e pelo menos 1 GB de memória. O método Docker Compose dele, em “preview”, acrescenta a análise de audiência web e o ActivityPub auto-hospedado.
  3. O MySQL 8 é o único banco suportado em produção.
  4. Prepare dois circuitos de e-mail: um relay SMTP para os e-mails transacionais, indispensável, e o Mailgun para as newsletters, único serviço de envio em massa suportado.
  5. Faça backup do banco e da pasta content e atualize com ghost update ou docker compose pull: o projeto publica atualizações toda semana.

O que o Ghost faz

O Ghost é uma plataforma de publicação profissional e livre, escrita para Node.js. Ela reúne em um só lugar o que uma publicação independente costuma montar a partir de várias ferramentas.

Segundo a documentação, o produto tem as mesmas funções na auto-hospedagem. O que o cerca fica por sua conta: o envio das newsletters, a análise de audiência web, um CDN e os backups completos do site.

A licença MIT e a marca

O Ghost é publicado sob a licença MIT. Ela autoriza usar, copiar, modificar, mesclar, publicar, distribuir, sublicenciar e vender o software, com uma condição: manter o aviso de copyright e o texto da licença em toda cópia. Você pode, portanto, rodar o Ghost em uma empresa, adaptá-lo e publicar com ele para seus clientes, sem licença a comprar.

A licença cobre o código. O nome e o logotipo pertencem à Ghost Foundation e dependem da política de marca dela: leia-a se você constrói uma oferta em torno do software. Ghost é uma marca registrada da Ghost Foundation.

This publication is independent of and not affiliated with, authorized, sponsored, or approved by Ghost Foundation. Em português: esta publicação é independente da Ghost Foundation e não é afiliada a ela, nem autorizada, patrocinada ou aprovada por ela.

Ghost-CLI ou Docker Compose: dois métodos oficiais

O projeto documenta dois caminhos para a produção. O Ghost-CLI é a instalação que ele recomenda oficialmente, e o Docker Compose é uma “preview”, que ele diz ser novíssima. Ele também indica avançar rumo a essa ferramenta Docker, e não fazer o Ghost-CLI evoluir, e fornece um assistente para passar de um ao outro.

PontoGhost-CLIDocker Compose (preview)
SistemaUbuntu 22.04, 24.04 ou 26.04Um servidor Linux com Docker 20.10.13 ou mais recente
MemóriaPelo menos 1 GBO projeto cita como exemplo um servidor de 2 GB e 1 processador
Servidor web e HTTPSNginx e um certificado Let’s Encrypt, instalados pelo Ghost-CLICaddy, em um contêiner, que cuida do TLS
Banco de dadosMySQL 8.0 ou 8.4 instalado no servidorMySQL em um contêiner
Análise de audiência webNão compatívelDisponível, com uma conta Tinybird
Rede social (ActivityPub)O serviço hospedado pelo projeto, gratuito dentro dos limites de usoO mesmo serviço por padrão, ou um serviço próprio, auto-hospedado

Antes de começar: o domínio e o servidor

Aponte o domínio para o servidor antes da instalação: o certificado é instalado durante a implantação. Em um VPS Simafri, os visitantes chegam pelas portas 80 e 443, sob o nome de domínio do servidor, com registros A e AAAA. O endereço do site é escrito por inteiro, com o protocolo, como https://example.com: um endereço IP provoca erros.

Além da memória indicada acima, o projeto não informa números de disco nem de carga: o tamanho depende de seu tráfego, de suas imagens e de suas mídias. Em um VPS gerenciado, descreva sua publicação e recomendamos o tamanho adequado.

Instalar o Ghost com o Ghost-CLI no Ubuntu

O Ghost-CLI é usado com um usuário que não seja root e cujo nome não seja ghost, pois esse nome entra em conflito com a ferramenta. Crie-o a partir da conta root, trocando user pelo nome escolhido:

Terminal, como root
adduser <user>
usermod -aG sudo <user>
su - <user>

Nginx e MySQL

Atualize o sistema e instale o Nginx (1.9.5 no mínimo para SSL) e o MySQL. A linha ufw abre HTTP e HTTPS se esse firewall estiver ativo:

Terminal
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nginx
sudo ufw allow 'Nginx Full'
sudo apt-get install mysql-server

Nas versões recentes do Ubuntu, a conta root do MySQL se autentica por socket, o que o Ghost não suporta. Dê a ela uma senha:

Terminal, depois console do MySQL
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<your-new-root-password>';
FLUSH PRIVILEGES;
exit

Node.js e Ghost-CLI

O Ghost exige o Node.js 22: as versões 20, 21, 23 e seguintes não são suportadas. O projeto pede para instalá-lo para todo o sistema, desta forma:

Terminal
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
NODE_MAJOR=22
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt-get update
sudo apt-get install nodejs -y
sudo npm install ghost-cli@latest -g

Iniciar a instalação

O Ghost é instalado em uma pasta própria, com um proprietário e direitos precisos. Troque sitename pelo nome que preferir:

Terminal
sudo mkdir -p /var/www/sitename
sudo chown <user>:<user> /var/www/sitename
sudo chmod 775 /var/www/sitename
cd /var/www/sitename
ghost install

O comando faz então suas perguntas, e o projeto recomenda responder sim a cada etapa proposta:

O site passa então a responder, e https://example.com/ghost convida você a criar a conta do proprietário. Se a instalação for interrompida, ghost setup retoma a configuração; se falhar, ghost uninstall limpa melhor do que excluir a pasta. ghost doctor verifica o sistema a qualquer momento.

Instalar o Ghost com Docker Compose (preview)

O projeto apresenta esse método como uma “preview”: para ele, é novíssimo. É ele que permite auto-hospedar a análise de audiência web e o ActivityPub.

Em um servidor com o Docker instalado, baixe a ferramenta oficial em /opt/ghost e copie os dois arquivos de exemplo dela:

Terminal
git clone https://github.com/TryGhost/ghost-docker.git /opt/ghost && cd /opt/ghost
cp .env.example .env
cp caddy/Caddyfile.example caddy/Caddyfile

No arquivo .env, preencha estes valores:

No caddy/Caddyfile, descomente o bloco que corresponde a seu caso: redirecionamento de www para o domínio sem prefixo, ou o inverso, ou domínio de administração separado. Inicie então o Ghost e conclua a configuração em /ghost:

Terminal
docker compose pull
docker compose up -d

A análise de audiência web e o ActivityPub

A análise de audiência exige uma conta Tinybird, serviço externo. A partir de /opt/ghost, conecte-se, implante a configuração dela e obtenha os tokens para colar no .env, seção “Tinybird configuration”:

Terminal
docker compose run --rm tinybird-login
docker compose run --rm tinybird-sync
docker compose run --rm tinybird-deploy
docker compose run --rm tinybird-login get-tokens

O ActivityPub funciona de imediato com o serviço hospedado pelo projeto, gratuito dentro de limites de uso que a documentação dele publica. Para auto-hospedar um serviço próprio, descomente ACTIVITYPUB_TARGET=activitypub:8080. Ative então no .env o perfil ou os perfis desejados e reinicie os contêineres:

.env
COMPOSE_PROFILES=analytics,activitypub
Terminal
docker compose pull
docker compose up -d

Para o ActivityPub, o projeto pede para recriar também o Ghost e o Caddy, com docker compose up -d --force-recreate ghost caddy.

Passar do Ghost-CLI para o Docker Compose

Depois da clonagem e da configuração, bash scripts/migrate.sh copia a pasta content, importa o banco no contêiner MySQL e inicia o Caddy no lugar do Nginx. Ele propõe parar o Nginx, o que deixa o site fora do ar: responda não se outros sites rodam no servidor. Ele não exclui nenhum dado. bash recovery_instructions.sh restabelece o site original se você interromper a migração.

HTTPS e domínio de administração

A administração do Ghost deve passar por HTTPS, e o projeto recomenda HTTPS para todo o site: sem ele, logins e senhas circulam em texto puro. Com o Docker Compose, o Caddy cuida disso. Com o Ghost-CLI, a instalação define o certificado, e um comando faz isso depois:

Terminal, na pasta do site
ghost setup ssl

Para mudar o endereço de um site instalado com o Ghost-CLI, ghost config url https://example.com atualiza a configuração, e ghost restart a aplica.

O projeto também aconselha um domínio de administração separado, que reduz a superfície de ataque. O caminho continua sendo /ghost/. No Ghost-CLI, ele é declarado no config.production.json:

config.production.json
"admin": {
  "url": "https://admin.example.com"
}

No Docker Compose, preencha ADMIN_DOMAIN, descomente o bloco dele no Caddyfile e execute docker compose up -d --force-recreate ghost caddy. Esse domínio também precisa dos registros A e AAAA dele.

MySQL 8, o banco de produção

O MySQL 8 é o único banco que o projeto suporta em produção. O Ghost-CLI é instalado com o MySQL 8.0 ou 8.4, e o arquivo Compose fornece uma imagem MySQL 8.0.

Os e-mails e as newsletters

O Ghost distingue dois envios, que não passam pelo mesmo caminho. É o ponto mais importante a configurar depois da instalação.

EnvioExemplosO que o sustenta
TransacionalConvites da equipe, senhas esquecidas, cadastros e links de login dos membros, código de login a partir de um novo dispositivoA configuração mail do Ghost, em SMTP
NewslettersOs artigos enviados a seus membrosA API do Mailgun, cujas chaves são informadas nas configurações “Email newsletter”

O relay SMTP, para os e-mails transacionais

A documentação classifica essa configuração como obrigatória em produção. O Ghost também envia um código por e-mail quando detecta um login a partir de um novo dispositivo: configure esse relay antes de convidar sua equipe.

Em um VPS Simafri, o envio passa por um relay SMTP autenticado, na porta 587: o endereço de uma conta de e-mail que você já tem, ou o Simafri Suite.

config.production.json (Ghost-CLI), depois ghost restart
"mail": {
  "transport": "SMTP",
  "from": "'Acme Support' <support@example.com>",
  "options": {
    "host": "smtp.example.com",
    "port": 587,
    "secure": false,
    "requireTLS": true,
    "auth": {
      "user": "support@example.com",
      "pass": "1234567890"
    }
  }
}
.env (Docker Compose), seção SMTP Email
mail__transport=SMTP
mail__options__host=smtp.example.com
mail__options__port=587
mail__options__secure=false
mail__options__requireTLS=true
mail__options__auth__user=support@example.com
mail__options__auth__pass=1234567890
mail__from="'Acme Support' <support@example.com>"
Terminal, após uma mudança no arquivo .env
docker compose up -d --force-recreate ghost

Mailgun, para as newsletters

O relay SMTP não cobre as newsletters. Segundo a documentação, o envio em massa não é feito por SMTP e o Mailgun é, até hoje, o único serviço de envio em massa que o Ghost suporta. Você cria sua conta Mailgun e informa as chaves de API dela nas configurações do Ghost.

Se você não envia seus artigos por e-mail, não precisa de nenhuma conta Mailgun: essas configurações são ignoradas. Se preferir outra ferramenta de newsletter, o projeto propõe sincronizar seus membros com ela, por exemplo com o Zapier ou com os guias de integração dele.

Fazer backup e restaurar o Ghost

O Ghost oferece três níveis de cópia, e eles não contêm a mesma coisa. Para reconstruir um site idêntico, o projeto pede para fazer backup diretamente do banco e da pasta content.

MétodoO que ele contémPara qual uso
ghost backup (Ghost-CLI)Um zip: conteúdos em JSON, membros em CSV, temas, imagens, arquivos e mídias, rotas e redirecionamentosA precaução antes de uma atualização
Exportação pela administraçãoUm zip: conteúdos e configurações, membros, estatísticas dos artigos, temas, rotas e redirecionamentos, à escolha. Nem comentários, nem histórico de atividade dos membros, nem mídiasA mudança do conteúdo para outro site
Banco e pasta contentA totalidade dos dadosA recuperação após um desastre, ou uma cópia exata

A exportação fica em “Settings”, “Advanced”, “Import/Export”, aba “Export”, botão “All data”. Para a cópia completa, com o Ghost-CLI, a conta MySQL e o nome do banco a reproduzir estão no config.production.json:

Terminal, Ghost-CLI
mkdir -p ~/ghost-backups
mysqldump -u ghost_user -p ghost_production > ~/ghost-backups/ghost_backup.sql
cd /var/www/sitename
tar czf ~/ghost-backups/ghost_content_backup.tar.gz content/

Com o Docker Compose, a ferramenta oficial guarda o conteúdo em data/ghost. O dump segue a forma dada pela imagem MySQL, e a senha root já está no contêiner. Guarde também uma cópia do .env e do Caddyfile.

Terminal, Docker Compose
cd /opt/ghost
mkdir -p ~/ghost-backups
docker compose exec -T db sh -c 'exec mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" ghost' > ~/ghost-backups/ghost_backup.sql
tar czf ~/ghost-backups/ghost_content_backup.tar.gz data/ghost

Restaurar

Terminal, Ghost-CLI
cd /var/www/sitename
ghost stop
mysql -u ghost_user -p ghost_production < ~/ghost-backups/ghost_backup.sql
tar xzf ~/ghost-backups/ghost_content_backup.tar.gz
sudo chown -R ghost:ghost content
ghost restart
Terminal, Docker Compose
cd /opt/ghost
docker compose stop ghost
docker compose exec -T db sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" ghost' < ~/ghost-backups/ghost_backup.sql
tar xzf ~/ghost-backups/ghost_content_backup.tar.gz
docker compose start ghost

Copie esses arquivos para fora do servidor, com rsync ou scp, e faça um teste de restauração em uma máquina de teste. Se você recomeçar a partir de uma exportação com membros pagantes, conecte a mesma conta Stripe antes de importar seus membros.

Atualizar o Ghost

O projeto publica atualizações toda semana e lembra que um servidor web público deve se manter atualizado. Leia as notas de versão e execute o comando do método escolhido.

Com o Ghost-CLI

Terminal, na pasta do site
ghost check-update
ghost backup
ghost update

Com o Docker Compose

Terminal
cd /opt/ghost
git pull
docker compose pull
docker compose up -d
docker image prune

A última linha, opcional, remove as imagens antigas. Deixe GHOST_VERSION comentado no .env: fixar uma versão bloqueia esses comandos de atualização.

Reforçar e fazer crescer sua instância

A documentação dá várias configurações para um servidor em produção:

Para a carga, o projeto coloca um CDN e uma camada de cache na frente do Ghost. Ele esclarece que o clustering e o sharding não são suportados: uma única instância serve o site, e o cache absorve o tráfego.

Quem faz o quê em um VPS gerenciado

A auto-hospedagem exige cuidar do servidor além da aplicação. Em um VPS gerenciado, nossas equipes assumem o servidor e acompanham sua instância de forma proativa; o Ghost continua sendo seu software, com as configurações e os dados dele.

AssuntoNossas equipesVocê
O servidorAtualizações do sistema e de segurança, com intervenções no servidor incluídasO momento que convém a sua atividade
A supervisãoServidor acompanhado 24 horas por dia, 7 dias por semana, com intervenção sem esperar sua ligaçãoSeus conteúdos, seus membros e suas assinaturas
GhostAcompanhamento proativo: erros, lentidões e espaço em disco identificados, correção recomendadaA instalação, as atualizações, as configurações, o relay SMTP e a conta Mailgun dele, que você aplica, por conta própria ou com seu assistente de IA
Os backupsToda noite, criptografados e guardados fora da máquina; restauração incluídaO pedido de restauração, quando você precisar
A migraçãoSeu servidor atual migrado, grátisO momento da virada

Se você preferir que nossas equipes intervenham na própria aplicação, esse serviço é cobrado por hora ou por valor fechado, com o orçamento informado antes da intervenção.

Um servidor cuidado por nós para seu site em Ghost

Com um VPS gerenciado Simafri, nossas equipes mantêm atualizado o servidor de sua instância Ghost, monitoram-no dia e noite e intervêm sem esperar sua ligação; elas também acompanham sua instância de forma proativa e recomendam as correções úteis, que você aplica por conta própria ou com seu assistente de IA. Os backups são criptografados todas as noites e guardados fora da máquina, a restauração está incluída, e a migração de seu servidor atual é grátis.

Conhecer os VPS gerenciados

Perguntas frequentes

O Ghost é gratuito na auto-hospedagem?

Sim. O Ghost está sob a licença MIT: você pode usá-lo em uma empresa e adaptá-lo, mantendo o aviso de licença. Restam os serviços ao redor dele: o servidor, o relay de e-mails, o Mailgun se você envia newsletters, o Tinybird se quiser a análise de audiência dele.

Qual configuração é preciso para hospedar o Ghost?

O projeto recomenda Ubuntu 22.04, 24.04 ou 26.04, Nginx, Node.js 22, MySQL 8.0 ou 8.4, systemd, pelo menos 1 GB de memória, um domínio e um usuário que não seja root. Para o Docker Compose, ele cita como exemplo um servidor de 2 GB e 1 processador.

É melhor instalar o Ghost com o Ghost-CLI ou com Docker?

O Ghost-CLI é a instalação que o projeto recomenda para a produção. O Docker Compose é uma preview, a única que permite a análise de audiência web e o ActivityPub auto-hospedado, e o projeto diz avançar rumo a essa ferramenta. Um assistente permite passar do Ghost-CLI para o Docker Compose.

O Ghost funciona com SQLite, MariaDB ou PostgreSQL?

Em produção, o MySQL 8 é o único banco suportado. O projeto recomenda uma reinstalação no MySQL 8 a partir do SQLite e uma migração para o MySQL 8 a partir do MariaDB. A documentação dele não prevê o PostgreSQL.

Dá para enviar as newsletters do Ghost por SMTP?

Não. O SMTP serve aos e-mails transacionais: convites, senhas, links de login dos membros. As newsletters exigem a API do Mailgun, único serviço de envio em massa suportado. Sem envio de artigos por e-mail, nenhuma conta Mailgun é necessária.

Como fazer backup de um site Ghost auto-hospedado?

Para uma recuperação completa, faça backup do banco MySQL com mysqldump e da pasta content com tar. O comando ghost backup gera um zip antes de uma atualização. A exportação da administração deixa de lado os comentários, o histórico de atividade dos membros e as mídias.

Como atualizar o Ghost?

Com o Ghost-CLI, execute ghost backup e depois ghost update na pasta do site, e ghost update --rollback em caso de problema. Com o Docker Compose, execute git pull, docker compose pull e docker compose up -d em /opt/ghost.

Um VPS gerenciado cobre o Ghost?

Um VPS gerenciado cobre o servidor: sistema, segurança, supervisão e backups. Nossas equipes também acompanham sua instância de forma proativa e recomendam as correções úteis, que você aplica. Uma intervenção na aplicação é cobrada por hora ou por valor fechado.

Entre em contato