Diese Anleitung zeigt, wie man eine simple HTML-Webseite aus einem Github Repository direkt auf einen (ökologischen und solidarischen) Webspace bei Uberspace übertragen kann. Mit jedem Push in das Repository wird die Webseite dann automatisch auf den eigenen Webspace übertragen und aktualisiert.
- Diese Methode ist gegenüber der Nutzung von Github Pages vorteilhaft da Nutzer/innen die Webseite ohne den Besuch des USA-Github-Servers nutzen können (Stichwort „zerschlagenes Privacy Shield“).
- Das Tutorial ist für das Betriebssystem Mac OSX erstellt, falls es jemand für Windows anpassen möchte, sehr gerne (Beitrag steht unter CC0 Public Domain – ich verlinke hier gerne dann das Tutorial.)
- Warnung: Diese Github Action überschreibt und löscht Dateien auf dem Uberspace, die nicht im Github Repository vorkommen – bitte mit Vorsicht benutzen oder in einem Unterordner testen. 🙂
Inhaltsverzeichnis
- 1. SSH Schlüssel-Paar (SSH Keys) auf dem eigenen Rechner erzeugen
- 2. Github Actions Skript erstellen
- 3. User, Host, privaten Schlüssel in den Github Repository Secrets eintragen
- 4. Öffentlichen Schlüssel bei uberspace hinterlegen
- 5. Testen
- 6. Wichtig: Keys löschen / sicher abspeichern
1. SSH Schlüssel-Paar (SSH Keys) auf dem eigenen Rechner erzeugen
Es ist egal, wo man die SSH Keys erzeugt, dies muss nicht auf dem Uberspace geschehen.
In diesem Beispiel erzeugen wir das Key-Paar lokal. Mit „-f“ gibt man an, wie der Dateiname für das Schlüsselpaar heißen soll.
Im Mac-Terminal einen neuen Ordner erstellen, bspw. im Ordner Dokumente (kann später gelöscht werden):
cd ~/Documents
mkdir neuer-ordner-fuer-sshkeys
cd neuer-ordner-fuer-sshkeys
In diesem Ordner kann nun ein Schlüsselpaar erzeugt werden:
ssh-keygen -f neuerKeyFuerGithub -t ed25519 -a 100
Wenn die Eingabe für ein Passwort erscheint, einfach leer lassen und Enter drücken (das Passwort für einen SSH Key ist optional, mehr Informationen z.B. hier).
Mit „ls -l“ kann man sich anzeigen lassen, was generiert wurde im Ordner:
ls -l
-rw------- 1 user staff 419 7 Feb 11:43 neuerKeyFuerGithub
-rw-r--r-- 1 user staff 111 7 Feb 11:43 neuerKeyFuerGithub.pub
2. Github Actions Skript erstellen
Um Github Actions zu nutzen, muss die Datei „main.yml“ in .github/workflows erzeugt werden im Repository. Wir nutzen hierfür burnett01/rsync-deployments, hier ein simples Beispiel:
# /.github/workflows/main.yml
# Warning: deletes all files on uberspace which are not in repo, use without --delete if unsure
on:
push:
# master for old repos, main is the new standard
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: rsync deployments
uses: burnett01/rsync-deployments@6.0.0
with:
switches: -avzr --delete
path: /
remote_path: /home/${{ secrets.UBERSPACE_USER }}/html/
remote_host: ${{ secrets.UBERSPACE_HOST }}
remote_user: ${{ secrets.UBERSPACE_USER }}
remote_key: ${{ secrets.DEPLOY_KEY_PRIVATE }}
Der Pfad ist der lokale Pfad im Repository, der remote_path kann auch auf einen Unterordner bei Uberspace eingestellt werden.
Die Optionen (switches) für rsync kann man sich u.a. mit diesem Online-Tool anschauen.
3. User, Host, privaten Schlüssel in den Github Repository Secrets eintragen
Nun müssen wir den Wert für secrects.DEPLOY_KEY_PRIVATE im Repository abspeichern auf github.com. Hierfür müssen wir den lokal erzeugten privaten Schlüssel kopieren:
Mit „cat“ kann man einen Dateiinhalt anzeigen lassen, der private Schlüssel ist ohne die Endung .pub:
cat neuerKeyFuerGithub
Den angezeigten Text komplett nun in die Github Repository Settings einfügen, der Name ist „DEPLOY_KEY_PRIVATE“:
Danach muss noch der Wert für „UBERSPACE_USER“ und „UBERSPACE_HOST“ hinterlegt werden, diese findet man im Uberspace Dashboard heraus (Host ohne „.“ am Ende eintragen):
Die zwei Werte genau wie zuvor den DEPLOY_KEY_PRIVATE eintragen:
4. Öffentlichen Schlüssel bei uberspace hinterlegen
Nun müssen wir uns mit SSH noch auf dem Uberspace verbinden, um dort den öffentlichen Schlüssel (Key) mit .pub am Ende zu hinterlegen (Wenn dir das SSH-Terminal nicht liegt, kannst du dich auch mit Filezilla oder Cyberduck verbinden).
Der Schlüssel kann ebenso wieder mit „cat“ angezeigt und kopiert werden:
cat neuerKeyFuerGithub.pub
Mit dem Uberspace verbinden, die Daten haben wir oben bereits im Dashboard herausgefunden:
ssh UBERSPACEUSER@UBERSPACEHOST
Evtl. musst du noch ein SSH-Passwort setzen, falls du dies noch nicht gemacht hast (Bei Uberspace hat man ein Passwort für das Web-Dashboard und ein separates Passwort für den SSH-Zugang):
Nach dem Verbinden wechseln wir in das .ssh-Verzeichnis des Uberspace-Users:
cd ~/.ssh/
ls -l
Du solltest folgende Ausgabe sehen (falls nicht muss SSH evtl. noch am Server eingerichtet werden, mehr Informationen in den Uberspace-Docs):
[XXXXXXXsg@carpo .ssh]$ ls -l
total 4
-rw-------. 1 XXUBERSPACEUSERXX XXUBERSPACEUSERXX 542 Feb 7 11:47 authorized_keys
Die Datei mit dem Editor nano öffnen:
nano authorized_keys
Eine neue Zeile anlegen und den Wert von „cat neuerKeyFuerGithub.pub“ einfügen. Mit „#“ können Kommentare angelegt werden, um später zu wissen, welcher Key das ist:
Mit „STRG + O“ speichern und den Vorgang mit Enter bestätigen. Mit „STRG + X“ den Editor verlassen.
Hinweis bzgl. Sicherheit: Auf Twitter wurde ich darauf aufmerksam gemacht, dass man den SSH-Zugriff auf den Befehl rsync sowie ein bestimmtes Verzeichnis einschränken kann. Der Hinweis findet sich hier. Vielen Dank an den Hinweisgeber!
5. Testen
Im Repository eine Änderung commiten und pushen, im Github Actions Tab nachschauen ob alles erfolgreich war:
6. Wichtig: Keys löschen / sicher abspeichern
Jede*r der auf die private Schlüssel-Datei Zugriff hat, kann sich auch mit dem Uberspace Webspace verbinden. Also am besten von der Festplatte löschen und in einem Passwort-Manager oder einem passwortgeschützen Ordner ablegen.
Lizenz des Artikels: CC0, Beitragsbild: https://www.rawpixel.com/image/440042/irregular-galaxy / Public Domain / rawpixel, Original by NASA
Anregungen, Feedback, kritische Hinweise gerne in die Kommentare oder einen Tweet als WebMention verlinken. Besten Dank!
Schreibe einen Kommentar