7.2 KiB
kollegen-hugo
Die Kolleenrunden-Website besteht aus statischen Webseiten, die mittels dem Hugo-Framwork generiert werden. Es gibt zwei Repositories: kollegen-posts für die Inhalte der Blog-Beiträge und kollegen-hugo, was die Generierungsgrundlage beinhaltet. Um redaktionell mitzubloggen, benötigt man nur das Posts- Repository. Die Anleitung dazu findet man dort.
Dieses Repository wird für Website-Bearbeitung benötigt, was im Folgenden beschrieben ist.
Lokales Setup
Klappt auf Linux, Windows und Mac. Beschrieben ist es hier für Linux.
Voraussetzungen:
- Installierter git-Client: https://git-scm.com/downloads
- Gitea-User aus dem Owners-Team
Verzeichnis anlegen
Die Installation kann in einem beliebigen Verzeichnis erfolgen, wir nehmen ~/kred und installieren dort das aktuelle Hugo-Release und das kollegen-hugo/Repository, jeweils in ein Unterverzeichnis:
$ mkdir ~/kred
$ cd ~/kred
$ mkdir hugo
Hugo-Release installieren
Das aktuelles hugo-Release für seine Zielplattform findet man auf gitHub: [https://github.com/gohugoio/hugo/releases/latest] (die extended Version wird nicht benötigt).
Wenn das aktuelle Hugo-Relase 0.78.1 ist, gilt für Linux:
$ wget https://github.com/gohugoio/hugo/releases/download/v0.78.1/hugo_0.78.1_Linux-64bit.tar.gz
...
hugo_0.78.1_Linux-64bit.tar. 100%[============================================>] 13,31M 1,54MB/s in 25s
2020-10-13 21:09:43 (547 KB/s) - »hugo_0.78.1_Linux-64bit.tar.gz« gespeichert [13953675/13953675]
$ tar -xvf hugo_0.78.1_Linux-64bit.tar.gz --directory hugo
$ rm hugo_0.78.1_Linux-64bit.tar.gz
Nach erfolgreicher Installation sollte Hugo seine Version ausgeben können:
$ hugo/hugo version
Hugo Static Site Generator v0.78.1-347F2DE6 linux/amd64 BuildDate: 2020-11-05T09:39:06Z
Web-Repository holen
Das Repository wird geklont und installiert sich im Unterverzeichnis:
$ git clone --recurse-submodules https://kollegen.uber.space/gitea/kollegenrunde/kollegen-hugo.git
$ ls kollegen-hugo
archetypes config.toml data layouts LICENSE README.md resources static themes
Als Theme wird Ananke verwendet (wurde einmalig als Submodul eingebunden mit 'git submodule add https://github.com/budparr/gohugo-theme-ananke.git themes/ananke').
Content/Repository holen (Posts)
Für die Post-Bearbeitung und ggf. auch zur Web-Entwicklung benötigt man noch den Content. Dieses Repository wird neben das Web-Repository installiert:
$ git clone https://kollegen.uber.space/gitea/kollegenrunde/kollegen-posts.git
Damit ist das Setup abgeschlossen.
Setup des Servers auf uberspace
Die Pflege des Servers erfolgt über ssh:
$ ssh kollegen@despina.uberspace.de
Password:
...
[kollegen@despina ~]$
Subdomain
Die Seite soll unter der Subdomain kollegenrunde.kollegen.uber.space erreichbar sein (und nicht unter kollegen.uber.space/kollegenrunde). Der Grund liegt darin, dass Hugo problemlos generiert, wenn seine Base-URL kein Unterverzeichnis hat.
Einrichten der Subdomain:
[kollegen@despina ~]$ uberspace web domain add kollegenrunde.kollegen.uber.space
Der Webcontent für diese Subdomain muss in einem gleichnamigen Verzeichnis neben dem html-Verzeichnis liegen. Dieses wird per Skript generate.sh angelegt. Zum einfacheren Zugriff wird einmalig das leere Verzeichnis angelegt und ein symbolischer Link im Home-Verzeichnis erstellt:
[kollegen@despina ~]$ mkdir /var/www/virtual/kollegen/kollegenrunde.kollegen.uber.space
[kollegen@despina ~]$ ln -s /var/www/virtual/kollegen/kollegenrunde.kollegen.uber.space ~/kollegenrunde.kollegen.uber.space
Gitea
Wird im im Lab beschrieben installiert: (https://lab.uberspace.de/guide_gitea.html). Einzige Abweichung ist die Root-Url in der app.ini:
[kollegen@despina ~]$ cat gitea/custom/conf/app.ini | grep ROOT_URL
ROOT_URL = https://%(DOMAIN)s/gitea/
Im Gitea ist die Organisation 'kollegenrunde' mit den beiden Repositories kollegen-hugo und kollegen-posts anzulegen.
Hugo
Wird ebenfalls wie im Lab beschrieben installiert1. Es wird lediglich ~/bin/hugo benötigt.
[kollegen@despina ~]$ wget https://github.com/gohugoio/hugo/releases/download/v0.117.0/hugo_0.117.0_Linux-64bit.tar.gz
[kollegen@despina ~]$ tar -xvf hugo_0.117.0_Linux-64bit.tar.gz hugo
[kollegen@despina ~]$ rm hugo_0.117.0_Linux-64bit.tar.gz
[kollegen@despina ~]$ mv hugo ~/bin/
[kollegen@despina ~]$ hugo version
hugo v0.117.0-b2f0696cad918fb61420a6aff173eb36662b406e linux/amd64 BuildDate=2023-08-07T12:49:48Z VendorInfo=gohugoio
🛈 Hinweis
Hugo wird auf dem Server für die Ausführung der Git-Hooks benötigt.
Das Skript generate.sh zum automatischen Generieren beim git-update muss im Verzeichnis 'kollegengen' liegen. Das Skript ist aus dem Verzeichnis 'admin' des Repositories kollegen-hugo zu kopieren.
[kollegen@despina ~]$ mkdir ~/kollegengen
[kollegen@despina ~]$ git clone https://kollegen.uber.space/gitea/kollegenrunde/kollegen-hugo.git ~/kollegengen/kollegen-hugo
[kollegen@despina ~]$ cp ~/kollegengen/kollegen-hugo/admin/generate.sh ~/kollegengen/
Zur Erfolgskontrolle kann die Website nun generiert und gepublished werden:
[kollegen@despina ~]$ ~/kollegengen/generate.sh
Es sollte die Ausgabe "Ready, Blog created in /var/www/virtual/kollegen/html/kollegenrunde!" erfolgen.
Git-Hook einrichten
Per Hook-Skript post-receive wird das Skript generate.sh nun in das git-update-Event der beiden Repositories eingebunden. Damit wird die Website mit jeden Push neu erzeugt.
Das Hook Skript ist für beide Repositories das gleiche und wird im admin-Verzeichnis von kollegen-hugo gepfelgt. Die Aktivierung erfolgt auf dem Server.
🛈 Hinweis Die Hooks sollte ebenfalls in der Gitea-Webkonsole von kollegen-posts2 bzw. kollegen-hugo3 angezeigt werden, was aber nicht der Fall ist
Serverseitig installiert man das Script durch kopieren in die Hooks (darauf achten, dass die Skripte ausführbar sind - 0775):
[kollegen@despina ~]$ cp ~/kollegengen/kollegen-hugo/admin/post-receive ~/gitea-repositories/kollegenrunde/kollegen-hugo.git/hooks/post-receive.d/
[kollegen@despina ~]$ cp ~/kollegengen/kollegen-hugo/admin/post-receive ~/gitea-repositories/kollegenrunde/kollegen-posts.git/hooks/post-receive.d/
Hinweis: Das Hook-Skript starten das generate.sh mit 'env -i' in einer neuen Umgebung, damit nicht GIT_DIR gesetzt ist (vom ausführenden git). Ansonsten scheitert der pull innerhalb der Skripts.
In der Web-Konsole von Gitea sollte man nun sehen, dass die post-receive-Hooks aktiv sind (grüner Punkt), was aber leider nicht funktioniert :o(
Backup and Restore
Da alles in gitea abgelegt ist, s. Backup dort.