Hospedando Blog Com Hugo
Rodrigo Mosconi
Após muitos anos só acumulando conhecimento na cabeça, decidi registrar algumas coisas em um blog de forma a facilitar minha recuperação futura. Hugo é um gerador de site estático que é a base deste blog. Como o conteúdo é estático, este pode ser entregue por webservers leves, como o HTTPD(8) do OpenBSD. A escolha do Hugo foi por conta de sua simplicidade de execução, apesar da escolha do tema apresentar problemas para renderizar, e do fato de usar como base arquivos markdown como fonte dos artigos. O resultado estático, além de simplificar hospedagem, reduz a preocupação de vulnerabilidades, ou problemas para implementar recursos com programação.
Sobre as versões do hugo
Hugo dispõe de múltiplos flavours com distintos recursos embarcadados, como por exemplo suporte a repositórios S3 ou a bibliotecas para CSS. O flavour escolhido foi o extended, visto que tem suporte a CSS, porém não suporta publicar a o conteúdo gerado num repositório S3.
Instalando o Hugo
linux/Ubuntu
wget https://github.com/gohugoio/hugo/releases/download/v0.145.0/hugo_extended_0.145.0_linux-amd64.deb
sudo dpkg -i hugo_extended_0.145.0_linux-amd64.deb
OpenBSD
doas pkg_add -i hugo
Criando site
hugo new site blog
cd blog
git init .
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke
hugo new content content/post/2025/02/Hospedando-blog-com-Hugo.md
checkout
git clone
git submodule init
git submodule update
publicando site
hugo
rsync -r public/ /var/www/htdocs/bohr.mosconi.eti.br/
Configurando o httpd
Em /etc/httpd.conf, com suporte a acme/let’s encrypt (este
configurado via
acme-client.
server "bohr.mosconi.eti.br" {
listen on * port 80
location "/.well-known/acme-challenge/*" {
root "/acme"
request strip 2
}
location * {
block return 302 "https://$HTTP_HOST$REQUEST_URI"
}
}
server "bohr.mosconi.eti.br" {
listen on * tls port 443
root "/htdocs/bohr.mosconi.eti.br/"
tls {
certificate "/etc/ssl/bohr.mosconi.eti.br.fullchain.pem"
key "/etc/ssl/private/bohr.mosconi.eti.br.key"
}
location "/.well-known/acme-challenge/*" {
root "/acme"
request strip 2
}
}