Select Page

Webserver? Caddy bitte! Danke!

by | Jun 3, 2024 | Technology

Hin und wieder gibt es einfach Software, die Probleme erschreckend gut löst: Der Webserver Caddy – eine in Go geschriebene Plattform, die mit ihrem HTTP-Server alle Standardfälle im täglichen Betrieb abdeckt – ist ein gutes Beispiel dafür.

 

Install Caddy auf Ubuntu (Noble)

Die Installation ist hier dokumentiert, und ich lege noch einen DNS-Record an. Die Konfiguration in /etc/caddy/Caddyfile passe ich entsprechend an:

caddy1.mhein.net-dump.de {
  root * /usr/share/caddy
  file_server
}

Caddy verwendet in diesem Beispiel ein ‘configuration format for humans’, das einer menschlicheren Sprachsemantik folgt. Intern verwendet Caddy JSON für seine Konfiguration und entsprechende Adapter für andere Formate.

Durch die Angabe des Hosts und nach einem Neustart erhalte ich ein Let’s Encrypt Production-Zertifikat und ein SSLLabs ‘A’ Rating. Das bedeutet: TLS 1.3, TLS_AES_256_GCM_SHA384 oder TLS_CHACHA20_POLY1305_SHA256, OCSP stapling und eine valide Zertifikatskette.

Also in etwa das, was uns ein Mozilla SSL Configuration Generator vorschlagen würde, inklusive aller Redirects, die ich in der Produktion benötige. In der Dreifaltigkeit von Apache2, HAProxy und Nginx würde ich das nicht unter 100 Zeilen fehlerfreier Konfiguration erreichen.

 

Reverse Proxy

Ich lege einen neuen DNS-Record an, packe ein paar Security Header mit rein und passe meine Konfiguration folgendermaßen an:

caddy2.mhein.net-dump.de {
  header {
    Permissions-Policy interest-cohort=()
    Strict-Transport-Security max-age=31536000;
    Content-Security-Policy "upgrade-insecure-requests"
    Content-Security-Policy: default-src 'self' caddy2.mhein.net-dump.de;
  }

 reverse_proxy 127.0.0.1:8080
}

Ich erhalte wieder Auto-TLS und einen perfekten Reverse Proxy. Durch korrekte Downstream-Header und WebSocket-Streaming als Standardeinstellung kann ich (nahezu) jede Applikation ohne Anpassung betreiben. Der HSTS-Header mit einer Dauer von einem Jahr verschafft mir jetzt ein ‘A+’ Rating und theoretisch die Erlaubnis, den Preload-Listen der Browserhersteller beizutreten.

 

PHP FastCGI Proxy

TL;DR – So schaut’s dann aus:

caddy3.mhein.net-dump.de {
  root * /var/www/html
  php_fastcgi localhost:9000
  # php_fastcgi unix//run/php/phpfpm.sock
}

Das reicht dann z.B. schon aus, um ein WordPress oder Icinga Web dahinter zu betreiben.

 

Fazit

Ich muss gestehen, dass ich von der grandiosen Leichtigkeit sehr angetan bin. Für mich bedeutet das in der Praxis, dass ich mich mehr um die ‘Sonderfälle’ kümmern kann, anstatt um die Standards. Dadurch funktionieren komplizierte Web-Deployments im Team deutlich besser und Fehlerquellen werden reduziert. Viele der Features habe ich noch gar nicht erwähnt, z.B. das Clustern von Caddys und das Speichern der Zertifikate in Redis oder Consul für Ingress-Cluster, Prometheus-Exporter, Live-Reload, On-The-Fly-API etc.

Wir haben hier eine Vielzahl von Apaches, Nginxen und HAProxies im Einsatz. Jeder davon hat seine Berechtigung und funktioniert sehr gut. Daher freue ich mich über etwas Frische und neue Motivation, um in passenden Fällen Gutes noch besser bereitstellen zu können. Für jeden, der auch nur im Entferntesten etwas mit Webservern zu tun hat: Unbedingt antesten!

 

Marius Hein
Marius Hein
Head of IT Service Management

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert und viele Jahre in der Softwareentwicklung gearbeitet. Mittlerweile ist er Herr über die interne IT und als Leiter von ITSM zuständig für die technische Schnittmenge der Abteilungen der NETWAYS Gruppe. Wenn er nicht gerade IPv6 IPSec Tunnel bohrt, sitzt er daheim am Schlagzeug und treibt seine Nachbarn in den Wahnsinn.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

More posts on the topic Technology

Open Source VMware Alternativen für Deine IT-Infrastruktur

Der 22. November 2023 war ein Mittwoch wie jeder andere, doch dann ging es wie ein Paukenschlag durch die Presse: Broadcom Inc. [...] today announced that it has completed its acquisition of VMware, Inc. Da war sie also, die Nachricht, die alle erwartet haben und noch...

End of Life von CentOS Linux 7 – Was bedeutet das für mich?

Der ein oder andere Admin wird sich vermutlich schon lange den 30. Juni 2024 im Kalender vorgemerkt haben, denn dann ist für CentOS Linux 7 das "End of Life" erreicht. Aber auch Benutzer von Red Hat Enterprise Linux 7 sollten sich Gedanken machen, denn auch dieses...

Kibana Sicherheits-Updates: CVSS:Critical

Und täglich grüßt das Murmeltier. Nein nicht ganz. Heute ist es  aus der Elastic Stack Werkzeugkiste Kibana, für das es ein wichtiges Sicherheits-Update gibt. Es besteht auf jeden Fall Handlungsbedarf! IMHO auch wenn ihr die "Reporting" Funktion deaktiviert habt. Der...