Git + Markdown = Blog
Check the live demo
A blog generator that keeps things simple:
With many features:
From zero to a live blog.
You can see the full setup of a working blog here.
For this tutorial we assume you'll use Github to host your repo and Cloudflare Pages to host your blog. You need to have account on those platforms as a prerequisite.
Create a repo, add a folder of your first section, add a Markdown file in it for your first blog post.
Use a draft/ folder to save posts that are not ready for publication.
Non Markdown files and common irrelevant content is ignored by default, e.g. .github/, README.md, LICENSE.md.
Add a .github/workflows/publish.yaml file to your repo with the following content:
name: Publish Blog
on:
push:
branches: [ main ]
jobs:
build-and-publish:
runs-on: ubuntu-latest
steps:
- uses: docker://henritel/gitblog2
with:
args: post-css cloudflare-pages
env:
SOURCE_REPO: https://github.com/${{ github.repository }}
URL_BASE: <YOUR_BLOG_URL>
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
Set URL_BASE with your blog's base url.
This will automatically publish your blog on Cloudflare Pages when you push changes to your repo.
It assumes your cloudflare project is named blog but if that's not the case you can add an CLOUDFLARE_PROJECT env to the workflow with the correponding name.
In your repo's settings, go under secrets/actions to set the CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN secrets based on your Cloudflare API keys.
pip install gitblog2
From the command line:
gitblog2 https://codeberg.org/HenriTEL/gitblog2.git --repo-subdir=example --url-base=https://example.com
From the library:
from gitblog2 import GitBlog
source_repo = "https://codeberg.org/HenriTEL/git-blog.git"
output_dir = "./www"
url_base = "https://example.com"
with GitBlog(source_repo, repo_subdir="example") as gb:
gb.write_blog(output_dir, url_base=url_base)
From the container:
docker run --rm -v $PWD/www:/www \
-e SOURCE_REPO=https://codeberg.org/HenriTEL/gitblog2.git \
-e REPO_SUBDIR=example \
-e URL_BASE=https://example.com \
henritel/gitblog2
Gitblog2 just produces static file so it should easily integrate with the stack you're familiar with (cron jobs, commit hooks, nginx, Apache, you name it.).
Make sure to have poetry installed, then
Setup your local web server:
wget "https://redbean.dev/redbean-tiny-2.2.com" -O redbean.zip
zip redbean.zip -j providers/assets/.init.lua
chmod +x redbean.zip
In one terminal, update the blog as needed:
poetry run gitblog2 -l debug --repo-subdir=example --base-url=https://example.com
In another terminal, serve the blog:
./redbean.zip -D ./www
Content type
Image
Digest
sha256:285e2268b…
Size
107.6 MB
Last updated
over 2 years ago
docker pull henritel/gitblog2