ich habe begonnen einen Docker-Server mit eigener Nextcloud zu installieren.
Der Dockerhost ist ein eigener Server, nicht der Linuxmuster-Server, und steht derzeit im pädagogischen Netz.
Die Einrichtung dessen hat soweit geklappt.
Wenn ich nun nach Anleitung Nextcloud installieren — linuxmuster.net latest Dokumentation vorgehe, dann bleibe ich bereits bei „Zertifikate installieren“ hängen.
Ich habe ich mich bei dehydrated registriert, ok.
Dann aber:
Blockzitat
root@docker:~# dehydrated -c
INFO: Using main config file /etc/dehydrated/config
Processing cloud.SCHULE with alternative names: www.cloud.SCHULE
Creating new directory /var/lib/dehydrated/certs/cloud.SCHULE …
Signing domains…
Generating private key…
Generating signing request…
Requesting new certificate order from CA…
Received 2 authorizations URLs from the CA
Handling authorization for cloud.SCHULE
Handling authorization for www.cloud.SCHULE
2 pending challenge(s)
Deploying challenge tokens…
Responding to challenge for cloud.SCHULE authorization…
Ich verstehe diese Fehlermeldung nicht so wirklich.
Ich glaube, ich bleibe an der firewall hängen. Aber wie leite ich die firewall-Anfrage weiter auf den dockerhost?
Ergänzend: Auf meinem linuxmuster-server läuft certbot, der mir Zertifikate für „SCHULE“ erzeugt, damit der Zugriff via LDAPS von extern möglich ist. Das funktioniert. Also ich komme über Port 80 der Firewall auf den Server für certbot-Anfragen.
Kann ich certbot erweitern, sodass dieser mir auch ein Zertifikat für „cloud.SCHULE“ macht und das dann auf den dockerhost kopieren? Ist das überhaupt sinnvoll?
Du hast die folgende Möglichkeiten (generell gesprochen ohne jetzt zu wissen wie dein Netz/Firewall konkret aussieht und konfiguriert ist)
A) Einen Proxy vorne dran mit LE Zertifikaten. Dann reichen für den Docker selbstgenierierte Zertifikate
B) Wie du selber beschreibst die LE-Zertifikate auf den dockerhost kopieren
Wenn du nur eine IP nach aussen hast, kannst du nur Port 443 bzw Port 80 nur einer VM (order der Firewall selbst) per portforwarding zuweisen.
Daher funktioniert letsencrypt nur an dem Gerät dass du bereits einsetzst und die Zertifikate müssen dann auf den dockerhost kopiert werden. Das muss natürlich automatisch geschehen mit nem hook skript oder so. Dehydrated kenn ich selber nicht. bei mir läufts mit certbot. aber… vielleicht kann dir da ja sonst jemand aus der community weiterhelfen.
Ergänzend:
ja du kannst certbot erweitern: certbot certonly --nginx -d ``cloud.meineschule.de`` --dry-run --deploy-hook /root/meinskript.sh --run-deploy-hook
und in meinskript.sh machst du das skript mit dem du das zertifkat auf den dockerhost kopierst und den dockerhost im anschluss neustartest. Natürlcih –dry run weglassen um echt ein cert zu erzeugen. mit dryrun kannst du testen ob dein hookskript funktioniert
Hi.
Nur als Alternativvorschlag: Ich lasse alle LE-Certs direkt auf der OPNSense erzeugen und automatisch erneuern. Das funktioniert seit Jahren super. Die OPNSense kann auch die Certs kopieren aber ich habe mir ein Script gebastelt, das die LE-Zertifikate von der OPNSense auf den entsprechenden Host an die richtige Stelle kopiert, damit der Zugriff auch intern über https:// funktioniert.
also das Zertifikat erweitern und auf den docker hat grundsätzlich geklappt. Danke. (nginx läuft nur auf dem docker, nicht auf dem server, funktioniert dein Befehl mit –nginx als Option dann dennoch?).
Wenn ich von intern die gleiche Adresse eingebe, dann lande ich auf der Firewall, mit einem Hinweis “potential DNS rebind attack”. Diese Seite erscheint ebenfalls, wenn ich https://cloud.linuxmuster.lan eingebe. (Ich kann die Meldung bekanntermaßen deaktivieren, das löst aber nicht mein Problem.) Die Seite erscheint auch, wenn ich intern direkt die IP des Dockerhosts eingebe.
wenn du das Zertifikat erstellt gekreigt hast, musst du dir keine Sorgen mehr um das - - nginx machen
das - -nginx solltest du verwenden wenn auf dem Server, wo certbot läuft nginx läuft. wenn das bereits geklappt hat, ist alles gut
Wenn apache dort laufen wuerde muesstest du –apache machen und wenn nix laeuft gibt es auch –standalone … certbot wuerde sich beschweren wenn die einstellung nicht ginge bei dir… von daher hat das wohl geklappt mit nginx.
Dein anderes problem… da musst du einen DNS Eintrag machen im internen netz, so dass cloud.meineschule.de auch im internen netz korrekt auf die interne IP auflöst.
Üblicherweise müsstest du das im DNS Dienst auf opnsense /pfsense usw. machen… (Unbound… DNS Resolver oder DNS Forwarder. Da müsste es ja bereits so ähnliche Einträge geben zb für server.meineschule.de oder server.meineschule.linuxmuster.lan usw
Das letsencrypt zertifikat passt nicht zu einer internen adresse wie cloud.meineschule.linuxmuster.lan