Staging: https://staging.x-hain.de
Production: https://www.x-hain.de
The required Hugo version is pinned in the .hvm file. This ensures local development and CI use the same version.
- Check Linux instructions
sudo snap install hugoNote: snap might install a different version than specified in .hvm file.
# Install brew (if not already installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install Hugo
brew install hugoNote: Homebrew only installs the latest version, which can be a different version than specified in .hvm file.
- Check Windows instructions
# Using Chocolatey
choco install hugo-extended
# Using Scoop
scoop install hugo-extendedNote: choco / scoop might install a different version than specified in .hvm file.
This is useful to be sure that the build locally will behave the same later, in CI pipeline and online.
We will be using hvm (Hugo Version Manager), which works on Linux, macOS and Windows.
- Install the executable
Download a prebuilt binary or install from source (requires Go 1.26.3 or later):
# Install brew (if not already installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install dependencies
brew install go
# Install hvm
go install github.com/jmooring/hvm@latest- Linux / macOS (bash or fish can also be used):
# Add to your shell (zsh)
hvm gen alias zsh >> ~/.zshrc
source ~/.zshrc
Windows:
# Add to your shell (zsh)
hvm gen alias powershell --help
# Follow instructions from output
Finally, run hugo!
# hvm will automatically download and use the version from .hvm
hugo versionMore info? see https://tsalikis.blog/posts/switching_hugo_versions/
This site currently does not use an external Hugo theme. The templates and
assets live in this repository under layouts/, assets/, and static/.
If we add or update a theme in the future, prefer Hugo Modules over Git submodules:
- Hugo Modules: https://gohugo.io/hugo-modules/use-modules/
- Theme components and precedence: https://gohugo.io/hugo-modules/theme-components/
- Updating module versions: https://gohugo.io/commands/hugo_mod_get/
- Template lookup and overrides: https://gohugo.io/templates/lookup-order/
Recommended workflow:
- Create a branch.
- Import the theme as a Hugo Module and commit the generated
go.modandgo.sum. - Keep local overrides in this repository instead of editing vendored theme files directly.
- Run
hugo mod get -u <module-path>for updates, thenhugo mod tidy. - Build with the pinned Hugo version and check generated language links, RSS, sitemap alternates, and CI warnings.
-
Run hugo to generate HTML:
hugo -
Run hugo for local development:
hugo server --config config.tomlor
hugo server --config config.toml -w --cleanDestinationDir
-
create new post (using archetypes):
hugo new de/post/YYYY-MM-DD_title.de.md -k postor
hugo new en/post/YYYY-MM-DD_title.en.md -k post -
just edit new post in the "content"-folder
Dead links are automatically checked on pull requests. To run locally:
# Build the site first
hugo -d public_html --config config.toml --cleanDestinationDir
# Check for broken links (via Docker)
docker run --rm -v "$PWD:/src" -w /src ghcr.io/untitaker/hyperlink:0.2.0 \
public_html --sources .
# Or install natively and run
npm install -g @untitaker/hyperlink
hyperlink public_html/ --sources .See hyperlink documentation for more options.
The calendar is managed by Nextcloud.