Let's Encrypt Zertifikat für private IP

Verschlüsselung im Heimnetzwerk ist ja immer wieder ein Thema, das zumeist mit selbst signierten Zertifikaten gelöst oder gleich ganz gelassen wird. Es ist jedoch auch möglich auf private IP Adressen ein Let’s Encrypt Zertifikat zu beziehen.
Was man braucht ist eine echte Domain. Eine lokale Domain wie .local funktioniert nicht.

tl;dr
Der Trick besteht darin, dass das Let’s Encrypt Addon auch die DNS Challenge unterstützt und man im (kompatiblen) DNS die private IP als Ziel hinterlegt.

Voraussetzungen
Ihr braucht das Let’s Encrypt Addon.
Open your Home Assistant instance and show the add-on store.
Ihr braucht eine eigene (Sub)-Domain und Zugriff auf einen kompatiblen DNS Server. Die hier ohnehin oft vorgeschlagenen sind Cloudflare und DuckDNS. Ich persönlich nutze INWX. Aber es gibt noch deutlich mehr.
Für DuckDNS, INWX und Cloudflare habe ich unten jedoch auch Beispiele aufgeführt.

Erste Schritte

Wenn Ihr das Addon installiert und die (Sub-)Domain eingerichtet habt, müsst Ihr das Addon einrichten.

Addon einrichten

Ihr geht auf das Let’s Encrypt Addon und in die Konfiguration.
Als Domains legt Ihr eure Domain oder Domains an, die ein Let’s Encrypt Zertifikat erhalten sollen. Hierbei kann auch * als Wildcard genutzt werden.

Domain eintragen

In meinem Fall nutze ich die Domain hates.social und als Subdomain für Home Assistant die Subdomain ha.hates.social. Es ist auch möglich z.B. *.hates.social einzutragen, wenn ich alle Subdomains mit Let’s Encrypt nutzen wollte. Oder noch eine oder weitere Subdomains anzulegen, wenn ich diese auf dem System nutzen würde.
In den verschiedenen Beispielen nutze ich jedoch verschiedene Domains, die vom jeweiligen Anbieter unterstützt werden bzw. dort liegen.

E-Mail Adresse

Bei der E-Mail Adresse tragt Ihr eure E-Mail Adresse ein. Diese wird von Let’s Encrypt benutzt, um euch zum Beispiel über den Ablauf der Zertifikate zu informieren.

Zertifikat Dateien

Private Key File und Certificate File bleiben einfach wie sie sind.

Challenge

Bei der Challenge, das ist der wichtige Teil, wählt Ihr dns und nicht http aus.

DNS

In das Textfeld DNS kommt die Konfiguration für euren DNS Server. Dies ist in den Beispiel Konfigurationen für verschiedene Anbieter beschrieben. Im How to Use sind die Variablen für alle Anbieter aufgeführt.

Weiter unten finden sich konkrete Beispiele inkl. dem benötigten Code für DuckDNS, INWX und Cloudflare.

Jetzt müsst Ihr noch die private IP (also die IP Adresse eures Home Assistant) für eure Domain im Nameserver einrichten und danach das Addon starten.

