141 lines
3.4 KiB
Markdown
141 lines
3.4 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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:
|
|
|
|
```json
|
|
[
|
|
{"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
|
|
|
|
```bash
|
|
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:
|
|
|
|
```ini
|
|
[webhook]
|
|
ALLOWED_HOST_LIST = private
|
|
```
|
|
|
|
### Netzwerk
|
|
|
|
Forgejo und Coolify sind beide im Docker-Netzwerk `coolify` und kommunizieren intern uber `10.0.1.5:8080`.
|