HTTPS mit Wildcard aktivieren
Auch ein Wildcard Zertifikat kann Traefik von Let's Encrypt beantragen indem es die DNS-Challenge durchführt. Dafür sind ebenfalls keine zusätzliche Tools notwendig.
Die DNS-Challenge setzt voraus, dass der Domänenanbieter diese auch unterstützt. Bei GoDaddy ist dies der Fall, weswegen die folgenden Konfigurationen für diesen Anbieter durchgeführt werden. Für die Challenge muss ein API Key samt Secret generiert werden.
Für die DNS-Challenge sind mehr Optionen zu definieren, da ein DNS-Eintrag erstellt und überprüft wird, um den Besitz einer Domäne zu verifizieren.
Wie bereits bei der "normalen" HTTPS Konfiguration wird eine .env Datei angelegt, um die Optionen zu verwalten. Zuerst wird die Docker Compose Konfiguration wie folgt erstellt.
services:
traefik:
image: traefik
container_name: traefik
restart: unless-stopped
ports:
- 80:80
- 443:443
- 8080:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${TRAEFIK_PFAD}/traefik_data:/traefik
command:
- --api.dashboard=true
- --api.insecure=true
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --providers.docker.network=traefik
- --entrypoints.webinsecure.address=:80
- --entrypoints.websecure.address=:443
- --entrypoints.traefik.address=:8080
- --metrics.prometheus.addrouterslabels=true
- --certificatesresolvers.wildcard-godaddy.acme.dnschallenge=true
- --certificatesResolvers.wildcard-godaddy.acme.dnsChallenge.provider=godaddy
- --certificatesResolvers.wildcard-godaddy.acme.dnsChallenge.delayBeforeCheck=0
- --certificatesresolvers.wildcard-godaddy.acme.email=${ACME_EMAIL}
- --certificatesresolvers.wildcard-godaddy.acme.storage=/traefik/certs/acme.json
- --certificatesResolvers.wildcard-godaddy.acme.dnsChallenge.resolvers=1.1.1.1:53,8.8.8.8:53
labels:
- traefik.enable=true
# HTTPS Umleitung
- traefik.http.routers.http-catchall.entrypoints=webinsecure
- traefik.http.routers.http-catchall.rule=HostRegexp(`{host:.+}`)
- traefik.http.routers.http-catchall.middlewares=redirect-to-https
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
# HTTP Router
- traefik.http.routers.traefik-secure.entrypoints=websecure
- traefik.http.routers.traefik-secure.rule=Host(`traefik.${DOMAIN}`)
- traefik.http.routers.traefik-secure.tls=true
- traefik.http.routers.traefik-secure.tls.certresolver=wildcard-godaddy
- traefik.http.routers.traefik-secure.tls.domains[0].main=*.${DOMAIN}
- traefik.http.routers.traefik-secure.tls.domains[0].sans=${DOMAIN}
- traefik.http.routers.traefik-secure.service=api@internal
networks:
- traefik
networks:
traefik:
name: traefik
external: true
Diese kann im Prinzip genau so übernommen werden, wer mag, kann noch die Namen anpassen.
In der oben gezeigten Konfiguration ist noch das Dashboard verfügbar, welches alle Interna von Traefik anzeigt. Für ein produktives Setup, dass von außen erreichbar ist, sollte dieses besser abgeschaltet werden. Dazu die folgenden Zeilen löschen:
- 8080:8080
- --entrypoints.traefik.address=:8080
- traefik.http.routers.traefik-secure.rule=Host(`traefik.${DOMAIN}`)
Wichtig sind die Optionen, die in der folgenden .env Datei eingestellt werden. In dieser bitte alle Variablen anpassen.
GODADDY_API_KEY=abcdefghiklmnopqrstuvwxyz
GODADDY_API_SECRET=abcdefghijklmnopqrstuvw
LEGO_DISABLE_CNAME_SUPPORT=true
TRAEFIK_PFAD=/pfad/zu/traefik
ACME_EMAIL=mail@beispiel.de
DOMAIN=beispiel.de
Bevor nun die Konfiguration angewendet wird, müssen schon der Ordner traefik_data und darin der Unterordner für die Zertifikate erstellt werden. Zusätzlich ist die Datei für die Zertifikatskonfiguration zu erstellen und die Berechtigung anzupassen. Dazu kann das folgende Skript verwendet werden, wobei der Pfad anzupassen ist.
pfad=/pfad/zu/traefik/traefik_data/certs_einzelzertifikat
mkdir $pfad
touch mkdir $pfad/acme.json
chmod 600 $pfad/acme.json
Um die Docker Compose Konfiguration auszuführen, kann am besten in das Verzeichnis der YAML Datei gewechselt werden. Danach wird je nach nach gewählter Installation sudo docker-compose up -d
oder sudo docker compose up -d
(keine Bindestrich zwischen docker und compose) eingegeben, um die Standard Konfiguration docker-compose.yml
zu starten. Compose erstellt dann die gewünschten Container mit den angegeben Optionen. Sollten die Container bereits mit dieser Compose Konfiguration erstellt worden sein, so werden die Container in dieser neu erstellt, dessen Konfiguration geändert wurde.
Anschließend müssen nur noch die gewünschten Dienst konfiguriert werden, damit diese von Traefik verwaltet werden können.
Keine Kommentare