Alojar Ghost® num VPS gerido: a sua publicação, no seu servidor

Alojar Ghost num VPS gerido é publicar os seus artigos, reunir os seus membros e enviar as suas newsletters a partir de uma máquina sua, que as nossas equipas mantêm atualizada e supervisionam dia e noite. O Ghost é um software livre sob licença MIT. Este guia segue a sua documentação oficial: Ghost-CLI ou Docker Compose, MySQL, HTTPS, os e-mails, as cópias de segurança e as atualizações.

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

Todos os guias

O essencial

  1. A licença MIT do Ghost permite utilizá-lo livremente numa empresa, mantendo a menção da licença. O nome e o logótipo dependem à parte da política de marcas 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 seu método Docker Compose, em «preview», acrescenta a análise web e o ActivityPub autoalojado.
  3. O MySQL 8 é a única base de dados suportada em produção.
  4. Preveja dois circuitos de e-mails: uma retransmissão SMTP para os e-mails transacionais, indispensável, e o Mailgun para as newsletters, o único serviço de envio em massa suportado.
  5. Faça uma cópia da base de dados e da pasta content e atualize com ghost update ou docker compose pull: o projeto publica atualizações todas as semanas.

O que faz o Ghost

O Ghost é uma plataforma de publicação profissional e livre, escrita para Node.js. Reúne no mesmo lugar o que uma publicação independente costuma montar a partir de várias ferramentas.

Segundo a documentação, o produto tem as mesmas funcionalidades em autoalojamento. O que o rodeia fica por sua conta: o envio das newsletters, a análise web, uma CDN e as cópias de segurança completas do site.

A licença MIT e a marca

O Ghost é publicado sob a licença MIT. Autoriza a utilizar, copiar, modificar, fundir, publicar, distribuir, sublicenciar e vender o software, com uma condição: manter a menção de direitos de autor e o texto da licença em qualquer cópia. Pode, portanto, fazer correr o Ghost numa empresa, adaptá-lo e publicar nele para os seus clientes, sem licença para comprar.

A licença cobre o código. O nome e o logótipo pertencem à Ghost Foundation e dependem da sua política de marcas: leia-a se construir uma oferta em torno do software. Ghost é uma marca registada 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, autorizada, patrocinada nem 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 recomenda oficialmente, e o Docker Compose é uma «preview», que diz ser muito recente. Indica também avançar para essas ferramentas Docker em vez de fazer evoluir o Ghost-CLI, 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 o 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, num contentor, que trata do TLS
Base de dadosMySQL 8.0 ou 8.4 instalado no servidorMySQL num contentor
Análise webNão compatívelDisponível, com uma conta Tinybird
Rede social (ActivityPub)O serviço alojado pelo projeto, gratuito dentro dos seus limites de utilizaçãoO mesmo serviço por predefinição, ou o seu, autoalojado

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

Faça o domínio apontar para o servidor antes da instalação: o certificado instala-se durante a configuração. Num VPS Simafri, os visitantes chegam pelas portas 80 e 443, sob o nome de domínio do servidor, com registos A e AAAA. O endereço do site escreve-se por inteiro, com o seu protocolo, como https://example.com: um endereço IP provoca erros.

Para lá da memória indicada acima, o projeto não quantifica nem o disco nem a carga: o tamanho depende do seu tráfego, das suas imagens e dos seus multimédia. Num VPS gerido, descreva-nos a sua publicação e recomendamos-lhe o tamanho adequado.

Instalar o Ghost com o Ghost-CLI no Ubuntu

O Ghost-CLI utiliza-se com um utilizador que não seja root e cujo nome não seja ghost, porque esse nome entra em conflito com a ferramenta. Crie-o a partir da conta root, substituindo user pelo nome escolhido:

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

Nginx e MySQL

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

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 autentica-se por socket, o que o Ghost não suporta. Dê-lhe uma palavra-passe:

Terminal, depois consola 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 pede o Node.js 22: as versões 20, 21, 23 e seguintes não são suportadas. O projeto pede para o instalar 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

Lançar a instalação

O Ghost instala-se na sua própria pasta, com um proprietário e direitos precisos. Substitua sitename pelo nome da sua escolha:

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 as suas perguntas, e o projeto recomenda responder sim a cada passo proposto:

O site responde então, e https://example.com/ghost convida-o 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 a eliminação da pasta. ghost doctor verifica o sistema a qualquer momento.

Instalar o Ghost com o Docker Compose (preview)

O projeto apresenta este método como uma «preview»: é muito recente para ele. É ele que permite autoalojar a análise web e o ActivityPub.

