Ghost na VPS: como instalar seu blog passo a passo
Aprenda a instalar o Ghost no seu servidor com o Ghost-CLI no Ubuntu, configurar o e-mail, conhecer a opção em Docker e manter backup e atualização.
Por Redação Eleven Host · @robson.direitodigital · 1 de novembro de 2026 · 8 min de leitura

Capa da Redação Eleven Host para o guia: Ghost na VPS: como instalar seu blog passo a passo Arte: Eleven Host
Ghost na VPS é a forma de ter o seu blog, site ou newsletter numa plataforma de código aberto rodando no seu próprio servidor. O método oficial recomendado pela documentação é o Ghost-CLI no Ubuntu, e o Docker está em prévia. Você também precisa de um domínio.
O que é o Ghost e para quem serve
O Ghost é uma plataforma de publicação de código aberto, usada para blog, site e newsletter. Você pode usar o serviço gerenciado do próprio Ghost ou instalar o software num servidor seu.
A documentação separa os dois públicos. O serviço gerenciado é indicado para quem quer usar o Ghost e não quer gastar tempo cuidando de servidores. A instalação própria é indicada, nas palavras da doc, para equipes que se sentem à vontade para gerenciar servidores e querem controle total do ambiente.
Instalar o Ghost numa VPS dá controle total, mas a manutenção do servidor passa a ser sua: atualizações, backup e e-mail.
Se você ainda está conhecendo servidores, leia antes o guia de iniciantes sobre servidor VPS. Ele explica o que é uma VPS e como escolher uma.
Requisitos para instalar o Ghost
A documentação do Ghost lista a pilha oficialmente suportada e recomendada. Antes de começar, confira:
- Ubuntu 22.04, 24.04 ou 26.04 (LTS).
- Node.js 22 LTS, como a doc pede. Confira a página de versões suportadas do Ghost antes de instalar.
- MySQL 8.0 ou 8.4.
- NGINX, com no mínimo a versão 1.9.5 para usar SSL.
- Systemd.
- Um servidor com pelo menos 1GB de memória, requisito citado pelo próprio Ghost.
- Um usuário comum, sem ser o root, para rodar os comandos
ghost. - Um domínio registrado, com um registro A apontando para o IP do servidor.
O domínio precisa estar apontando para a VPS antes da instalação. A doc também avisa que usar endereço IP na URL do blog causa erros. Se o seu blog vai abrir com e sem www, veja Site com e sem www: como fazer abrir nos dois endereços.
Passo a passo: instalar o Ghost com o Ghost-CLI
1. Criar o usuário do Ghost
A doc avisa que o nome de usuário ghost causa conflitos com o Ghost-CLI, então escolha outro nome. Troque <user> pelo nome escolhido:
adduser <user>
usermod -aG sudo <user>
su - <user>
2. Instalar o NGINX e o MySQL
sudo apt-get install nginx
sudo ufw allow 'Nginx Full'
O comando do ufw só tem efeito se o firewall UFW estiver ativo no servidor. Depois, instale o MySQL e defina a senha do usuário root do banco:
sudo apt-get install mysql-server
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<your-new-root-password>';
FLUSH PRIVILEGES;
exit
Troque <your-new-root-password> por uma senha forte e guarde-a num lugar seguro.
3. Instalar o Node.js
A doc instala o Node.js pelo repositório NodeSource:
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 # Use a supported version
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
Está escolhendo uma VPS? VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Ver os planos de VPS
Instalar o Ghost-CLI e rodar o ghost install
4. Instalar o Ghost-CLI e criar a pasta do site
O Ghost-CLI é a ferramenta de instalação do Ghost. Troque <user> pelo seu usuário e sitename pelo nome da pasta do seu site:
sudo npm install ghost-cli@latest -g
sudo mkdir -p /var/www/sitename
sudo chown <user>:<user> /var/www/sitename
sudo chmod 775 /var/www/sitename
cd /var/www/sitename
5. Rodar a instalação
ghost install
O instalador faz perguntas. Na da URL, digite o endereço exato em que o blog vai abrir, com o protocolo http ou https. Segundo a doc, o instalador pede também:
- o hostname do MySQL (
localhost), o usuário, a senha e o nome do banco; - se deve criar um usuário MySQL próprio do Ghost;
- se deve configurar o NGINX;
- se deve configurar o SSL, com certificado Let's Encrypt, que exige um e-mail;
- se deve configurar o systemd;
- se deve iniciar o Ghost no final.
Para cada configuração, a própria doc marca a opção de configurar como recomendada. Depois de iniciar o Ghost, confira se o blog abre no endereço que você informou.
Se algo não sair como esperado, o Ghost-CLI tem comandos de diagnóstico: ghost doctor checa o sistema em busca de problemas, ghost restart reinicia, ghost log mostra as últimas 20 linhas do log de acesso e ghost log -e mostra os erros.
Configurar o envio de e-mail no Ghost
Em produção, o Ghost exige a configuração de e-mail. Segundo a doc, ela permite enviar e-mails transacionais, como convites e troca de senha. A configuração fica no arquivo config.production.json. O exemplo da doc usa o serviço Mailgun:
"mail": {
"transport": "SMTP",
"options": {
"service": "Mailgun",
"auth": {
"user": "postmaster@example.mailgun.org",
"pass": "1234567890"
}
}
},
Os valores acima são só exemplo. Troque pelos dados da sua conta.
Newsletter e senha no arquivo
- O Mailgun é opcional para e-mails transacionais, mas, segundo a doc, é obrigatório para envio em massa. Para newsletter, planeje usar o Mailgun.
- O arquivo guarda a senha do serviço de e-mail em texto. Por isso, recomendamos não compartilhá-lo nem publicá-lo em repositório.
Ghost em Docker: alternativa em prévia
A documentação oficial tem uma instalação com Docker Compose, mas a chama de nova e a classifica como prévia (preview). A doc diz que o Ghost está caminhando para ferramentas modernas baseadas em Docker Compose, em vez de atualizar o Ghost-CLI. Por isso, vale conhecer, mas o Ghost-CLI é o método que a doc recomenda hoje.
Os requisitos são Linux, Docker 20.10.13 ou mais novo, um domínio com registro A e um serviço SMTP. Os comandos da doc são:
git clone https://github.com/TryGhost/ghost-docker.git /opt/ghost && cd /opt/ghost
cp .env.example .env
cp caddy/Caddyfile.example caddy/Caddyfile
docker compose pull
docker compose up -d
No arquivo .env, você define DOMAIN, o ADMIN_DOMAIN (opcional), as senhas DATABASE_ROOT_PASSWORD e DATABASE_PASSWORD, geradas com openssl rand -hex 32, e a seção de SMTP. Essa instalação usa o Caddy na frente do Ghost. Na prática, isso significa que ela disputa as portas 80 e 443 com um NGINX ou Apache que já esteja rodando no servidor. Para conhecer o Caddy, veja Caddy na VPS: servidor web com HTTPS automático.
Para atualizar nesse método, a doc manda rodar:
cd /opt/ghost
git pull
docker compose pull
docker compose up -d
Se você mudou o .env, use docker compose up -d --force-recreate ghost caddy. A doc avisa ainda que as variáveis de Analytics e ActivityPub não devem ser alteradas depois que o banco foi inicializado.
Atualizar o Ghost e fazer backup
No Ghost-CLI, a atualização é o comando ghost update. A doc diz que, para ficar mais seguro, você pode rodar ghost backup antes. Para saber se há versão nova, use ghost check-update. Segundo a doc do Ghost-CLI, as versões saem em geral a cada uma ou duas semanas.
ghost backup
ghost update
Se a atualização der errado, a doc indica a opção de rollback:
ghost update --rollback
O ghost backup gera um arquivo zip com os dados do site: o conteúdo em JSON, uma exportação completa de membros em CSV, os temas instalados, as imagens, arquivos e mídia, e cópias dos arquivos routes.yaml e de redirecionamentos. Recomendamos copiar esse zip para fora do servidor.
A documentação do Docker não traz instrução de backup. Se você usar essa opção, o backup é por sua conta, e recomendamos testar a restauração antes de precisar dela.
Cuidados com o servidor do blog
Como o blog fica no seu servidor, a segurança dele também fica com você. Se a VPS aceita conexão por SSH, o guia Mudar a porta do SSH: passo a passo na VPS mostra um cuidado a mais.
Checklist depois de instalar
- O domínio aponta para a VPS com um registro A e o blog abre no endereço informado na instalação.
- Os comandos
ghostrodam com um usuário comum, que não se chamaghost. - O certificado SSL foi configurado no
ghost install. - O e-mail está configurado no
config.production.json, e esse arquivo não foi compartilhado. - Se vai enviar newsletter, o Mailgun está configurado.
- Rodei
ghost backupe guardei o zip fora do servidor. - Sei usar
ghost updateeghost update --rollback.
Domínio para o blog
Ainda não tem um domínio para o blog? Registre o seu na Eleven Host. Registrar domínio
Perguntas frequentes
Qual método de instalação a doc recomenda para o Ghost na VPS?
Segundo a documentação, é o Ubuntu com o Ghost-CLI, a pilha oficialmente suportada e recomendada. O método com Docker está em prévia.
Preciso de um domínio para instalar o Ghost?
Sim. A doc pede um domínio registrado com um registro A apontando para o IP do servidor. Usar o endereço IP na URL causa erros.
Posso usar o usuário ghost para rodar os comandos?
Não. A doc avisa que esse nome causa conflitos com o Ghost-CLI. Crie outro usuário comum e use-o nos comandos.
Como mandar newsletter pelo Ghost?
O envio em massa exige o Mailgun, segundo a doc. Um SMTP comum serve apenas para e-mails transacionais, como convites e troca de senha.
Como atualizar o Ghost?
Rode ghost backup e depois ghost update. Se der errado, use ghost update --rollback.