[[fun:acme_zwischen_cartoon_und_zertifikatsmagie|zurück]]
====== Let's Encrypt + ACME mit Traefik einrichten ======
Diese Seite beschreibt, wie man mit dem ACME-Protokoll automatisch TLS-Zertifikate von Let's Encrypt in einem Traefik-Setup bezieht und verwaltet.
===== Voraussetzungen =====
* Laufender Docker-Container mit Traefik (v2+ empfohlen)
* Eigene Domain (z. B. via dedyn.io, IONOS, etc.)
* Öffentlich erreichbare IP oder funktionierender DynDNS
* Portweiterleitung für HTTP (80) und HTTPS (443)
===== Beispielkonfiguration (Static Configuration via Datei) =====
In der Datei ''traefik.yml'' oder ''traefik.toml'' (abhängig vom Format):
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
certificatesResolvers:
letsencrypt:
acme:
email: [deine-email@example.com](mailto:deine-email@example.com)
storage: /letsencrypt/acme.json
httpChallenge:
entryPoint: web
'''Hinweis:''' Stelle sicher, dass ''/letsencrypt/acme.json'' im Container existiert und beschreibbar ist.
===== Docker-Compose Beispiel =====
services:
traefik:
image: traefik:v2.10
command:
- --api.insecure=true
- --providers.docker=true
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.letsencrypt.acme.email=deine-email@example.com
- --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json
- --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "./letsencrypt:/letsencrypt"
===== Hinweise zur DNS-01 Challenge =====
Optional kann statt HTTP auch DNS verwendet werden, z. B. für Wildcard-Zertifikate:
certificatesResolvers:
letsencrypt:
acme:
dnsChallenge:
provider: cloudflare
delayBeforeCheck: 0
email: deine-email@example.com
storage: /letsencrypt/acme.json
'''Tipp''': Für DNS-01 sind meist API-Tokens beim Provider nötig.
===== Probleme & Fehlerbehebung =====
* 404 bei ''/.well-known/acme-challenge'' → Port 80 ist blockiert oder Traefik fängt Route nicht ab
* Zertifikate werden nicht ausgestellt → Domain nicht öffentlich erreichbar oder falsche Challenge
* ''acme.json'' leer oder fehlerhaft → Schreibrechte prüfen
===== Siehe auch =====
* [[fun:acme_zwischen_cartoon_und_zertifikatsmagie| Was ist ACME (Cartoon vs. Protokoll)]]
* [[tls_ssl_zertifikate|Grundlagen zu TLS & SSL]]
* [[linux:certbot_grundlagen|Certbot-Befehle und Beispiele]]