Hugo is a fast static site generator, written in Go.
It turns Markdown + templates + config into a static website.
Use the extended build if you process SCSS (this theme does):
1# binary
2curl -L https://github.com/gohugoio/hugo/releases/download/v0.154.3/hugo_extended_0.154.3_linux-amd64.tar.gz | tar -xz
3sudo mv hugo /usr/local/bin/hugo
4
5# or snap
6sudo snap install hugo
You also need Dart Sass and Node/npm for SCSS + PostCSS.
1hugo new site myblog
2cd myblog
1hugo new posts/first-post.md # draft: true by default
1hugo server -D # dev server, include drafts
2hugo # build into public/
3hugo --gc # build + garbage-collect cache
4hugo --minify -e production # production build
1content/ source markdown
2layouts/ templates (override the theme)
3static/ files copied as-is (images, favicons)
4data/ site data (.yaml/.json/.toml)
5config/ configuration (hugo.yaml, params, menus)
6public/ generated site (gitignored)
1---
2title: "First Post"
3date: 2026-01-01T00:00:00+02:00
4draft: true
5---
6
7Content.
layouts/_default/single.html, list.html, baseof.htmllayouts/.{{ partial "name" . }}1{{ .Title }} {{ .Content }} {{ .Params.custom }}
2{{ range ... }} {{ if ... }} {{ with ... }}
3{{ resources.Get "x" | minify | fingerprint }}
1hugo mod get -u ./... # update modules
2hugo mod tidy
3hugo mod graph # list the module graph
_index.md = section page; index.md = leaf bundle page.draft: true pages only appear with hugo server -D../-relative image paths resolve against static/, not the content bundle.