Blog pessoal feito com Jekyll e hospedado no GitHub Pages, usando o tema Mundana, da WowThemes.
Com Docker (sem instalar nada na máquina):
docker compose up # -> http://localhost:4000Com Ruby instalado (3.0+):
bundle install
bundle exec jekyll serve # -> http://localhost:4000O Gemfile.lock não é versionado de propósito: a gem github-pages fixa todas
as dependências na mesma versão que o GitHub Pages usa, então um bundle install
limpo reproduz o ambiente de produção.
O GitHub Pages compila a branch master automaticamente a cada push; não há
workflow do Actions para manter. O site é servido em:
https://dav1app.github.io/blog/
O _config.yml precisa corresponder ao endereço onde o site é servido:
url: 'https://dav1app.github.io' # esquema + domínio
baseurl: '/blog' # subcaminho, '' na raiz de um domíniobaseurl é um caminho, não uma URL. Colocar uma URL completa nele quebra
todos os links internos — esse era o bug original aqui.
- Registre o domínio e aponte o DNS para o GitHub Pages (registros
Apara os quatro IPs do Pages, ou um registroCNAMEparadav1app.github.io). - Crie um arquivo
CNAMEna raiz do repositório contendo apenas o domínio. - Ajuste
url:parahttps://o-dominioebaseurl:para''.
Faça o passo 1 primeiro. Um CNAME apontando para um domínio sem registros DNS
faz o Pages redirecionar o site para um endereço que não resolve, o que tira o
blog do ar — foi exatamente o que aconteceu aqui.
Há um modelo pronto em _templates/post.markdown
com todo o front matter comentado. Copie e renomeie:
cp _templates/post.markdown _posts/$(date +%F)-meu-slug.markdown_templates/ começa com _ e não é uma pasta conhecida do Jekyll, então é
ignorada na build — o modelo nunca vai para o ar.
O front matter mínimo é:
---
layout: post
title: "Título do post"
image: /assets/images/alguma-imagem.png
categories: [linux, redes]
tags: [debian, vpn]
---layout: post e author: davi são aplicados automaticamente pelo bloco
defaults: do _config.yml, então podem ser omitidos.
categoriesetagsalimentam/categories.htmle/tags.html. Posts sem nenhum dos dois simplesmente não aparecem nessas páginas.- A tag
featuredcoloca o post na barra lateral da home; a tagstickyfixa o post em um destaque no topo da home.
O site é escrito em português (lang: pt-BR). As datas são renderizadas pelo
include _includes/data-pt.html, porque o filtro date do Liquid não tem
suporte a locale e sempre emite os meses em inglês.