Blog

Die Webseite ist statisch und über HUGO mit dem Theme Introduction erstellt.

Bei jedem push auf den master-Branch wird auf GitHub ein Webhook auf eine URL auf meinem Server losgelassen. Um diese abzusichern ist sowohl der hook selbst mit einem Secret versehen, als auch die URL auf die er seine Anfrage ausführt ziemlich kryptisch.

Dafür hört Webhookdienst selbst nur auf 127.0.0.1 zu, was durch ein Override-File der SystemD-Unit (via systemctl edit webhook.service) funktioniert:

[Service]
ExecStart=
ExecStart=/usr/bin/webhook -nopanic -ip 127.0.0.1 -verbose -hooks /etc/webhook.conf

Und hier noch der ausschnitt aus der Apache2-Config:

ProxyPass /hooks/cryptic-long-str http://localhost:9000/hooks/website-redeploy
ProxyPassReverse /hooks/cryptic-long-str http://localhost:9000/hooks/website-redeploy

Um die GitHub Webhooks auf dem Server zu verarbeiten verwendet die Webseite das Tool adnanh/webhook mit der folgenden Config (/etc/webhook.conf):

[
    {
        "command-working-directory": "/opt/projects/christian.heusel.eu/",
        "execute-command": "/usr/bin/sudo",
        "id": "website-redeploy",
        "pass-arguments-to-command": [
            {
                "name": "/opt/projects/christian.heusel.eu/update.sh",
                "source": "string"
            }
        ],
        "response-message": "website update started",
        "trigger-rule": {
            "match": {
                "parameter": {
                    "name": "X-Hub-Signature",
                    "source": "header"
                },
                "secret": "<redacted>",
                "type": "payload-hash-sha1"
            }
        }
    }
]

Da diese Webseite auf GitHub liegt, kümmert sich dieses kleine Skript um das Updaten des Repositories und das Regenerieren der HTML-Files:

#!/bin/bash -
git pull --rebase
hugo