# site

Die Chaospott Seite mit Blog, zu finden auf
[chaospott.de](https://chaospott.de), ist mit Jekyll und Bootstrap gemacht.

## Initialisierung

Für die Seite benötigt ihr Ruby 3 inkl. Headern und Bundler.

Unter Debian, Ubuntu etc systemweit installieren:

```sh
apt install ruby3.0 ruby3.0-dev bundler
```

Dann die Gems lokal:

```sh
bundle config set --local path 'vendor/cache'
bundle install
```

## Lokale Entwicklung

Um die lokale Installation von Jekyll zu nutzen:

```sh
bundle exec jekyll serve
```

## Blogeinträge

### Text

Blogeinträge werden in dem Verzeichnis `_posts` abgelegt.
Um einen Blogeintrag zu verfassen legt man eine Datei mit dem Schema `Jahr-MM-TT-Titel.md` an.
Der Blogeintrag beginnt mit folgenden Metadaten:

```text
layout: post
title: "Neues Update für DocPatch"
date: 2015-05-23 13:37:00
categories: docpatch
```

Damit wird der Titel des Blogeintrags, das Datum der Veröffentlichung und die Kategorie (optional) festgelegt.

#### Troobleshooting fürs NOC

Sollte der Blogeintrag nicht in den nächsten Minuten auf der Webseite erscheinen muss ein  manueller Pull von */_posts ausgeführt werden.

### Bilder

Bilder für Blogeinträge werden unterhalb von Media in einem eigenen Verzeichnis (Jahr-MM-TT) abgelegt: `~/site/media/jahr-mm-tt`

Als erstes sollte man die Exif-Daten (z.B. Geoinformation) der Bilder entfernen. Dabei wird auch die „Rotation“ des Bildes entfernt.

```sh
exiftool -all= $Bild
```

Ggf. muss das Bild gedreht werden, wenn es ohne die Metatags auf dem Kopf steht oder auf der Seite liegt.

```sh
convert -rotate 90 $Bild $Bild_out.jpg
```

Der vorletzte Schritt setzt die Bilder auf eine einheitliche Breite.

```sh
mogrify -resize "1140>" $Bild
```

Viele Bilder können noch optimiert werden, damit der benötige Speicherplatz und die zu übertragende Datenmenge reduziert wird.

```sh
jpegoptim -m 80 %Bild.jpg
```

Wenn das Bild in der korrekten Größe und Ausrichtung vorliegt, kann es wie folgt eingebunden werden:

```text
![Quelle: Chaospott]({{ "/media/Jahr-MM-TT/$Bild.jpg" | absolute_url }})
```

### Web Key Directory (GPG/PGP-Keys zur Suche ablegen)

Um, neben [keys.openpgp.org](https://keys.openpgp.org/), den eigenen Chaospott-GPG-Key über das WKD-Protokoll verfügbar zu machen, gehe wie folgt vor:

1. Clone das Repo.

2. Im Repo geh in den Ordner `.well-known/openpgpkey/hu`.

3. Folgendes Skript exportiert deinen öffentlichen Schlüssel in eine Datei, die den Namen deines WKD-Hashes trägt. Dieses wird zur Suche nach deinem GPG-Key benutzt.

```sh
# Deine Mailadresse hier eintragen.
MAILADRESSE=name@chaospott.de

# Dieses danach im o.g. Ordner ausführen.
gpg --no-armor --export "$MAILADRESSE" > $(gpg --with-wkd-hash --fingerprint "$MAILADRESSE" | egrep "[ ]{14}[0-9a-z]{32}@chaospott\.de" | sed 's/ //g;s/@chaospott\.de//')
```

4. Füge es zum git hinzu, commite und pushe.

## Link-Check

```sh
find _posts -mindepth 2 -type f -name '20*' -exec grep -oHP 'https?://[^])# ]+' {} + | sed -E 's/:https?:\/\//|https:\/\//; s/:http:\/\//|http:\/\//' | sed 's+/$++g' | sort -u | while IFS='|' read -r file link; do http_status=$(curl -I --max-time 5 -s "$link" | head -1 | grep -oP 'HTTP\S* \K\d+'); [ "$http_status" = "200" ] && continue; printf "%s\t%s\t%s\n" "$http_status" "$file" "$link"; done | tee link_status.txt
```
