Tachyons und Caddy
Ernesto Rico Schmidt
14. Februar 2021

Obwohl diese Seite, und ihre Schwesterseite auf spanisch, kaum neue Inhalte im letzten Jahr bekommen haben, habe ich, noch im Vorjahr, beschlossen zum Jahresbeginn beide neu zu gestalten und etwas zu ändern, was kaum erkennbar — und hoffentlich auch nicht spürbar — ist.

Funktionale bzw. utility-first CSS

Adam Wathan, der Autor von Tailwind, hat einen sehr interessanten Artikel über die Überlegungen geschrieben, die ihm zur Entwicklung von Tailwind geführt haben: CSS Utility Classes and “Separation of Concerns”. Tailwind ist eins der bekanntesten Vertreter der so genannten funktionale CSS.

Die Grundidee hat mir vom Anfang an besser gefallen als alle CSS-Frameworks.

Tachyons

Tachyons wird im Ausblick vom Adam Wathans Artikel als Startpunkt genannt für diejenigen, die sich für die Idee dahinter interessieren.

Das Navigationselement von https://denklab.org ist zum Beispiel so beschrieben:

<nav class="pa3">
  <div class="tc pb3">
    <a class="link dim gray f6 f5-ns dib mr3"
       href="/"
       title="Startseite">Startseite</a>
    <a class="link dim gray f6 f5-ns dib mr3"
       href="/blog/"
       title="Blog">Blog</a>
    <a class="link dim gray f6 f5-ns dib mr3"
       href="/fragmente/"
       title="Fragmente">Fragmente</a>
    <a class="link dim green f6 f5-ns underline-hover dib"
       href="https://rico-schmidt.name/"
       title="rico-schmidt.name"
       target="_blank">rico-schmidt</a>
  </div>
</nav>

Alle diese Klassen sind beliebig kombinierbar und haben keinen Effekt auf andere Elemente, denn sie betreffen jeweils nur eine Eigenschaft vom Element.

Caddy

Caddy ist ein Webserver, der in der Programmiersprache Go geschrieben ist und dadurch besonders effizient sein soll.

Die Konfiguration ist der Hauptgrund, der mich dazu bewogen hat ihn auszuprobieren.

Ein weiterer Grund ist die unglaublich einfache und fast magische Unterstützung von SSL durch Zertifikate vom Let´s Encrypt.

Bisher habe ich Certbot verwendet, um die SSL-Zertifikate von Let´s Encrypt zu erhalten bzw. zu erneuern. Das bedeutete: alle ca. 90 Tage nginx kurz stoppen, certbot renew aufrufen und nginx wieder starten.

Im Unterschied dazu: An Tag der Umstellung brauchte ich nur Caddy mit folgender Konfiguration zu starten.

denklab.org {
    root * /var/www/denklab.org/html
    file_server
    encode zstd gzip
    handle_errors {
        rewrite * /{http.error.status_code}.html
        file_server
    }
    log {
        format json
        output file /var/log/caddy/denklab.org.json.log {
            roll_size 10mb
        }
    }
}

Ich muss mich nie wieder um die Erneuerung der SSL-Zertifikate kümmern.

Die Logs werden default-mäßig in JSON geschrieben. Ich verwende vom Anfang an GoAccess, um diese auszuwerten. So habe ich Anfang Februar 2021 ein einfaches Kommando mit jq verwendet um die Logs zu konvertieren, so dass GoAccess sie auswerten kann.

Aber das hat mir die Idee für das perfekte Miniprojekt mit Rust geliefert: Caddy2GoAccess.