Designfrage: Let's-Encrypt Zertifikatsverwaltung für Docker-Container auf VPS

  • Hallo,


    ich habe einen VPS unter Debian mit Docker auf dem div. Web-Apps laufen. Aktuell habe ich in jeder WebApp auch ein LE Zertifikat hinterlegt, aber maunell und möchte das nun optimieren und automatisieren. Dazu stellt sich mir die Frage wie ich das am geschicktesten anstelle?


    Eine Idee wäre einen dedizierten Container hochzufahren welcher sich nur um das LE-Thema (aka ACME) kümmert. Über den Reverse-Proxy würde ich Anfragen zu Port 80 und /.well-known/acme-challenge/ auf diesen Container weiterleiten und im Container vielleicht mit sowas wie "certbot" arbeiten um die Zertifikate zu beantragen und zu verlängern?

    Dann geht es ja darum wie ich diese Zertifikate an die einzelnen Apps verteile und dort aktiviere? Eine Idee dazu wäre auf allen Container ein lokales Hostverzeichnis zu mounten. Also der "acme" Container mounted /data/certs und die App01 zb. dann /data/certs/app01 usw.


    Hier mal eine kleine Übersichtsgrafik fürs bessere Verständnis:

    pasted-from-clipboard.png

  • Wenn ich mir dies hier ansehe, erscheint es wie mein Szenario oben

    https://github.com/nginx-proxy/acme-companion


    Man verwendet für den Reverseproxy einen (etwas angepassten) docker container mit Nginx und einen weiteren Container für die Zertifikatsbeschaffung/Aktualisierung mittels acme.sh, sowie die Integration im Reverse-Proxy.


    Um eine neue App mit Zertifikat hinzuzufügen muss man in dem entsprechenden Container wohl nur zwei Umgebungsvariablen setzen, den Rest soll dann der acme-Container erledigen. Dieser sucht über den in den Container gemounteten Docker-Socket die anderen VMs mit einer solchen Einstellung, besorgt die entsprechenden Zertifikate und baut eine Reverse-Regel mit SSL-Terminierung in den Rev-Proxy ein.


    Klingt alles ganz gut, werde ich mal ausprobieren...