[[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]]