Installation und Konfiguration von Caddy auf Ubuntu 20.04
Caddy ist ein Open-Source-Webserver, der sowohl statische als auch moderne Webanwendungen unterstützt und automatisch HTTPS für alle zugehörigen Domainnamen aktiviert. Entwickelt in Go bietet Caddy leicht verständliche Konfigurationsanweisungen und kann als Webserver, Reverse Proxy oder Load Balancer eingesetzt werden, um Webanwendungen auf Ihrem Server bereitzustellen.
Diese Anleitung führt Sie durch die Installation von Caddy auf Ubuntu 20.04 und zeigt, wie Sie Ihre Webanwendungen sicher bereitstellen.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass folgende Bedingungen erfüllt sind:
- Ein Ubuntu-20.04-Server.
- Ein A-Record für Ihre Domain, der auf die IP-Adresse des Servers verweist.
- SSH-Zugang zum Server als Nicht-Root-Benutzer mit sudo-Rechten.
Caddy installieren
Caddy ist nicht in den Standard-APT-Repositories von Ubuntu 20.04 enthalten. Sie können es entweder aus den Quellpaketen installieren oder das aktuelle Repository auf Ihrem Server einbinden. Befolgen Sie diese Schritte, um das Repository hinzuzufügen und die Anwendung zu installieren:
Fügen Sie den Caddy GPG-Schlüssel zu Ihrem Server hinzu
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
Fügen Sie das Caddy-Repository zu den APT-Quellen hinzu
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
Aktualisieren Sie den Paketindex
sudo apt update
Installieren Sie Caddy
sudo apt install caddy
Überprüfen Sie die installierte Caddy-Version
caddy -v
Ausgabe:
v2.9.1 h1:OEYiZ7DbCzAWVb6TNEkjRcSCRGHVoZsJinoDR/n9oaY=
Erlauben Sie HTTP-Verbindungen durch die Firewall
sudo ufw allow 80
Starten Sie die Firewall neu, um die Änderungen anzuwenden
sudo ufw reload
Öffnen Sie die IP-Adresse Ihres Servers im Browser, um zu prüfen, ob die Standardseite von Caddy angezeigt wird:
http://SERVER-IP
Caddy-Systemdienst verwalten
Aktivieren Sie Caddy für den automatischen Start beim Booten
sudo systemctl enable caddy
Starten Sie den Caddy-Webserver
sudo systemctl start caddy
Prüfen Sie den Status des Caddy-Systemdienstes
sudo systemctl status caddy
Ausgabe:
● caddy.service - Caddy
Loaded: loaded (/lib/systemd/system/caddy.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2025-04-06 09:20:18 UTC; 4min 10s ago
Docs: https://caddyserver.com/docs/
Main PID: 3015 (caddy)
Tasks: 9 (limit: 9415)
Memory: 10.9M
CGroup: /system.slice/caddy.service
└─3015 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
Caddy Virtual Host erstellen
Caddy speichert seine Konfigurationsdateien standardmäßig im Verzeichnis /etc/caddy und unterstützt Caddyfile-Konfigurationen von beliebigen Speicherorten. Gehen Sie wie folgt vor, um einen neuen virtuellen Host einzurichten, der Webanwendungsdateien aus dem Verzeichnis /var/www/example.com bereitstellt:
Erstellen Sie das Webanwendungsverzeichnis
sudo mkdir -p /var/www/example.com
Erstellen Sie eine neue HTML-Datei index.html
sudo nano /var/www/example.com/index.html
Fügen Sie folgenden Code in die Datei ein
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Greetings from centron!</title>
</head>
<body>
<br><br><br>
<h1 style="text-align: center;">Hello World! Greetings from centron</h1>
</body>
</html>
Wechseln Sie in das Caddy-Konfigurationsverzeichnis
cd /etc/caddy/
Sichern Sie die Standardkonfiguration der Caddyfile
sudo mv Caddyfile Caddyfile.default
Erstellen Sie eine neue Caddyfile
sudo nano Caddyfile
Fügen Sie folgende Konfiguration in die Datei ein
example.com {
tls admin@example.com
root * /var/www/example.com
file_server {
index index.html
}
log {
output file /var/log/caddy/example.log
format console
}
}
Diese Konfiguration erstellt einen virtuellen Host für Ihre Domain example.com. Folgendes bewirken die einzelnen Direktiven:
- example.com: Definiert ein virtuelles Host-Profil für Ihre Domain oder IP-Adresse.
- tls: Verknüpft eine E-Mail-Adresse mit Let’s Encrypt für die Beantragung von SSL-Zertifikaten.
- root: Legt das Verzeichnis fest, in dem sich die Webanwendungsdateien befinden.
- file_server: Aktiviert den Dateiserver zum Ausliefern der Webanwendungsdateien und setzt
index.htmlals Standarddatei. - log: Konfiguriert die Protokollierung von Zugriffen und Fehlern in
/var/log/caddy/example.log.
Validieren Sie die Caddy-Konfiguration
sudo caddy validate
Ausgabe:
...........
2024/06/1 15:19:11.478 INFO tls.cache.maintenance started background certificate maintenance {"cache": "0xc0000e5300"}
2024/06/1 15:19:11.478 INFO tls.cache.maintenance stopped background certificate maintenance {"cache": "0xc0000e5300"}
Valid configuration
Laden Sie Caddy neu, um die Änderungen zu übernehmen
sudo caddy reload
Den Caddy-Webserver absichern
Caddy aktiviert automatisch HTTPS, um alle Verbindungen mit SSL-Zertifikaten für virtuelle Hosts mit gültigen Domains zu sichern. Um den Caddy-Webserver vor unbefugten Änderungen zu schützen, schränken Sie den Zugriff auf die Caddyfile-Konfigurationen wie folgt ein:
Geben Sie dem Benutzer „caddy“ volle Rechte für das Verzeichnis /etc/caddy
sudo chown -R caddy:caddy /etc/caddy
Erteilen Sie dem Benutzer „caddy“ Lese- und Schreibrechte für die Caddyfile und sperren Sie den Zugriff für andere Benutzer
sudo chmod 660 /etc/caddy/Caddyfile
Überprüfen Sie die geänderten Berechtigungen im Verzeichnis /etc/caddy
ls -l /etc/caddy/
Ausgabe:
total 8 -rw-rw---- 1 caddy caddy 168 Jun 2 15:20 Caddyfile -rw-r--r-- 1 caddy caddy 769 Jun 2 12:07 Caddyfle.default
Firewall-Regeln einrichten
Caddy verwendet abhängig von der Caddyfile-Konfiguration die HTTP-Portnummer 80 und den HTTPS-Port 443, um Dateien auf dem Server auszuliefern. Führen Sie folgende Schritte aus, um den Zugriff auf beide Caddy-Ports durch die Firewall zu erlauben und Netzwerkverbindungen zum Webserver zu aktivieren:
Prüfen Sie den UFW-Status und stellen Sie sicher, dass er aktiv ist
sudo ufw status
Falls inaktiv, erlauben Sie den SSH-Port 22 und aktivieren Sie UFW
sudo ufw allow 22 && sudo ufw enable
Erlauben Sie eingehende Verbindungen zum HTTPS-Port 443
sudo ufw allow 443
Laden Sie die Firewall neu, um die Änderungen zu übernehmen
sudo ufw reload
Öffnen Sie Ihre Domain in einem Browser wie Chrome, um zu überprüfen, ob Caddy die Dateien Ihres virtuellen Hosts bereitstellt:
https://example.com
Wenn ein Verbindungsfehler auftritt, prüfen Sie die Caddy-Konfigurationsprotokolle, um die Ursache zu ermitteln und zu beheben.
Fazit
Sie haben den Caddy-Webserver erfolgreich auf Ihrem Ubuntu-20.04-Server installiert und ein Virtual-Host-Profil konfiguriert, um Webanwendungsdateien bereitzustellen.


