# 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](https://kollegen.uber.space/gitea/kollegenrunde/kollegen-posts.git). 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](https://kollegen.uber.space/gitea/org/kollegenrunde/teams/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]. Wenn das aktuelle Hugo-Relase 0.76.4 ist, gilt für Linux: >$ wget https://github.com/gohugoio/hugo/releases/download/v0.76.4/hugo_0.76.4_Linux-64bit.tar.gz > ... > hugo_0.76.4_Linux-64bit.tar. 100%[============================================>] 13,31M 1,54MB/s in 25s > 2020-10-13 21:09:43 (547 KB/s) - »hugo_0.76.4_Linux-64bit.tar.gz« gespeichert [13953675/13953675] > >$ tar -xvf hugo_0.76.4_Linux-64bit.tar.gz --directory hugo >$ rm hugo_0.76.4_Linux-64bit.tar.gz Nach erfolgreicher Installation sollte Hugo seine Version ausgeben können: >$ hugo/hugo version > Hugo Static Site Generator v0.76.4-50DFE40B linux/amd64 BuildDate: 2020-10-12T08:36:20Z ### 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 ~]$ **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 die beiden Repositories kollegen-hugo und kollegen-posts anzulegen. **Hugo** wird ebenfalls wie im Lab beschrieben installiert: (https://lab.uberspace.de/guide_hugo.html). Es wird lediglich ~/bin/hugo benötigt. >[kollegen@despina ~]$ ~/bin/hugo version Hugo Static Site Generator v0.74.3-DA0437B4 linux/amd64 BuildDate: 2020-07-23T16:22:34Z 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 **Gitea-Hook** 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 ebenfalls im admin-Verzeichnis von kollegen-hugo gepfelgt. Die Aktivierung kann entweder mit der Gitea-Webkonsole oder auf dem Server erfolgen. ***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/ In der Web-Konsole von Gitea kann man nun sehen, dass die post-receive-Hooks aktiv sind (grüner Punkt), s. (https://kollegen.uber.space/gitea/kollegenrunde/kollegen-hugo/settings/hooks/git) bzw. (https://kollegen.uber.space/gitea/kollegenrunde/kollegen-posts/settings/hooks/git).