Heutzutage ist eine sichere Verbindung über HTTPS für den Betrieb einer Webseite unerlässlich. Ohne diese Verschlüsselung könnten sensible Nutzerdaten ungeschützt im Internet übertragen werden. Um dieses Risiko zu minimieren, greifen viele Linux-Webmaster auf Tools wie LetsEncrypt zurück, die die Erstellung von Zertifikaten erleichtern. Trotz der Vereinfachung durch LetsEncrypt kann die Aktivierung auf Servern mit Nginx oder Apache unter Linux immer noch kompliziert sein. Glücklicherweise gibt es eine komfortablere Lösung: den Caddy-Webserver. Dieser Server aktiviert HTTPS standardmäßig, wodurch die üblichen Probleme mit SSL-Zertifikaten entfallen.
Installation von Caddy
Die Installation des Caddy-Webservers verläuft unabhängig vom verwendeten Serverbetriebssystem sehr ähnlich. Die Benutzerfreundlichkeit der Installation ist auf die Entscheidung der Entwickler zurückzuführen, ein Bash-Skript zum Herunterladen und Installieren der Software zu verwenden. So entfällt das Hinzufügen von Software-Repositories oder die Installation über Binärdateien.
In diesem Tutorial wird der Ubuntu Server als Beispiel verwendet, wobei der Caddy-Webserver auf den meisten anderen Linux-Distributionen, einschließlich Desktop-Systemen, problemlos funktioniert. Zunächst muss das Curl-Programm auf dem Linux-Rechner installiert sein. Falls nicht, kann es über den Paketmanager installiert werden.
Hinweis: Ob Curl bereits installiert ist, lässt sich durch Ausführen des Befehls `curl` im Terminal überprüfen. Erscheint die Hilfeseite, ist Curl bereits vorhanden.
curl https://getcaddy.com | bash -s personal
Die private Nutzung von Caddy ist kostenlos. Falls Caddy jedoch in einer kommerziellen Umgebung eingesetzt werden soll, muss der Installationsbefehl angepasst werden:
curl https://getcaddy.com | bash -s commercial
Der Befehl führt das Skript über die Bash aus und startet den Installationsprozess automatisch. Das Caddy-Installationsprogramm lädt die Binärdatei des Webservers herunter und platziert sie im Verzeichnis `/usr/local/bin/`. Bei erfolgreicher Installation erscheint die Meldung „Successfully Installed“.
Nach der Installation müssen die Rechte der Caddy-Binärdatei angepasst werden. Führen Sie folgenden Befehl im Terminal mit sudo-Rechten aus:
sudo setcap cap_net_bind_service=+ep /usr/local/bin/caddy
Konfiguration von Caddy
Nach der Installation muss Caddy konfiguriert werden, insbesondere die Verzeichnisstruktur. Um dies zu beschleunigen, ist es sinnvoll, im Root-Terminal zu arbeiten, um nicht für jeden Befehl `sudo` gefolgt vom Passwort eingeben zu müssen.
Auf den meisten Systemen kann man sich direkt als Root-Benutzer anmelden:
su
Auf Ubuntu-Servern ist das Root-Konto aus Sicherheitsgründen jedoch gesperrt. Man erhält eine Root-Shell über:
sudo -s
Sobald der Root-Zugriff gegeben ist, können die benötigten Verzeichnisse für den Caddy-Server erstellt werden:
mkdir /etc/caddy mkdir /etc/ssl/caddy
Hinweis: Sollte bereits ein Verzeichnis `/var/www/` existieren, kann der letzte `mkdir`-Befehl übersprungen werden.
mkdir /var/www
Als Nächstes wird eine neue „Caddyfile“ im Ordner `/etc/caddy/` erstellt:
touch /etc/caddy/Caddyfile
Die Rechte für den Unterordner `/etc/ssl/caddy` werden mit dem Befehl `chmod` angepasst:
chmod 0770 /etc/ssl/caddy
Zuletzt wird das Verzeichnis `/var/www/` dem Benutzer `www-data` zugeordnet:
chown www-data: /var/www
Caddy Systemd-Datei
Die meisten Server, speziell Ubuntu Server, verwenden `systemd` als Init-System. Da der Webserver über ein Bash-Skript installiert wird, muss die systemd-Datei manuell erstellt werden. Zuerst wird eine leere Servicedatei erzeugt:
touch /lib/systemd/system/caddy.service
Diese neue Datei `caddy.service` wird mit folgendem Inhalt befüllt:
[Unit] Description=Caddy HTTP/2-Webserver Documentation=https://caddyserver.com/docs After=network-online.target Wants=network-online.target [Service] Restart=on-failure StartLimitInterval=86400 StartLimitBurst=5 User=www-data Group=www-data ; Von Letsencrypt ausgestellte Zertifikate werden in dieses Verzeichnis geschrieben. Environment=CADDYPATH=/etc/ssl/caddy ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp ExecReload=/bin/kill -USR1 $MAINPID LimitNOFILE=1048576 LimitNPROC=64 PrivateTmp=true PrivateDevices=true ProtectHome=true ProtectSystem=full ReadWriteDirectories=/etc/ssl/caddy ; Die folgenden zusätzlichen Sicherheitsanweisungen funktionieren nur mit systemd v229 oder höher. ; Sie schränken Privilegien, die Caddies erlangen können, weiter ein. Entkommentieren Sie, wenn Sie möchten. ; Beachten Sie, dass Sie möglicherweise Funktionen hinzufügen müssen, die von verwendeten Plugins benötigt werden. ;CapabilityBoundingSet=CAP_NET_BIND_SERVICE ;AmbientCapabilities=CAP_NET_BIND_SERVICE ;NoNewPrivileges=true [Install] WantedBy=multi-user.target
Dieser Codeblock ist umfangreich, daher ist Genauigkeit wichtig. Nach dem Speichern der Änderungen kann die Datei über Strg+X geschlossen werden.
systemctl enable caddy.service systemctl start caddy.service
Nach der Einrichtung von systemd sollte alles bereit sein.
Einrichten von Domains
Vor der eigentlichen Nutzung von Caddy muss dieser konfiguriert werden. Zunächst wird ein Ordner für die Domain erstellt:
Hinweis: „test-domain.org“ muss durch die eigene Domain ersetzt werden.
mkdir -p /var/www/test-domain.org/
Anschließend wird die zuvor erstellte Datei `Caddyfile` bearbeitet:
nano /etc/caddy/Caddyfile
Fügen Sie folgenden Code hinzu, um die neue Domain zu aktivieren:
meine-domain.com { root /var/www/test-domain.org }
Der Caddy-Dienst wird neu gestartet, um die Änderungen zu übernehmen. Danach ist Caddy auf dem Server einsatzbereit.
systemctl restart caddy.service