Caddy als Reverse-Proxy einrichten

Caddy als Reverse-Proxy einrichten
Page content

Ich nutze einige Dienste via Docker mit einem Port-Binding. Um einfacher auf die Dienste zugreifen zu können, habe ich mir DNS Einträge angelegt . Vor ca. einem Jahr bin ich von Nginx zu Caddy gewechselt. Mein primäres Ziel war es, einfach mal Caddy auszuprobieren und kennenzulernen. Am Rande erwähnt: Es gibt einige Funktionen wie automatisches SSL mit Let’s encrypt sind sehr praktisch.

Installation

Für die Installation unter Debian habe ich mich an offiziellen Anleitung orientiert. Man kann zwischen Stable und Testing Releases wählen. Ich habe mich für das Stable Release entschieden.

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

Konfiguration

Caddy kann sowohl über eine Konfigurationsdatei als auch Kommandozeile konfiguriert werden. Persönlich bevorzuge ich die Konfigurationsdatei. Ich kann mir aber gut vorstellen, dass die kommandozeile für Managed Services und Automatisierung ganz interessant sein kann.

Wichtig: Um das zu testen, müssen eine Anwendung über euren Port erreichbar und ein DNS-Eintrag vorhanden sein. Bei mir ist das Flame-Dashboard über Docker und Port ‘5005’ erreichbar.

# Bearbeiten der Konfigurationsdatei
$ nano /etc/caddy/Caddyfile

# In der Datei die folgenden Zeilen hinzufügen
dashboard.lan {                 # Hostname
  reverse_proxy 127.0.0.1:5005  # Die Ziel-Adresse
  tls internal                  # Caddy Internes SSL-Zertifikat verwenden
}

# Neustart des Dienstes, damit die Konfiguration angewendet wird
$ systemctl restart caddy

Die Zeile tls internal besagt, dass für diesen Endpunkt (hier: https://dashboard.lan) ein internes SSL-Zertifikat von Caddy ausgeliefert wird. Man kann genauso gut das Zertifikat von Let’s Encrypt nutzen oder eigene Zertifikate hinterlegen. Der Einfachheit halber nutze ich hier das Zertifikat von Caddy.

Mit diesen 3 Zeilen ist eure Konfiguration vollständig und ihr könnt auf die Webseite zugreifen. Schauen wir uns das in nachfolgendem Screenshot etwas genauer an:

Das Dashboard wurde mittels Reverse-Proxy und DNS im Browser aufgerufen

Das Dashboard wurde mittels Reverse-Proxy und DNS im Browser aufgerufen

In der Adresszeile sehen wir die eingetragene Adresse, welche korrekt von Caddy aufgelöst wurde. Das Zertifikat habe ich ebenfalls in dem Screenshot erfasst. Wie man hier sieht, handelt es sich um das Caddy-Interne Zertifikat (erkennbar am Common Name (CN)).

Fazit

Wie ihr sehen könnt, ist ein Reverse-Proxy mit Caddy sehr schnell umgesetzt. Persönlich finde ich die Konfiguration einfacher zu benutzen als bei Nginx. Wie ist eure Erfahrung mit Caddy oder welche Software nutzt ihr als Reverse-Proxy?


Bildnachweis: Pixabay.com