Statische Astro-Website für Termine, externe Anmeldungen und Bildergalerien der Buslfurs-Community.
Vor dem öffentlichen Start: Beispieltermine, Gruppentexte, Impressum, Datenschutz, Domain und Kubernetes-Platzhalter ersetzen.
Voraussetzungen: Node.js 22 und npm.
npm install
npm run devQualitätsprüfung:
npm test
npm run buildDie Produktionsausgabe liegt anschließend in dist/.
Jeder Termin ist eine Markdown-Datei unter src/content/events/. Die vorhandenen Beispieldateien zeigen alle wichtigen Felder.
---
title: "Sommer-Stammtisch"
slug: "sommer-stammtisch"
summary: "Kurze Beschreibung für die Terminübersicht."
start: 2026-08-22T17:00:00+02:00
end: 2026-08-22T22:00:00+02:00
location: "Name des Treffpunkts"
mapUrl: "https://www.openstreetmap.org/..."
registrationUrl: "https://anmeldung.example.org/..."
registrationDeadline: 2026-08-20T23:59:00+02:00
status: "open"
galleries:
- label: "Galerie von Furryname"
url: "https://galerie.example.org/..."
photographer: "Furryname"
---Erlaubte Statuswerte sind open, full, closed und cancelled. mapUrl, Anmeldung, Anmeldeschluss, Bild und Galerien sind optional. Die Website hostet keine Galeriebilder, sondern ausschließlich die angegebenen externen Links.
Events werden in der Zeitzone Europe/Berlin nach ihrem Endzeitpunkt automatisch in kommende und vergangene Termine aufgeteilt. Der tägliche GitHub-Workflow baut die Site neu, damit die Einordnung aktuell bleibt.
brand/logo-original.pngist das unveränderte, nicht öffentlich ausgelieferte Original.public/logo.pngist eine verkleinerte, eng zugeschnittene Webfassung.public/favicon.pngist die kompakte Browser-Icon-Variante.- Das Original nicht überschreiben. Neue Exportvarianten erhalten eigene Dateinamen.
docker build --build-arg SITE_URL=https://brusler-furs.de -t buslfurs-web .
docker run --rm -p 8080:8080 buslfurs-webDer Health-Endpunkt liegt unter /healthz.
Der Publish-Workflow benötigt:
- ein GitHub-Repository mit Actions-Berechtigung
Read and write permissions, - optional die Repository-Variable
SITE_URL, falls die voreingestellte URLhttps://brusler-furs.deüberschrieben werden soll, - ein nach dem ersten Build auf public gestelltes GHCR-Package,
- Erlaubnis für den Actions-Bot, das Production-Overlay auf
mainzu aktualisieren.
Bei geschütztem main sollte statt des direkten Pushs eine Ausnahme für github-actions[bot] oder ein separater Deployment-Branch konfiguriert werden.
Vor dem ersten Rollout anpassen:
- bei einem Domainwechsel den Host
brusler-furs.deindeploy/overlays/production/kustomization.yaml - bei Bedarf Traefik-Certificate-Resolver
letsencryptindeploy/base/ingress.yaml - initialen Image-Namen
ghcr.io/OWNER/REPOSITORY
Manifest prüfen:
kustomize build deploy/overlays/productionDer GitOps-Controller muss deploy/overlays/production beobachten. GitHub Actions schreibt nach jedem erfolgreichen Image-Build den unveränderlichen Image-Tag in dieses Overlay.
Das Staging-Overlay veröffentlicht dieselbe Site ohne Zugangsschutz unter https://staging.brusler-furs.de. Der Response-Header X-Robots-Tag: noindex, nofollow, noarchive verhindert, dass Suchmaschinen die temporäre Umgebung indexieren oder archivieren.
Manifest prüfen:
kustomize build deploy/overlays/stagingDer GitOps-Controller kann zusätzlich deploy/overlays/staging beobachten. Der Publish-Workflow aktualisiert Production und Staging auf denselben unveränderlichen Image-Tag.