2 minutes
Implantando um Site Estático com Hugo, Nginx e SSL via Docker
Introdução
Neste guia, vamos configurar um site estático utilizando o Hugo Framework, gerar os arquivos estáticos, servi-los com um contêiner Docker rodando Nginx e proteger o site com SSL usando a imagem steveltn/https-portal:1.
O que é o Hugo?
O Hugo é um framework para a criação de sites estáticos desenvolvido em Go, conhecido por sua alta velocidade na geração de páginas. Os sites criados com Hugo são altamente performáticos e fáceis de manter.
Estrutura do Projeto
O projeto terá a seguinte estrutura:
/var/www/html/blog/
├── config.toml # Configuração do Hugo
├── content/ # Postagens e páginas
├── layouts/ # Templates personalizados
├── static/ # Arquivos estáticos (CSS, JS, imagens)
├── themes/ # Tema do site
├── public/ # Saída gerada pelo Hugo (servida pelo Nginx)
├── Dockerfile # Dockerfile do Nginx
└── docker-compose.yml # Configuração do ambiente
Instalação do Hugo
Primeiramente, instalamos o Hugo em nosso servidor Debian 12:
sudo apt update && sudo apt install hugo -y
Para verificar a instalação, rode:
hugo version
Criando o Site Hugo
Agora, criamos o projeto Hugo:
hugo new site /var/www/html/blog
cd /var/www/html/blog
Escolhemos um tema do site oficial e adicionamos como submódulo Git:
git init
git submodule add https://github.com/rhazdon/hugo-theme-hello-friend-ng.git themes/hello-friend-ng
Definimos o tema no arquivo config.toml:
theme = "hello-friend-ng"
Copiamos os arquivos de exemplo do tema:
cp -r themes/hello-friend-ng/exampleSite/* .
Criamos um post de exemplo:
hugo new posts/meu-primeiro-post.md
Editamos o arquivo content/posts/meu-primeiro-post.md e removemos a linha draft: true para que o post seja publicado.
Geramos os arquivos estáticos:
hugo
Isso criará os arquivos na pasta public/.
Configurando o Nginx com Docker
Criamos um Dockerfile para o Nginx:
FROM nginx:latest
COPY public /usr/share/nginx/html
Criamos um docker-compose.yml para orquestrar os contêineres:
version: '3'
services:
blog:
build: .
container_name: hugo_blog
restart: always
ports:
- "8080:80"
volumes:
- ./public:/usr/share/nginx/html
https-portal:
image: steveltn/https-portal:1
container_name: ssl_proxy
restart: always
ports:
- "80:80"
- "443:443"
environment:
DOMAINS: 'henrique.hgbsoft.com.br -> http://blog:80'
STAGE: 'production'
volumes:
- ssl_certs:/var/lib/https-portal
volumes:
ssl_certs:
Agora, construímos e iniciamos os contêineres:
docker-compose up -d --build
O site estará acessível via https://henrique.hgbsoft.com.br com SSL ativo.
Conclusão
Neste guia, instalamos o Hugo, criamos um site estático, servimos os arquivos via Nginx dentro de um contêiner Docker e protegemos o site com SSL via https-portal. Essa abordagem garante segurança e facilidade na manutenção do site. 🚀