Let‘s Encrypt Zertifikate im Homelab mit ipv64.net

Hi,

durch Zufall hab ich die Woche den Wechsel von Zoraxy auf Traefik gemacht. Beim Zoraxy hatte ich das Problem, dass das Admin Panel selbst größe Ladeprobleme von Extern hatte. Ansonsten finde ich Zoraxy auch ein guten und einfachen Revers Proxy. Gut, darum geht es aber in dem Thema nicht :wink:

Zurück zum Traefik, wie habe ich jetzt die DNS Challenge umgesetzt.

Ich habe CDN mit Reverse Proxy auf Level zwei (Frontend und Backend) aktiv. Dadurch wird der eingehende Verkehr grundsätzlich auf https : 443 umgeleitet. Bei mir ist auch nur der 443 nach außen offen.

Im „docker-compose.yml“ des Traefik ist dann folgende Variable gesetzt:

    environment:
      IPV64_API_KEY: 'Dein Account Update Token im IPv64.net - Account Status'

In der „/etc/traefik/traefik.yml“ sind dann folgende Variablen bezüglich SSL enthalten:

entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"
    http:
      tls:
        certResolver: ipv64

providers:
  docker:
    exposedByDefault: false

certificatesResolvers:
  ipv64:
    acme:
      email: deine@mail-adresse.de
      storage: /letsencrypt/acme-ipv64.json
      dnsChallenge:
        provider: ipv64
        delayBeforeCheck: 30s

Die traefik.yml und acme-ipv64.json werden dabei im Volume über das Docker-Compose gemountet.

Theoretisch brauchst du web (Port: 80) wahrscheinlich nicht. Der ist bei mir noch drin, da ich wie geschrieben, die Woche erst alles umgestellt habe. Sprich ich bin jetzt noch in den Feintuning.

Warum hab ich da bei mir jetzt so umgesetzt? So entscheide ich welcher Container von außen erreichbar ist und durch das CDN bzw. den Reverse Proxy von ipv64, ist dieser dann nur per 443 erreichbar. Weiter durch die DNS-Challenge zieht sich der Traefik dann automatisch das SSL Zertifikat über ipv64.

Sprich der Weg ist bis zum Container verschlüsselt mit SSL Zertifikat versehen (zumindest laut Dashboard :upside_down_face:).

Ok, was sind jetzt die wichtigen Variablen im docker-compose des jeweiligen Containers (Applikation):

    labels:
      # Aktiviert Traefik für den Container
      traefik.enable: "true"
      # Definiert deine (Sub-)Domain
      traefik.http.routers.app.rule: Host(`app.deine.domain.de`)
      #  definiert den Zugangspunkt inkl. SSL Zertfikat
      traefik.http.routers.app.entrypoints: websecure
      # Leitet auf den internen Container-Port um (nicht der Docker Port) 
      traefik.http.services.app.loadbalancer.server.port: "80"

Bitte „app“ durch den Namen der jeweiligen Applikation ändern.

Das sind nur die Rahmenparameter zu TLS/SSL. Natürlich gibt da noch paar andere Dinge, aber das würde glaube den Rahmen sprengen und den Spaß am selber ausprobieren nehmen :wink:

Ich sage nur: Unifi Admin Panel, das Thema File als Provider, Portainer, Authelia, usw.

Was habe ich in der Woche der Umsetzung gelernt: Traefik bietet meistens mehr als einen Weg, Themen zu lösen. An der Stelle, wie geschrieben, so habe ich aktuell das Thema TLS/SSL gelöst, es gibt aber bestimmt noch genug andere :wink:

Ich hoffe das hilft dir weiter.

Ein letzter Tipp noch, du solltest während Umsetzungsphase dein Log auf Debug umstellen, um zu sehen was in der DNS-Challenge passiert.
Die Einstellung hab ich auch in der „traefik.yml“ und einsehen tu ich den Log faul über den Portainer.

Config in der „traefik.yml“:

log:
  level: "debug"

Viel Erfolg

1 „Gefällt mir“