You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

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:

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.