Num servidor com o Docker instalado, obtenha as ferramentas oficiais em /opt/ghost e copie os seus dois ficheiros de exemplo:

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 ficheiro .env, preencha estes valores:

Em caddy/Caddyfile, descomente o bloco que corresponde ao seu caso: redirecionamento de www para o domínio sem prefixo, ou o contrário, ou domínio de administração separado. Lance depois o Ghost e termine a configuração em /ghost:

Terminal
docker compose pull
docker compose up -d

A análise web e o ActivityPub

A análise exige uma conta Tinybird, serviço externo. A partir de /opt/ghost, inicie sessão, implemente a sua configuração e obtenha os tokens a colar no .env, secçã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 logo com o serviço alojado pelo projeto, gratuito dentro de limites de utilização que a sua documentação publica. Para autoalojar o seu, descomente ACTIVITYPUB_TARGET=activitypub:8080. Ative depois no .env o ou os perfis pretendidos e reinicie os contentores:

.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 ao Docker Compose

Depois da clonagem e da configuração, bash scripts/migrate.sh copia a pasta content, importa a base de dados para o contentor MySQL e arranca o Caddy no lugar do Nginx. Propõe parar o Nginx, o que coloca o site fora de linha: responda não se houver outros sites a correr no servidor. Não elimina nenhum dado. bash recovery_instructions.sh restabelece o site de origem se interromper a migração.

HTTPS e domínio de administração

A administração do Ghost deve passar por HTTPS, e o projeto recomenda o HTTPS para todo o site: sem ele, credenciais e palavras-passe circulam em claro. Com o Docker Compose, o Caddy trata disso. Com o Ghost-CLI, a instalação instala o certificado, e um comando fá-lo 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 aplica-a.

O projeto aconselha também um domínio de administração separado, que reduz a superfície de ataque. O caminho continua a ser /ghost/. Do lado do Ghost-CLI, declara-se em config.production.json:

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

Do lado do Docker Compose, preencha ADMIN_DOMAIN, descomente o seu bloco no Caddyfile e execute docker compose up -d --force-recreate ghost caddy. Este domínio precisa também dos seus registos A e AAAA.

MySQL 8, a base de dados de produção

O MySQL 8 é a única base de dados que o projeto suporta em produção. O Ghost-CLI instala-se com o MySQL 8.0 ou 8.4, e o ficheiro 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 acertar depois da instalação.

EnvioExemplosO que o suporta
TransacionalConvites da equipa, palavras-passe esquecidas, inscrições e ligações de início de sessão dos membros, código de início de sessão a partir de um novo dispositivoA configuração mail do Ghost, em SMTP
NewslettersOs artigos enviados aos seus membrosA API do Mailgun, cujas chaves se introduzem nas definições «Email newsletter»

A retransmissão SMTP, para os e-mails transacionais

A documentação classifica esta configuração como requerida em produção. O Ghost envia também um código por e-mail quando deteta um início de sessão a partir de um novo dispositivo: configure esta retransmissão antes de convidar a sua equipa.

Num VPS Simafri, o envio passa por uma retransmissão SMTP autenticada, na porta 587: o endereço de uma conta de correio que já tenha, 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), secçã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, depois de uma alteração do ficheiro .env
docker compose up -d --force-recreate ghost

Mailgun, para as newsletters

A retransmissão SMTP não cobre as newsletters. Segundo a documentação, o envio em massa não se faz em SMTP e o Mailgun é, atualmente, o único serviço de envio em massa que o Ghost suporta. Crie a sua conta Mailgun e introduza as respetivas chaves de API nas definições do Ghost.

Se não enviar os seus artigos por e-mail, não precisa de nenhuma conta Mailgun: estas definições ignoram-se. Se preferir outra ferramenta de newsletter, o projeto propõe sincronizar os seus membros com ela, por exemplo com o Zapier ou com os seus guias de integração.

Copiar e restaurar o Ghost

O Ghost propõe três níveis de cópia, e não contêm a mesma coisa. Para reconstruir um site de forma idêntica, o projeto pede para copiar diretamente a base de dados e a pasta content.

MétodoO que contémPara que uso
ghost backup (Ghost-CLI)Um zip: conteúdos em JSON, membros em CSV, temas, imagens, ficheiros e multimédia, rotas e redirecionamentosA precaução antes de uma atualização
Exportação a partir da administraçãoUm zip: conteúdos e definições, membros, estatísticas dos artigos, temas, rotas e redirecionamentos, à escolha. Nem comentários, nem histórico de atividade dos membros, nem multimédiaA transferência do conteúdo para outro site
Base de dados e pasta contentA totalidade dos dadosA recuperação após um desastre, ou uma cópia exata

