Dokumentation: Architektur, Content-Pflege und Infrastruktur
This commit is contained in:
parent
4344f958e1
commit
206ead383a
1 changed files with 141 additions and 0 deletions
141
README.md
Normal file
141
README.md
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
# 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`.
|
||||
Loading…
Reference in a new issue