Danach bitte eure Domain (inkl. https:// und Port) in den Netzwerkeinstellungen als Lokales Netzwerk festlegen.
Open your Home Assistant instance and manage your systems network configuration.

Außerdem müssen wir in der configuration.yaml Home Assistant sagen, dass wir ab sofort die Verschlüsselung aktivieren wollen.

Hierzu fügt man folgenden Code ein.

http:
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem

Nun nur noch Home Assistant neustarten und fertig… Die Verbindung erfolg nun direkt über die verschlüsselte Verbindung. Unverschlüsselt ist Home Assistant nicht mehr erreichbar.

Wichtig zu Wissen ist, dass das Addon sich automatisch beendet, nachdem das Zertifikat beantragt / erneuert wurde. Außerdem sind Let’s Encrypt Zertifikate immer nur 90 Tage gültig und müssen dann erneuert werden. (Ihr werdet vor Ablauf per E-Mail informiert, wenn die Zertifikate nicht bereits erneuert sind.)
Daher ist es sehr sinnvoll einfach Beim Booten starten zu aktivieren. Home Assistant wird durch die Updates vermutlich ohnehin regelmäßig neu gestartet und das Addon prüft dann, ob das Zertifikat erneuert werden muss. :wink:

Zertifikat per Automatisierung erneuern

Bei jedem Start prüft das Let’s Encrypt Addon, ob das Zertifikat erneuert werden kann / muss. Dies kann, wie beschrieben, bei jedem Neustart passieren. Wer nicht regelmäßig neustartet oder auf Nummer sicher gehen will, kann dies selbstverständlich auch per Automatisierung tun.

Automatisierung, um das Let's Encrypt Zertifikat an jedem 1. eines Monats um 3 Uhr Morgens zu starten
alias: Let's Encrypt Zertifikat erneuern
description: >-
  Startet das Let's Encrypt Addon an jedem 1. eines Monats, um 3 Uhr Morgens, um
  zu prüfen, ob das Zertifikat erneuert werden kann / muss.
trigger:
  - platform: time
    at: "03:00:00"
    alias: Um 3 Uhr Morgens
condition:
  - condition: template
    value_template: "{{ now().day == 1 }}"
    alias: Am 1. eines Monats
action:
  - service: hassio.addon_start
    data:
      addon: core_letsencrypt
    alias: Let's Encrypt starten, um das Zertifikat zu erneuern
mode: single

Deutlich häufiger zu prüfen würde eher keinen Sinn ergeben und die Let’s Encrypt Server unnötig belasten.

Duck DNS Config

Duck DNS dürfte ein sehr bekannter Anbieter sein, der gleichzeitig auch noch kostenfrei zu nutzen ist. In diesem Fall werden wir jedoch nicht das DuckDNS Addon nutzen, da wir dieses für unser Zertifikat nicht benötigen.
Wir wollen nur die Domain, um für keine Domain bezahlen zu müssen…

Domain anlegen

Ich habe bei DuckDNS eine Domain hates-social als hates-social.duckdns.org angelegt.

IP Updaten

Unter current ip steht zu beginn eure öffentliche IP Adresse. Diese benötigen wir nicht. Daher tragen wir dort von Hand die lokale IP Adresse unseres Home Assistant ein. Dies ist die Adresse, unter der Ihr den Home Assistant in eurem lokalen Netzwerk aufruft, ohne den Port usw.
In meinem Fall ist dies 172.23.107.2. Wenn Ihr eine Fritz!Box verwendet ist es vermutlich eher etwas wie 192.168.178.15 oder ähnlich.
Tragt diese ein, klickt auf update ip und fertig.

Addon DNS Config

Der Teil der für DuckDNS in das Textfeld DNS eingetragen werden muss, ist ziemlich simpel.

provider: dns-duckdns
duckdns_token: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'

Das Token findet Ihr oben auf der DuckDNS Seite, wenn ihr eingeloggt seid.

Meine komplette Let’s Encrypt Addon Config für DuckDNS ist damit:

domains:
  - hates-social.duckdns.org
email: tarag@meine-domain.tld
keyfile: privkey.pem
certfile: fullchain.pem
challenge: dns
dns:
  provider: dns-duckdns
  duckdns_token: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

Nach einem erfolgreichen Durchlauf beendet sich das Addon automatisch wieder.

Log eines erfolgreichen Durchlauf bei DuckDNS
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
cont-init: info: running /etc/cont-init.d/file-structure.sh
cont-init: info: /etc/cont-init.d/file-structure.sh exited 0
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
services-up: info: copying legacy longrun lets-encrypt (no readiness notification)
s6-rc: info: service legacy-services successfully started
[13:05:24] INFO: Selected DNS Provider: dns-duckdns
[13:05:24] INFO: Use propagation seconds: 60
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for hates-social.duckdns.org
Waiting 60 seconds for DNS changes to propagate
Successfully received certificate.
Certificate is saved at: /data/letsencrypt/live/hates-social.duckdns.org/fullchain.pem
Key is saved at:         /data/letsencrypt/live/hates-social.duckdns.org/privkey.pem
This certificate expires on 2024-03-29.
These files will be updated when the certificate renews.
NEXT STEPS:
- The certificate will need to be renewed before it expires. Certbot can automatically renew the certificate in the background, but you may need to take steps to enable that functionality. See https://certbot.org/renewal-setup for instructions.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

In den Netzwerkeinstellungen noch https://hates-social.duckdns.org:8123 als Lokales Netzwerk eintragen, Home Assistant neu starten und es funktioniert.

INWX Config

INWX ist ein Domainregistrar, den ich selbst sehr gerne nutze. Insbesondere, wegen der günstigen Preise bei z.B. .de Domains. Erfreulicher Weise ist auch deren Nameserver kompatibel mit den Let’s Encrypt Addon.

Domain anlegen / registrieren

Zur Nutzung muss man mindestens die Domain im Nameserver angelegt bzw. idealerweise die Domain bei INWX selbst registriert haben.

IP updaten

Meine Domains hates.social und die von mir real genutzte Subdomain ha.hates.social läuft über INWX. Hierzu habe ich einen A Eintrag auf die lokale IP Adresse angelegt. Bei mir lautet diese 172.23.107.2. Bei euch evtl. 192.168.178.15 oder entsprechend anders.

Addon DNS Config

In der Dokumentation steht, dass man den DynDNS Account von INWX benötigen würde / nutzen sollte. Ich habe es mit diesem nicht hinbekommen. Daher nutze ich meine realen Logindaten. Die Config ist aber identisch.

provider: dns-inwx
inwx_username: tarag
inwx_password: so-dumm-bin-ich-nicht
inwx_shared_secret: ABCDEFGHIJKLMNOPQRSTUVWXYZ012345

Der Teil mit inwx_shared_secret muss dort wohl tatsächlich so stehen, wenn Ihr keine 2FA aktiviert habt. Andernfalls muss dort das shared secret (nicht der 6-stellige Code) rein.

Mein vollständiger YAML-Code für die INWX Config lautet damit:

domains:
  - ha.hates.social
email: tarag@meine-domain.tld
keyfile: privkey.pem
certfile: fullchain.pem
challenge: dns
dns:
  provider: dns-inwx
  inwx_username: tarag
  inwx_password: so-dumm-bin-ich-nicht
  inwx_shared_secret: ABCDEFGHIJKLMNOPQRSTUVWXYZ012345

Nach einem erfolgreichen Durchlauf beendet sich das Let’s Encrypt Addon selbst wieder.

Log eines erfolgreich durchgelaufenen Logs bei INWX
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
cont-init: info: running /etc/cont-init.d/file-structure.sh
cont-init: info: /etc/cont-init.d/file-structure.sh exited 0
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
services-up: info: copying legacy longrun lets-encrypt (no readiness notification)
s6-rc: info: service legacy-services successfully started
[14:35:09] INFO: Selected DNS Provider: dns-inwx
[14:35:09] INFO: Use propagation seconds: 60
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator dns-inwx, Installer None
Account registered.
Requesting a certificate for ha.hates.social
Performing the following challenges:
dns-01 challenge for ha.hates.social
Waiting 60 seconds for DNS changes to propagate
Waiting for verification...
Cleaning up challenges
Non-standard path(s), might not work with crontab installed by your operating system package manager

Successfully received certificate.
Certificate is saved at: /data/letsencrypt/live/ha.hates.social/fullchain.pem
Key is saved at:         /data/letsencrypt/live/ha.hates.social/privkey.pem
This certificate expires on 2024-03-29.
These files will be updated when the certificate renews.
NEXT STEPS:
- The certificate will need to be renewed before it expires. Certbot can automatically renew the certificate in the background, but you may need to take steps to enable that functionality. See https://certbot.org/renewal-setup for instructions.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

In den Netzwerkeinstellungen noch https://ha.hates.social:8123 als Lokales Netzwerk eintragen, Home Assistant neu starten und es funktioniert.

Cloudflare Config

Ein sehr beliebter Anbieter ist Cloudflare. Ich nutze diesen für Domains mit .tld, die dort günstiger sind als bei INWX.

Domain anlegen

Die gewünschte Domain muss bei Cloudflare registriert sein bzw. mindestens die Cloudflare DNS Server für die Domain genutzt werden.

IP updaten

Wir müssen einen neuen DNS-Record vom Typ A für die (Sub-)Domain anlegen. Bei mir wird die Domain ha.ausbilder.org lauten. Meine lokale IP (IP des Home Assistant) ist 172.23.107.2. Bei euch ist es z.B. 192.168.178.15 oder eine andere IP.

Wichtig ist, dass der Proxy Status auf aus gestellt ist. Würde für eine private IP ohnehin keinen Sinn ergeben.

Beim Anlegen

Der fertige Eintrag

Cloudflare erkennt auch schon, dass es eine private IP ist und würde daher vermutlich den Proxy ohnehin deaktivieren.

Addon DNS Config

Die Config für das DNS Textfeld ist bei Cloudflare auch relativ simpel.

provider: dns-cloudflare
cloudflare_api_token: 0123456789abcdef0123456789abcdef01234

Den API Token muss man sich in seinem Profil (Symbol oben rechts) → API Tokens → Create Token noch erstellen. Gemeint ist hier nicht der Global API Key, der weiter unten auf der Seite steht. Dieser kann lt. Config genutzt werden, es wird jedoch nicht empfohlen.
Wir brauchen nur die API Berechtigung Zone:DNS:Edit. Daher nutzen wir direkt das erste Template Edit zone DNS. Bei Zone Ressources habe ich es zusätzlich auf meine gewünschte Domain beschränkt.

Die Zusammenfassung zeigt:

Meine komplette YAML Config für Cloudflare ist damit:

domains:
  - ha.ausbilder.org
email: tarag@meine-domain.tld
keyfile: privkey.pem
certfile: fullchain.pem
challenge: dns
dns:
  provider: dns-cloudflare
  cloudflare_api_token: 0123456789abcdef0123456789abcdef01234

Nach einem erfolgreichen Durchlauf beendet sich das Let’s Encrypt Addon sich selbst wieder.

Log eines erfolgreichen Durchlaufs bei Cloudflare
[14:06:01] INFO: Selected DNS Provider: dns-cloudflare
[14:06:01] INFO: Use propagation seconds: 60
[14:06:01] INFO: Use CloudFlare token
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for ha.ausbilder.org
Waiting 60 seconds for DNS changes to propagate

Successfully received certificate.
Certificate is saved at: /data/letsencrypt/live/ha.ausbilder.org/fullchain.pem
Key is saved at:         /data/letsencrypt/live/ha.ausbilder.org/privkey.pem
This certificate expires on 2024-03-29.
These files will be updated when the certificate renews.
NEXT STEPS:
- The certificate will need to be renewed before it expires. Certbot can automatically renew the certificate in the background, but you may need to take steps to enable that functionality. See https://certbot.org/renewal-setup for instructions.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

In den Netzwerkeinstellungen noch https://ha.ausbilder.org:8123 als Lokales Netzwerk eintragen, Home Assistant neu starten und es funktioniert.

13 „Gefällt mir“

Prima Anleitung. Kleine Ergänzung: Die Wildcard-Domain muss man im yaml in “” setzen. Ansonsten wird es nicht gespeichert:

domains:
 - "*.ausbilder.org"

Moin, ich habe es so mit DuckDNS probiert.
allerdings bekomme ich beim testen der Config folgende Nachricht:

Konfigurationsfehler

Invalid config for ‘http’ at configuration.yaml, line 54: not a file for dictionary value ‘http->ssl_certificate’, got ‘/ssl/fullchain.pem’ Invalid config for ‘http’ at configuration.yaml, line 55: not a file for dictionary value ‘http->ssl_key’, got ‘/ssl/privkey.pem’

und so ist es auch die es gab nicht mal einen ssl Ordner
hat jemand einen Tipp für mich ?
vg Olli

Hast du auf dns gestellt?


dns:
  provider: dns-duckdns

Bzw. poste doch mal deine Config ( ohne Secrets)

Ergänzung: Ich habe deine Automation noch durch ein Shell-Script ergänzt, welches mir das Wildcard Zertifikat auf andere Webserver ( z.B. Adguard) verteilt.
Dickes Lob an dich für das Tutorial.

1 „Gefällt mir“

Hallo, danke das du dir das anschaust.
Das habe ich in die Konfiguration eingetragen:

domains:
  - frido.duckdns.org
email: xxx@gmail.com
keyfile: privkey.pem
certfile: fullchain.pem
challenge: dns
dns:
  provider: dns-duckdns
  duckdns_token: xxxxxxxxxxxxxxxxxxxxx

vg Olli

:crayon:by HarryP: Codezeilen formatiert (bitte immer über </> einbinden)

Den yaml Code hast du beim AddOn hinterlegt?

Weil in deiner Fehlermeldung steht etwas von configuration.yaml. Da gehört es nicht hin.

Du kannst beim Let‘s Encrypt Addon die Einstellungen als yaml editieren, dahin kommt dein Code.

In die configuration.yaml kommt nur dieser Code:

http:
    ssl_certifikate: /ssl/fullchain.pem
    ssl_key: /ssl/privkey.pem

Diese beiden Files werden vom AddOn generiert und liegen nach einem erfolgreichen Durchlauf.

Ja so habe ich das auch gemacht.
Also der Code oben mit den Secrets ist in der Konfiguration von Encrypt und das was du gepostet hast ist in der configuration.yaml
Bitte nicht aufgeben :slight_smile:
vg Olli

Ich habe einen internen DNS-Server (PFsense und Pihole), auf den ich von außen über NGINX (separater Docker-Container) sicher auf HA zugreifen könnte. Dies mit einem signierten Zertifikat.

Nun in der Theorie wäre die Verbindung von NGINX zu HA dann ganz normal via HTTP. Genau an dieser Stelle stehe ich auf dem Schlauch. Muss ich in der configuration.yaml bei ssl_peer_certificate den NGINX Host angeben oder reicht hier ein unsigniertes Zertifikat?

Was hat das mit der oben genannten Vorgehensweise zutun?

Der DNS auf dem Du es einstellst, muss über das Internet erreichbar und für die Domain als DNS Server eingetragen sein.

Ich nutze AdGuard auf HA, unbound auf nem NAS und verbinde mich via VPN ins Netzwerk. Meine genutzte Domain (ha.hates.social) liegt aber bei INWX. Daher ist die Ziel IP (172.23.107.2) auch auf dem DNS Server bei INWX hinterlegt.

Meinen HA rufe ich ausschließlich über https://ha.hates.social auf.

In Deinem Fall könnte der NGINX Server dann von außen erreichbar sein und als Proxy auf die von Dir genutzte Domain weiterleiten, für welche let‘s encrypt das Zertifikat ausgestellt hat. Da wäre dann die Verbindung Nginx ↔ HA über dieses Zertifikat verschlüsselt.

Dein Setup ändert also nichts am Vorgehen für die Erstellung des Zertifikats.

Du schreibst ja:

Mich interessiert ob für die letzte Meile, also vom Reverse-Proxy zu HA, bei meinem Setting, noch etwas spezielles enstellen/beachten muss, so dass der gesamte Verkehr verschlüsselt wird. Ich möchte verhindern, dass durch herumbasteln etwas verbocke. :blush:

Der Teil Proxy ↔ HA ist ja durch das oben genannte Vorgehen verschlüsselt, wenn Du es entsprechend angibst.

Oder eigentlich anders… Durch das oben beschriebene Vorgehen kannst Du Dein HA im Netzwerk verschlüsselt aufrufen.
Die Verbindung zwischen Gerät und HA ist also verschlüsselt.

Wenn Du nun einen Reverse Proxy, wie in Deinem Fall vorgesehen, verendest, wird die Verbindung zwischen Proxy und HA selbstverständlich ebenso verschlüsselt aufgebaut. Ich meine sogar, dass eine unverschlüsselte Verbindung abgelehnt werden würde.

Wenn Du den Proxy von außen verschlüsselt aufrufst und der Proxy HA lokal verschlüsselt aufruft, ist die gesamte Verbindung verschlüsselt.

Ob es den Proxy möglich ist das ganze direkt verschlüsselt weiterzugeben oder es auf der Maschine neu verschlüsselt wird, bin ich mir technisch nicht ganz sicher. Aber wenn Dein Proxy kompromittiert würde, wäre das ohnehin eine ganz andere Nummer. :wink:

1 „Gefällt mir“

@Eprok
Dann lass doch erstmal den Code in der configuration.yaml auskommentiert und starte nur das Addon. Danach sollten in den o.g. Ordner die beiden Dateien liegen. Erst dann kannst du sie in der config einbinden.

Kannst du eine SSH Session zu deinem System aufmachen und in den Ordner /ssh schauen, ob da 2 neue Files liegen?

so das habe ich auch probiert ich bekomme die beiden Dateien einfach nicht erstellt.

kann es daran liegen das ich cgnat nutze?

Die Zertifikat Dateien werden automatisch erstellt, durch das Let‘s encrypt Addon.

Vielen Dank, das hat mir weitergeholfen. Wie du sicherlich bemerkt hast, ist das nicht mein Fachgebiet. Ich lernte die letzten Jahren viel zu diesem Thema, aber gewisse Lücken gibt es einfach (gefährliches Halbwissen).

Dafür sind wir ja im Forum. Wenn jeder alles perfekt beherrschen würde, wäre es hier ganz schön ruhig. :wink:

Moin, ich habe grade mal wieder ein bisschen Zeit um mich damit zu beschäftigen.
also ich kann machen was ich will Let’s Encrypt legt die Dateien bei mir einfach nicht.
ich habe mal den Log dazu gepostet evtl hilft das ja beim auffinden meines Problems.
vielen Dank für eure Hilfe
Gruß Olli

  s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
cont-init: info: running /etc/cont-init.d/file-structure.sh
cont-init: info: /etc/cont-init.d/file-structure.sh exited 0
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
services-up: info: copying legacy longrun lets-encrypt (no readiness notification)
s6-rc: info: service legacy-services successfully started
[12:04:10] INFO: Selected DNS Provider: null
[12:04:11] INFO: Use propagation seconds: 60
[12:04:11] INFO: Detecting existing certificate type for freak.duckdns.org
Saving debug log to /var/log/letsencrypt/letsencrypt.log
[12:04:14] INFO: No certificate found - using 'ecdsa' key type.
usage: 
  certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...

Certbot can obtain and install HTTPS/TLS/SSL certificates.  By default,
it will attempt to use a webserver both for obtaining and installing the
certificate. 
certbot: error: unrecognized arguments: --null --null-credentials /data/dnsapikey
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

Das sieht nicht richtig aus. Magst noch mal Deine Config zeigen?

HarryP hat ja oben im Beitrag die Config von @Eprok nochmal formatiert. Vielleicht sehen wir hier nicht seine originale Config.

@Eprok bitte poste nochmal deine Config, und achte auf Tabs und Leerzeichen in der yaml Datei.

Was meinst du mit cgnat?

Das glaube ich nicht, denn ich habe lediglich den Code in </> eingebunden. :wink: