2026-07-28 19:25:53 +02:00
2026-07-28 19:20:11 +02:00
2026-07-28 19:25:53 +02:00
2026-07-28 19:20:11 +02:00
2026-07-28 19:20:11 +02:00
2026-07-28 19:20:11 +02:00
2026-07-28 19:20:11 +02:00
2026-07-28 19:20:11 +02:00
2026-07-28 19:20:11 +02:00
2026-07-28 19:20:11 +02:00
2026-07-28 19:20:11 +02:00

motorradclub-giebelwald.de

Static website of the Motorradclub Giebelwald e.V., built with Hugo.

Migrated from WordPress in July 2026 — see MIGRATION.md.

Requirements

Hugo 0.164.0. The non-extended build is sufficient: the site uses plain CSS, no Sass.

Local development

hugo server -D      # http://localhost:1313
hugo --gc --minify  # production build into public/

Editing content

Everything lives in Markdown under content/, edited via git (locally or in Gitea's web editor).

Add a news post

Create content/aktuelles/<slug>/index.md:

---
title: "30. O-Fahrt 2027"
date: 2027-01-15T10:00:00Z
tags: ["O-Fahrt"]
featured: "titelbild.jpg"
---

Text …

{{< gallery "bild1.jpg" "bild2.jpg" >}}

Drop the images into the same folder. featured picks the teaser image; without it the first image in the folder is used.

Add or change a Termin

Edit data/termine.yaml. Newest year is shown expanded, older years collapse:

"2027":
  - date: "06.02.2027\n18:30"
    description: "Jahreshauptversammlung\nSängerheim Niederndorf"

Members / In Erinnerung

data/members.yaml and data/memoriam.yaml. Images go in assets/img/.

Downloads

Put the PDF in static/dokumente/ and link it from content/downloads.md:

{{< pdf "satzung.pdf" "Unsere Satzung" >}}

Shortcodes

Shortcode Purpose
{{< gallery "a.jpg" "b.jpg" >}} Thumbnail grid; no arguments = all images in the bundle
{{< figure "bild.jpg" "Bildunterschrift" >}} Single image with caption
{{< pdf "datei.pdf" "Titel" >}} Download link with file size

Deployment

.gitea/workflows/deploy.yml builds with Hugo and rsyncs public/ over SSH.

  • Push to main → deploys to mcg.luxick.de
  • Manual Run workflow with environment: production → deploys to motorradclub-giebelwald.de
  • Pull requests are built but never published

Required secrets

Set these in the Gitea repository settings:

Secret Example
SSH_PRIVATE_KEY Deploy key with write access to the webroot
SSH_KNOWN_HOSTS Output of ssh-keyscan <host>
DEPLOY_HOST server.example.de
DEPLOY_USER www-deploy
DEPLOY_PATH_DEV /var/www/mcg-dev
DEPLOY_PATH_PROD /var/www/mcg

rsync runs with --delete, so each DEPLOY_PATH_* must point at a directory owned solely by this site. The workflow refuses to deploy if the path is unset, too shallow, or if the build produced no index.html.

Migration tooling

tools/ holds the one-shot WordPress importer, kept so the import stays reproducible and reviewable. It is not part of the build.

python tools/fetch_media.py       # download uploads from the live WP host
python tools/build_data.py        # termine / members / memoriam
python tools/wp2hugo.py           # content bundles (won't overwrite; --force to do so)
python tools/verify_migration.py  # inventory + link checks (run after `hugo`)

Requires Python 3.11+ and Pillow.

S
Description
No description provided
Readme 48 MiB
Languages
HTML 48.3%
CSS 34.3%
Shell 17.4%