A exportação encontra-se em «Settings», «Advanced», «Import/Export», separador «Export», botão «All data». Para a cópia completa, com o Ghost-CLI, a conta MySQL e o nome da base de dados a indicar estão em 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, as ferramentas oficiais guardam o conteúdo em data/ghost. O dump retoma a forma dada pela imagem MySQL, e a palavra-passe root já está no contentor. 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 estes ficheiros para fora do servidor, com rsync ou scp, e faça um teste de restauro numa máquina de ensaio. Se recomeçar a partir de uma exportação com membros pagos, ligue a mesma conta Stripe antes de importar os seus membros.

Atualizar o Ghost

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

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, facultativa, retira as imagens antigas. Deixe GHOST_VERSION em comentário no .env: fixar uma versão bloqueia estes comandos de atualização.

Reforçar e fazer crescer a sua instância

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

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

Quem faz o quê num VPS gerido

O autoalojamento exige cuidar do servidor para além da aplicação. Num VPS gerido, as nossas equipas assumem o servidor e acompanham a sua instância de forma proativa; o Ghost continua a ser o seu software, com as suas definições e os seus dados.

AssuntoAs nossas equipasVocê
O servidorAtualizações do sistema e de segurança, intervenções no servidor incluídasO momento que convém à sua atividade
A supervisãoServidor acompanhado 24 horas por dia, 7 dias por semana, com intervenção sem esperar pela sua chamadaOs seus conteúdos, os seus membros e as suas subscrições
GhostAcompanhamento proativo: erros, lentidão e espaço em disco identificados, correção recomendadaA sua instalação, as suas atualizações, as suas definições, a sua retransmissão SMTP e a sua conta Mailgun, que aplica diretamente ou com o seu assistente de IA
As cópias de segurançaTodas as noites, cifradas e guardadas fora da máquina; restauro incluídoO pedido de restauro, quando precisar
A migraçãoO seu servidor atual migrado, oferecidoO momento da mudança

Se preferir que as nossas equipas intervenham na própria aplicação, este serviço é faturado à hora ou por pacote, com um orçamento comunicado antes da intervenção.

Um servidor mantido para o seu site Ghost

Com um VPS gerido da Simafri, as nossas equipas mantêm atualizado o servidor da sua instância Ghost, vigiam-no dia e noite e intervêm sem esperar pela sua chamada; acompanham também a sua instância de forma proativa e recomendam-lhe as correções úteis, que aplica diretamente ou com o seu assistente de IA. As cópias de segurança são cifradas todas as noites e guardadas fora da máquina, o seu restauro está incluído, e a migração do seu servidor atual é oferecida.

Descobrir os VPS geridos

Perguntas frequentes

O Ghost é gratuito em autoalojamento?

Sim. O Ghost está sob licença MIT: pode utilizá-lo numa empresa e adaptá-lo, mantendo a menção da licença. Restam os serviços à sua volta: o servidor, a retransmissão de e-mails, o Mailgun se enviar newsletters, o Tinybird se quiser a sua análise.

Que configuração é precisa para alojar 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 utilizador que não seja root. Para o Docker Compose, cita como exemplo um servidor de 2 GB e 1 processador.

Convém instalar o Ghost com o Ghost-CLI ou com o Docker?

O Ghost-CLI é a instalação que o projeto recomenda para a produção. O Docker Compose é uma preview, a única a permitir a análise web e o ActivityPub autoalojado, e o projeto diz avançar para essas ferramentas. Um assistente permite passar do Ghost-CLI ao Docker Compose.

O Ghost funciona com SQLite, MariaDB ou PostgreSQL?

Em produção, o MySQL 8 é a única base de dados suportada. 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 sua documentação não prevê o PostgreSQL.

É possível enviar as newsletters do Ghost em SMTP?

Não. O SMTP serve para os e-mails transacionais: convites, palavras-passe, ligações de início de sessão dos membros. As newsletters exigem a API do Mailgun, o único serviço de envio em massa suportado. Sem envio de artigos por e-mail, nenhuma conta Mailgun é necessária.

Como fazer a cópia de segurança de um site Ghost autoalojado?

Para uma recuperação completa, copie a base de dados MySQL com mysqldump e a pasta content com tar. O comando ghost backup produz um zip antes de uma atualização. A exportação da administração deixa de fora os comentários, o histórico de atividade dos membros e os multimédia.

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 gerido cobre o Ghost?

Um VPS gerido cobre o servidor: sistema, segurança, supervisão e cópias de segurança. As nossas equipas acompanham também a sua instância de forma proativa e recomendam-lhe as correções úteis, que aplica. Uma intervenção na aplicação é faturada à hora ou por pacote.

Contacte-nos