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:
- Git (installiert und konfiguriert)
- Terminal-Zugang und Grundkenntnisse
- Forgejo-Account auf forge.sebatec.eu
- Static Site Generator (Hugo, Jekyll, Astro, Publii, 11ty oder MkDocs)
- Grundverständnis, wie dein SSG funktioniert
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
- Im Forgejo-Repository: Settings → Secrets
- Neues Secret anlegen:
DEPLOY_KEY - 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:
HS_USER: Dein Hostsharing-BenutzernameRSYNC_DEST: Zielverzeichnis (z.B.xyz00.hostsharing.net:doms/example.com/htdocs-ssl/)
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:
- Checkout: Repository auschecken
- Setup: Hugo und SSH einrichten (via setup-hugo und setup-ssh)
- Build: Static Site generieren (
make build) - 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
- Prüf die Variable in den Repository-Settings
SSH-Authentifizierung schlägt fehl
- Prüf, ob
DEPLOY_KEYkorrekt hinterlegt ist - Prüf, ob
ssh_known_hosts-Datei im Repository liegt
Build schlägt fehl
- Test lokal:
make build - Prüf die Hugo-Version in
.hugo-version
Dateien landen im falschen Verzeichnis
- rsync verhält sich unterschiedlich je nach Trailing Slash
- Mit Slash (
/pfad/): Nur Inhalt wird ins Ziel kopiert - Ohne Slash (
/pfad): Verzeichnis selbst wird kopiert - Bei Hostsharing:
RSYNC_DESTimmer mit/abschließen
Mehr Hilfe im Forge-Wiki.
Ressourcen
- Demo-Repository – Beispiel-Code
- Forge-Wiki – Detaillierte Doku
- Actions-Übersicht – Wiederverwendbare Komponenten
Feedback
Fragen oder Verbesserungen? Nutze das Kontaktformular auf sebatec.eu.