No description
  • Shell 44.7%
  • Astro 41%
  • CSS 7.2%
  • TypeScript 5.1%
  • HTML 1.4%
  • Other 0.6%
Find a file
Marcus Jahn 7409542bb6
Erster Stand: Astro + Decap CMS, Forgejo-Backend
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R6xbkFkk6zDM1sc3JJuTof
2026-10-07 20:04:36 +02:00
deploy Erster Stand: Astro + Decap CMS, Forgejo-Backend 2026-10-07 20:04:36 +02:00
public Erster Stand: Astro + Decap CMS, Forgejo-Backend 2026-10-07 20:04:36 +02:00
src Erster Stand: Astro + Decap CMS, Forgejo-Backend 2026-10-07 20:04:36 +02:00
.gitattributes Erster Stand: Astro + Decap CMS, Forgejo-Backend 2026-10-07 20:04:36 +02:00
.gitignore Erster Stand: Astro + Decap CMS, Forgejo-Backend 2026-10-07 20:04:36 +02:00
astro.config.mjs Erster Stand: Astro + Decap CMS, Forgejo-Backend 2026-10-07 20:04:36 +02:00
package-lock.json Erster Stand: Astro + Decap CMS, Forgejo-Backend 2026-10-07 20:04:36 +02:00
package.json Erster Stand: Astro + Decap CMS, Forgejo-Backend 2026-10-07 20:04:36 +02:00
README.md Erster Stand: Astro + Decap CMS, Forgejo-Backend 2026-10-07 20:04:36 +02:00
UEBERGABE.md Erster Stand: Astro + Decap CMS, Forgejo-Backend 2026-10-07 20:04:36 +02:00

Krönchen Con – Website

Statische Website mit Astro und Redaktionsoberfläche mit Decap CMS. Kein WordPress, keine Plugins, keine Datenbank.

Redaktion (/admin/)  ──speichert──▶  Git-Repo (Forgejo)  ──deploy.sh──▶  nginx (statische Dateien)
Entwickler (Editor)  ──git push──▶

Repo: https://git.kroenchencon.de/RRE/kroenchencon-site

Wo liegt was?

Was Datei / Ordner Im CMS unter
Banner, Startseitentexte src/data/startseite.json Einstellungen → Startseite
Logo, Navigation, Footer src/data/allgemein.json Einstellungen → Allgemein
Programmpunkte src/content/programm/*.md Programm
Sponsoren src/content/sponsoren/*.md Sponsoren
Impressum, Kontakt, … src/content/seiten/*.md Seiten
Bilder public/uploads/ (Medien-Upload im CMS)
Schriften public/fonts/ –
Aussehen src/styles/global.css, src/components/*.astro – (nur per Code)

Faustregel: Inhalte ändert die Redaktion im CMS. Aussehen und Aufbau ändert man im Code.

Lokal entwickeln

npm install
npm run dev            # http://localhost:4321

CMS lokal testen (ohne Forgejo-Login): in public/admin/config.yml local_backend: true setzen, dann in einem zweiten Terminal npm run cms und http://localhost:4321/admin/ öffnen.

Einmalige Einrichtung

1. Bilder übernehmen

Schriften liegen schon in public/fonts/. Die Bilder holst du einmalig vom WordPress-Server (nur WebP/JPG/PNG, ohne die von WordPress erzeugten Zwischengrößen außer denen, die du nutzt):

rsync -av --include='*/' --include='*.webp' --include='*.jpg' --include='*.png' --exclude='*' \
  root@kroenchen-con-web:/var/www/kroenchen/wp-content/uploads/ public/uploads/

Die Pfade in den Inhalten lauten dann /uploads/<dateiname>, genau wie auf der alten Seite (dort /wp-content/uploads/<dateiname>).

2. Forgejo (git.kroenchencon.de)

  1. Organisation RRE, Repo kroenchencon-site (öffentlich) anlegen und diesen Ordner pushen.
  2. Website-Administration → Integrationen → Anwendungen → OAuth2-Anwendung erstellen
    • Name: Krönchen Con CMS
    • Weiterleitungs-URI: https://kroenchencon.de/admin/
    • „Vertraulicher Client" NICHT anhaken (Decap nutzt PKCE)
  3. Client-ID in public/admin/config.yml bei app_id eintragen.
  4. Redakteure als Mitglieder mit Schreibrecht auf das Repo hinzufügen (Registrierung ist abgeschaltet – Konten legt der Admin an).

CORS für kroenchencon.de ist in /etc/forgejo/app.ini ([cors]) bereits aktiv.

3. Webserver-LXC

apt install nginx git nodejs npm
useradd -r -m -d /opt/kroenchencon deploy
chmod 755 /opt/kroenchencon                    # nginx muss lesen dürfen
install -o deploy -m 755 deploy/deploy.sh /opt/kroenchencon/deploy.sh

cp deploy/nginx-kroenchencon.conf /etc/nginx/sites-available/kroenchencon
ln -s /etc/nginx/sites-available/kroenchencon /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

cp deploy/kroenchencon-deploy.{service,timer} /etc/systemd/system/
systemctl daemon-reload
systemctl enable --now kroenchencon-deploy.timer
sudo -u deploy /opt/kroenchencon/deploy.sh    # erster Build

Das Deploy-Skript prüft alle 2 Minuten, ob es neue Commits gibt, baut dann neu und schaltet atomar um. Die letzten 5 Stände bleiben liegen – Rollback:

ls -1t /opt/kroenchencon/releases/
ln -sfn /opt/kroenchencon/releases/<alter-stand> /opt/kroenchencon/live

TLS übernimmt der vorgeschaltete Reverse Proxy (Caddy) oder certbot direkt auf nginx.

Für die Redaktion (Kurzanleitung)

  1. https://kroenchencon.de/admin/ öffnen → Anmelden (Forgejo-Konto)
  2. Links den Bereich wählen (Startseite, Programm, Sponsoren, Seiten)
  3. Ändern → Veröffentlichen
  4. Nach ca. 2–3 Minuten ist die Änderung auf der Website sichtbar.

Jede Änderung ist im Git-Verlauf nachvollziehbar und kann zurückgenommen werden.