Microblog com Hugo na VPS — tutorial prático
Quer colocar um microblog no ar rapidamente e com deploy automático? Neste tutorial eu mostro um fluxo simples usando Hugo, GitHub e uma VPS (Ubuntu/Debian). O objetivo é: editar Markdown localmente, dar push e ver o site atualizado na VPS em segundos.
O que você vai precisar
- Uma VPS (Ubuntu/Debian) com acesso SSH
- Um domínio apontando para a VPS (opcional, mas recomendado)
- Git instalado na VPS e na sua máquina local (
sudo apt install git) - Hugo instalado localmente para testes (
go install github.com/gohugoio/hugo@latest) - Conta no GitHub para armazenar o repositório e configurar Actions
Dica: se você quer a versão
extendeddo Hugo (necessária para alguns temas), prefira instalar o pacote .deb ou usar um instalador oficial.
1) Instalar Hugo na VPS
Acesse sua VPS via SSH e instale o Hugo (opção rápida):
sudo apt update && sudo apt install -y hugo
hugo version
2) Criar o site inicial
No diretório onde quer trabalhar:
hugo new site microblog
cd microblog
git init
# Adicione um tema (ex.: Ananke)
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke
Exemplo mínimo de config.toml (ajuste baseURL):
baseURL = 'https://seudominio.com/'
languageCode = 'pt-br'
title = 'Meu Microblog'
theme = 'ananke'
Teste local com hugo server (http://localhost:1313) antes de subir.
3) Preparar o repositório no GitHub
No repositório local:
git add .
git commit -m "Site inicial"
git branch -M main
git remote add origin https://github.com/SEUUSER/seu-microblog.git
git push -u origin main
Clone no seu PC para editar localmente:
git clone https://github.com/SEUUSER/seu-microblog.git ~/microblog-local
4) Configurar deploy via SSH (chave para GitHub Actions)
Na sua VPS, gere uma chave SSH dedicada para o deploy e adicione a pública ao authorized_keys do usuário que rodará o deploy (ex.: www-data ou seu usuário):
ssh-keygen -t ed25519 -C "deploy@vps" -f ~/.ssh/deploy_key
cat ~/.ssh/deploy_key.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/deploy_key
- Copie o conteúdo da chave privada (
~/.ssh/deploy_key) para o GitHub SecretDEPLOY_KEY. - Adicione
VPS_HOST(IP) eVPS_USER(usuário SSH) também como Secrets.
Segurança: restrinja a chave no servidor (por exemplo, use
from="IP_DA_ACTIONS"noauthorized_keys) e limite comandos permitidos se necessário.
5) Servir o site com Nginx
Instale e configure Nginx para servir o conteúdo estático:
sudo apt install -y nginx
sudo mkdir -p /var/www/microblog
Exemplo simples de bloco de servidor (/etc/nginx/sites-available/microblog):
server {
listen 80;
server_name seudominio.com;
root /var/www/microblog/public;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Ative a configuração e reinicie o Nginx:
sudo ln -s /etc/nginx/sites-available/microblog /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx
6) Workflow GitHub Actions (build + deploy)
Crie .github/workflows/deploy.yml no repo com algo parecido com isto:
name: Deploy Microblog
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Hugo
uses: peaceiris/actions-hugo@v3
with:
hugo-version: "latest"
extended: true
- name: Build
run: hugo --minify
- name: Deploy to VPS (via SSH)
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USER }}
key: ${{ secrets.DEPLOY_KEY }}
script: |
set -e
TMP_DIR="/tmp/microblog_$GITHUB_RUN_ID"
rm -rf "$TMP_DIR" && mkdir -p "$TMP_DIR"
git clone --depth 1 https://github.com/${{ github.repository }} "$TMP_DIR"
cd "$TMP_DIR"
hugo --minify
sudo rm -rf /var/www/microblog/public/*
sudo cp -r public/* /var/www/microblog/
sudo chown -R www-data:www-data /var/www/microblog
- Configure os Secrets:
VPS_HOST,VPS_USER,DEPLOY_KEY. - O workflow builda o site no runner e roda comandos na VPS para atualizar
/var/www/microblog.
7) Fluxo de conteúdo (edição rápida)
No PC local (~/microblog-local):
hugo new posts/novo-post.md
# edite o arquivo, coloque `draft: false` quando pronto
git add .
git commit -m "Novo post"
git push
O GitHub Actions fará o build e o deploy automaticamente; seu site estará atualizado poucos segundos depois.
Comandos úteis
# testar localmente
hugo server
# commits e push rápidos
git add . && git commit -m "update" && git push
# deploy manual (na VPS)
cd /tmp/microblog && hugo && sudo cp -r public/* /var/www/microblog/
Pronto — agora você tem um microblog self-hosted, rápido, sem banco de dados e com deploy automático.