Was du hier lernst

Diese Seite zeigt dir, wie du eine Static Site mit sebaTEC Forge deployst. Du brauchst grundlegende Terminal-Kenntnisse und willst deine erste Site automatisiert veröffentlichen.

Der Quelltext liegt im Demo-Repository. Die Anleitung nutzt Hugo, funktioniert aber analog für Jekyll, Astro, Publii, 11ty und MkDocs.

Voraussetzungen

Du brauchst:

Anleitung

1. SSH-Konfiguration

Für sicheres Deployment brauchst du einen SSH-Key.

SSH-Key generieren

Falls noch nicht vorhanden, generiere einen Key. Befehl aus setup-ssh:

cd $(mktemp -d)
ssh-keygen -t ed25519 -C 'forgejo action your-username/your-repo' -f id_ed25519

SSH-Keyscan durchführen

Wichtig: Erstelle die Known-Host-Datei und prüfe die Server-Authentizität:

ssh-keyscan -H xyz00.hostsharing.net | tee -a ssh_known_hosts

Fingerprint bestätigen:

ssh-keygen -lf ssh_known_hosts | grep 'SHA256:ABC'

Vergleiche den angezeigten SHA256-Fingerprint mit der offiziellen Dokumentation von Hostsharing.

SSH-Key als Secret hinterlegen

  1. Im Forgejo-Repository: Settings → Secrets
  2. Neues Secret anlegen: DEPLOY_KEY
  3. Inhalt des privaten SSH-Keys einfügen (z.B. ~/.ssh/deploy_key)

Alternativ: upload-secret.sh Skript aus dem Demo-Repository nutzen.

2. Variablen definieren

In Forgejo unter Settings → Variables legst du an:

Achtung: rsync ist pingelig mit Trailing Slashes. Mit Slash am Ende (/pfad/) wird nur der Inhalt kopiert, ohne Slash (/pfad) das Verzeichnis selbst. Bei Hostsharing immer mit / abschließen.

Der Workflow nutzt diese Variablen. Beispiel-Konfiguration im Makefile.

3. Build und Deploy

Lokaler Build (optional)

Test den Build lokal:

make build

Forgejo-Workflow

Der Workflow in .forgejo/workflows/deploy.yaml läuft automatisch:

  1. Checkout: Repository auschecken
  2. Setup: Hugo und SSH einrichten (via setup-hugo und setup-ssh)
  3. Build: Static Site generieren (make build)
  4. Deploy: Dateien per rsync hochladen (make publish)

Mehr zu den Actions: forge.sebatec.eu/actions.

4. Deployment starten

Push in den main-Branch startet den Workflow:

git add .
git commit -m "Deploy website"
git push origin main

Workflow-Status in der Forgejo-UI unter Actions prüfen.

Troubleshooting

RSYNC_DEST nicht definiert

SSH-Authentifizierung schlägt fehl

Build schlägt fehl

Dateien landen im falschen Verzeichnis

Mehr Hilfe im Forge-Wiki.

Ressourcen

Feedback

Fragen oder Verbesserungen? Nutze das Kontaktformular auf sebatec.eu.