HGV Vereinsseite - Hugo Static Site
Find a file
2026-02-11 17:55:15 +00:00
content content/_index.md aktualisiert 2026-02-11 17:55:15 +00:00
data Initial Hugo site structure 2026-02-11 15:01:42 +00:00
layouts Initial Hugo site structure 2026-02-11 15:01:42 +00:00
static/css Initial Hugo site structure 2026-02-11 15:01:42 +00:00
.gitignore Initial Hugo site structure 2026-02-11 15:01:42 +00:00
config.toml Fix: remove empty theme setting 2026-02-11 16:17:40 +00:00
Dockerfile Initial Hugo site structure 2026-02-11 15:01:42 +00:00
README.md Dokumentation: Architektur, Content-Pflege und Infrastruktur 2026-02-11 17:06:54 +00:00

HGV Website — Heimat- und Gartenverein Brunkgarten

Hugo Static Site mit automatischem Deploy via Forgejo + Coolify.

Architektur

/opt/hgv-website/     Lokales Arbeitsverzeichnis
       |
       | git push
       v
Forgejo (git.brunk-garten.de)
       |
       | Webhook (Push-Event)
       v
Coolify (Build + Deploy)
       |
       | Docker: Hugo build -> Nginx serve
       v
https://hgv.brunk-garten.de/

Projektstruktur

├── config.toml              # Hugo-Konfiguration
├── Dockerfile               # Multi-stage Build (Hugo -> Nginx)
├── content/
│   ├── _index.md            # Startseite
│   ├── verein/
│   │   └── _index.md        # Vereinsinfo
│   └── mitglieder/
│       └── _index.md        # Mitgliederliste (layout: members)
├── data/
│   └── members.json         # Mitgliederdaten (dynamisch via n8n)
├── layouts/
│   ├── _default/
│   │   ├── baseof.html      # Basis-Template
│   │   ├── single.html      # Einzelseiten
│   │   └── list.html        # Listenseiten
│   ├── index.html           # Homepage
│   └── mitglieder/
│       └── members.html     # Mitgliederliste-Template
└── static/
    └── css/
        └── style.css

Content bearbeiten

Markdown-Dateien unter content/ bearbeiten, committen und pushen:

cd /opt/hgv-website
# Datei bearbeiten...
git add -A && git commit -m "Beschreibung" && git push

Nach dem Push baut Coolify die Seite automatisch neu (ca. 30 Sekunden).

Neue Seite anlegen

mkdir -p content/neuer-bereich
cat > content/neuer-bereich/_index.md << 'EOF'
---
title: "Seitentitel"
menu: "main"
weight: 3
---

Inhalt in Markdown.
EOF
  • menu: "main" — Seite erscheint in der Navigation
  • weight — Reihenfolge in der Navigation (niedriger = weiter links)

Mitgliederdaten aktualisieren

Die Datei data/members.json enthält die Mitgliederliste als JSON-Array:

[
  {"name": "Max Mustermann", "rolle": "Vorsitzender", "seit": "2020"},
  {"name": "Erika Muster", "rolle": "Stellvertreterin", "seit": "2021"}
]

Diese Datei kann manuell oder automatisch via n8n aktualisiert werden.

Build

Lokal testen

cd /opt/hgv-website
docker build -t hgv-test . && docker run --rm -p 8080:80 hgv-test
# -> http://localhost:8080

Dockerfile

Multi-stage Build:

  1. hugomods/hugo:latest — baut die Site mit hugo --minify
  2. nginx:alpine — served die statischen Dateien aus /public

Infrastruktur

Forgejo

  • URL: https://git.brunk-garten.de
  • Repo: DanielBrunk/hgv-website
  • Branch: main
  • SSH-Port: 22222

Coolify

  • Application: "HGV Website" (UUID: r4ccogg8k4sks0c8w4wk4o84)
  • Build Pack: Dockerfile
  • Domain: hgv.brunk-garten.de

Webhook (Auto-Deploy)

Forgejo sendet bei jedem Push an main einen Webhook an Coolify:

  • Typ: Forgejo
  • URL: http://10.0.1.5:8080/webhooks/source/gitea/events/manual
  • Authentifizierung: HMAC SHA256 mit Gitea Webhook Secret (in Coolify gesetzt)
  • Events: Push

Damit Forgejo Webhooks an Docker-interne IPs senden kann, ist in der Forgejo-Config (/data/gitea/conf/app.ini) folgendes gesetzt:

[webhook]
ALLOWED_HOST_LIST = private

Netzwerk

Forgejo und Coolify sind beide im Docker-Netzwerk coolify und kommunizieren intern uber 10.0.1.5:8080.