Ein detaillierter Leitfaden für Entwickler – inklusive Schritt-für-Schritt-Anleitung und Tipps für mehr Effizienz. Schau Dir an, wie Du mit GitHub Actions ein automatisches SSH-Deployment auf Deinen Mittwald Webspace einrichten kannst.
Worum geht es in diesem Artikel?
Falls du regelmäßig Änderungen an deiner Website (z. B. einem statischen HTML-Projekt) vornimmst und diese schnell sowie sicher auf deinen Mittwald-Webspace übertragen möchtest, dann ist dieser Artikel genau das Richtige für dich.
Denn hier lernst du, wie du mit GitHub Actions ein vollautomatisiertes Deployment einrichtest, sodass jeder git push deine Änderungen direkt live schaltet – ohne manuelles FTP-Hochladen und ohne Sicherheitsrisiken.
Was du am Ende erreichen wirst:
- Kein lästiges Hochladen per FTP mehr – GitHub übernimmt das Deployment für dich.
- Schnellere Updates, weil nur geänderte Dateien übertragen werden (
rsync). - Mehr Sicherheit, da SSH-Schlüssel anstelle von Passwörtern verwendet werden.
- Volle Kontrolle, weil jede Änderung in Git nachverfolgbar ist.
Was du dafür benötigst:
- Ein GitHub-Repository, in dem dein Projekt liegt.
- Einen Mittwald-Webspace mit SSH-Zugang.
- Grundlegende Kenntnisse in Git, SSH und YAML (falls nicht, keine Sorge – wir erklären alles verständlich).
Warum solltest du GitHub Actions + SSH nutzen?
| Vorteil | Warum das wichtig ist |
|---|---|
| Vollständige Automatisierung | Du musst nie wieder manuell Dateien hochladen, weil GitHub Actions das Deployment übernimmt, sobald du Änderungen pushst. |
| Höhere Sicherheit | Statt unsicherer Passwörter wird ein SSH-Schlüssel verwendet, der verschlüsselt in GitHub Secrets gespeichert wird. |
| Schnellere Übertragung | Dank rsync werden nur die geänderten Dateien übertragen, was Zeit und Bandbreite spart. |
| Bessere Nachverfolgbarkeit | Jede Änderung ist in Git dokumentiert, sodass du jederzeit nachvollziehen kannst, was wann deployed wurde. |
| Wiederholbare Prozesse | Gleiche Umgebung für Entwicklung und Live-System, was Fehler reduziert. |
Wichtig für Einsteiger: Falls du noch unsicher bist, probiere zunächst die offizielle Mittwald-Git-Integration aus, bevor du diesen Workflow einrichtest.
Schritt-für-Schritt-Anleitung für Experten
1. SSH-Zugang auf Mittwald vorbereiten
Bevor du den Workflow einrichtest, musst du sicherstellen, dass GitHub Actions sich per SSH mit deinem Mittwald-Server verbinden kann.
1.1 Einen SSH-Schlüssel generieren (lokal auf deinem Rechner)
Öffne ein Terminal und führe folgenden Befehl aus:
ssh-keygen -t ed25519 -C "deploy@deine-domain.de"Bash- Speichere den Schlüssel unter
.ssh/id_ed25519(privater Schlüssel) und.ssh/id_ed25519.pub(öffentlicher Schlüssel). - Verwende keine Passphrase, weil GitHub Actions diese nicht eingeben kann.
1.2 Den öffentlichen Schlüssel auf Mittwald hochladen
- Kopiere den öffentlichen Schlüssel in deine Zwischenablage:
cat ~/.ssh/id_ed25519.pub | pbcopy # Mac # Oder unter Linux: cat ~/.ssh/id_ed25519.pub | xclip -selection clipboard - Logge dich in dein Mittwald-Kundenmenü ein und gehe zu: „SSH-Zugang“ → „Öffentlichen Schlüssel hinzufügen“.
- Füge den kopierten Schlüssel ein und speichere die Änderungen.
1.3 Known Hosts für GitHub Actions vorbereiten
Damit GitHub Actions den Mittwald-Server als vertrauenswürdig erkennt, musst du den Host-Fingerprint hinterlegen:
ssh-keyscan ssh.mittwald-server.info >> ~/.ssh/known_hostsBash- Kopiere den Inhalt der
known_hosts-Datei, denn du wirst ihn später als GitHub Secret benötigen.
2. GitHub-Repository für das Deployment vorbereiten
Jetzt richtest du dein Repository so ein, dass GitHub Actions auf die notwendigen Daten zugreifen kann – aber natürlich sicher!
2.1 GitHub Secrets hinterlegen
- Gehe in deinem Repository zu: „Settings“ → „Secrets“ → „Actions“ → „New repository secret“.
- Füge folgende Secrets hinzu:
SSH_PRIVATE_KEY→ Inhalt deines privaten SSH-Schlüssels (cat ~/.ssh/id_ed25519).KNOWN_HOSTS→ Inhalt derknown_hosts-Datei, den du zuvor kopiert hast.
2.2 .gitignore anpassen, um sensible Dateien auszuschließen
Einige Dateien sollten NIEMALS auf den Live-Server deployed werden, weil sie sensible Daten enthalten oder unnötig sind. Füge daher folgende Einträge zu deiner .gitignore hinzu:
# Git- und GitHub-spezifische Dateien
.git/
.github/
# Node.js-Abhängigkeiten (falls nicht benötigt)
node_modules/
# Umgebungsvariablen und Konfigurationen
.env3. Den GitHub Actions Workflow erstellen
Jetzt kommt der wichtigste Teil: Die Workflow-Datei, die das Deployment automatisiert.
3.1 Workflow-Datei anlegen
Erstelle einen neuen Ordner und eine neue Datei in deinem Repository:
.github/workflows/deploy-via-ssh.ymlBash3.2 Workflow-Konfiguration (YAML) einfügen
Kopiere folgenden Code und passe ihn an deine Bedürfnisse an:
name: Deploy to Mittwald via SSH
# Der Workflow wird ausgelöst, sobald du auf den main-Branch pushst
on:
push:
branches: [ "main" ]
jobs:
deploy:
runs-on: ubuntu-latest # Die Umgebung, in der der Workflow läuft
steps:
# 1. Schritt: Repository auschecken
- name: Checkout Repository
uses: actions/checkout@v4
# 2. Schritt: SSH-Schlüssel einrichten
- name: Install SSH Key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_PRIVATE_KEY }} # Der private Schlüssel aus den Secrets
known_hosts: ${{ secrets.KNOWN_HOSTS }} # Der Host-Fingerprint
# 3. Schritt: Dateien per rsync auf den Server übertragen
- name: Deploy via rsync
run: |
# WICHTIG: Passe diesen Pfad an deinen Mittwald-Webspace an!
REMOTE_PATH="/kunden/123456_789/webseiten/deine-domain.de/html/"
# rsync überträgt nur geänderte Dateien und löscht nicht mehr benötigte
rsync -avz --delete \
--exclude='.git/' \
--exclude='.github/' \
--exclude='node_modules/' \
--exclude='wp-config.php' \
./ user123456@ssh.mittwald-server.info:$REMOTE_PATHYAML3.3 Wichtige Anpassungen, die du vornehmen musst
| Parameter | Was du ändern musst | Beispiel |
|---|---|---|
REMOTE_PATH | Der Pfad zu deinem Webspace (findest du im Mittwald-Kundenmenü unter „Webspace“). | /kunden/123456_789/webseiten/meine-seite.de/html/ |
user123456 | Dein Mittwald-Benutzername (z. B. u123456-789). | u765432-1 |
--exclude | Dateien/Ordner, die nicht deployed werden sollen. | --exclude='composer.json' |
4. Workflow testen und Fehler beheben
Jetzt ist es Zeit, den Workflow zu testen!
4.1 Eine Test-Änderung pushen
Führe folgende Befehle aus, um den Workflow zu triggern:
git add .
git commit -m "Test: Deployment per GitHub Actions"
git push origin mainBash4.2 Logs prüfen und Fehler analysieren
- Gehe in deinem Repository zu „Actions“ und klicke auf den aktuellen Workflow-Run.
- Typische Fehler und ihre Lösungen:
| Fehlermeldung | Mögliche Ursache | Lösung |
|---|---|---|
Permission denied (publickey) | SSH-Schlüssel oder Benutzername falsch. | Prüfe, ob der private Schlüssel korrekt in GitHub Secrets hinterlegt ist. |
Host key verification failed | KNOWN_HOSTS fehlt oder ist falsch. | Lade den Fingerprint neu hoch und prüfe die Formatierung. |
rsync: failed to set permissions | Berechtigungen auf dem Server falsch. | Führe chmod 755 /pfad/zu/html auf dem Server aus. |
Build-Schritt vor dem Deployment (für Node.js, Composer etc.)
Falls dein Projekt Abhängigkeiten hat, die vor dem Deployment gebündelt werden müssen (z. B. mit npm, composer oder webpack), füge einen Build-Schritt hinzu:
- name: Install dependencies and build
run: |
npm install
npm run build # Oder: composer install
- name: Deploy built files
run: rsync -avz --delete ./dist/ user123456@ssh.mittwald-server.info:$REMOTE_PATHYAMLBenachrichtigungen bei Fehlern (Slack, E-Mail)
Damit du sofort informiert wirst, falls das Deployment scheitert, kannst du Slack- oder E-Mail-Benachrichtigungen einrichten:
- name: Notify on failure
if: failure() # Nur ausführen, wenn der Workflow fehlschlägt
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
SLACK_MESSAGE: "❌ Deployment fehlgeschlagen! 🚨"
SLACK_TITLE: "Fehler beim Deployment"YAMLFazit: Warum sich der Aufwand lohnt
Mit diesem GitHub Actions Workflow hast du nun ein vollautomatisiertes, sicheres und schnelles Deployment-System, das:
- Zeit spart, weil du keine Dateien mehr manuell hochladen musst.
- Fehler reduziert, da jeder Schritt nachvollziehbar ist.
- Skalierbar ist – egal, ob du WordPress, eine statische Seite oder eine Custom-Applikation betreibst.
Was könntest du als Nächstes tun?
- CI/CD erweitern (z. B. mit automatischen Tests vor dem Deployment).
- Mehrere Umgebungen einrichten (z. B. Staging und Produktion).
- Backups automatisieren (z. B. mit
wp db exportvor jedem Deployment).
Nützliche Ressourcen & Weiterführende Links
- GitHub: Deploying with GitHub Actions
- Wie aktiviere und nutze ich SSH bei mittwald?
- rsync Manual (GNU) – Für fortgeschrittene Synchronisationsoptionen
Fragen oder Probleme?
Falls etwas nicht wie erwartet funktioniert oder du Anpassungen benötigst, hinterlasse einfach einen Kommentar oder öffne ein Issue auf GitHub. Ich helfe gern weiter! 🚀
Letzte Aktualisierung: Oktober 2024
Hinweis: Dieser Artikel wird regelmäßig aktualisiert, um neue Best Practices und Sicherheitsstandards abzubilden.