• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

nginx Proxy Manager und let's encrypt auf eigenem Home Server mit vorhandener Domain einrichten

Raubsau

NGBler

Registriert
29 Aug. 2013
Beiträge
201
Hallo,

tldr; Ziel: *.meine-domain.de im LAN und ggfs. extern mit Verschlüsselung zugreifbar machen, sodass VMs mit Nextcloud, Vaultwarden etc. nicht mit selbstsignierten Zertifikaten betrieben werden.

1.
Ich habe eine eigene Domain bei all-inkl.com. Im folgenden nutze ich meine-domain.de als Platzhalter.
CNAME- und DNS-TXT-Einträge kann ich im Kundencenter vornehmen.

2.
Netzwerk-Aufbau:
variable IPv4 -> Fritzbox (192.168.0.1, als DHCP-Server) -> Proxmox-Server (192.168.0.10) mit Containern und VMs (192.168.0.1xx).
DNS übernehmen zwei Pihole (192.168.0.2 und 192.168.0.3). Diese können für die Dauer der "Experimente" ausgeschaltet bzw. durch die Fritzbox und die Provider-DNS-Server ersetzt werden.
Proxmox: Eine VM mit Nginx Proxy Manager (192.168.0.101) und ein Debian für Let's Encrypt (192.168.0.102) stehen bereit.

3.
Fragen zum weiteren Vorgehen:
Ich verstehe nicht, wie ich ein Wildcard-Zertifikat erstellen (lassen) kann.
Nach meinem Wissen/Lesen ist noch foglendes notwendig:
3.1 ACME installieren (?),
3.2 DNS-TXT-Challenge durchführen (?),

Funktionierende Anleitung auf YouTube:

3.3 Zertifikat in Nginx Proxy Manager importieren (?),
NPM -> SSL Certificates -> Add SSL Certificate -> Custom -> Certificate Key: privkey.pem, Certificate: fullchain.pem

3.4 Nginx Proxy Manager dazu bringen, foo1.proxmox.meine-domain.de auf 192.168.0.111 und foo2.proxmox.meine-domain.de auf 192.168.0.112 weiterzuleiten.

Kann mir jemand bei den Schritten helfen?
Ich scheitere bereits daran, was ich genau an Let's Encrypt-Software installieren muss.
Müsste nicht Nginx Proxy Manager bereits dafür ausreichen?
Ein Ubuntu Server-LXC reicht:
Proxmox VE Helper Scripts | Scripts for Streamlining Your Homelab with Proxmox VE -> Server - Networking -> Nginx Proxy Manager LXC
und
sudo apt install certbot

Weiterhin weiß ich nicht, welche Subdomain ich wohin weiterleiten muss (CNAME?), damit Let's Encrypt ein gültiges Zertifikat ausstellen kann.
Im KAS von all-inkl.com eine Subdomain wie von certbot vorgegeben erstellen, als Typ "TXT" auswählen und den Token einfügen, s. Youtube-Anleitung (
)

Problem nun:
Wie bringe ich Pi-hole und das ganze Netzwerk-Zeug dazu, container1.meine-domain.de intern auf den nginx Proxy Manager zu leiten, sodass dieser das Zertifikat benutzt und ich trotzdem nicht Port 443 von außen freigeben muss?
 
Zuletzt bearbeitet:

redbeard

Pirat

Registriert
14 Juli 2013
Beiträge
196
Ort
/home/redbeard
TBH, ich komme bei der Beschreibung nur bedingt mit, aber so grundlegend:

Das klingt alles ziemlich nach manuellem Aufwand, eigentlich soll das ACME Zeug dir ja helfen _nicht_ mehr von Hand alle paar Monde Zertifikate zu issuen, irgendwelche PEMs zusammen zu dengeln und die dem Proxy und/oder Webserver hinzuwerfen + den durchzutreten.

Mein Ansatz waere eher: acme.sh + DNS Provider inkl. API den acme.sh versteht + dann Nginx (wenns denn Nginx sein muss). Dann bist du erstmal alle manuellen Schritte los.

Disclaimer: Ich weiss nicht was Nginx Proxy Manager ist oder was das macht; klingt nach UI(?). acme.sh kann einfach CLI Hooks benutzen um zB den Nginx durchzustarten.

Wie bringe ich Pi-hole und das ganze Netzwerk-Zeug dazu, container1.meine-domain.de intern auf den nginx Proxy Manager zu leiten, sodass dieser das Zertifikat benutzt und ich trotzdem nicht Port 443 von außen freigeben muss?

Wie ist das Setting denn genau? meine-domain.de ist eine public Zone und container1.meine-domain.de zeigt auf deine public Fritzbox IP? Oder ist das alles nur intern; falls ja: wer haelt die Zone?

Unter der Annahme dass der Nginx Proxy Manager auch wirklich der _Proxy_ fuer deine Apps ist, dann muss container1.meine-domain.de auf die public Fritzbox IP zeigen, in der Fritzbox muss ein DNAT fuer Port 443 auf die IP vom Proxy Manager gebaut sein, der Proxy Manager macht das TLS Offloading, SNI und Host Header Foo und zeigt dann eben auf den richtigen Appserver.

Das pihole fragt am Ende ja auch nur seine konfigurierten Upstream DNS Server; d.h. da muss nix weitergeleitet werden (es sei denn dein Setting ist lokales Netzwerk only, aber dann brauchen wir mehr Infos).
 

Raubsau

NGBler

Registriert
29 Aug. 2013
Beiträge
201
  • Thread Starter Thread Starter
  • #3
Hallo redbeard, danke für Deine Antwort.

Ja, meine Beschreibung ist nicht sonderlich strukturiert, und ich habe angefangen das ganze wie eine Kladde zu führen - sorry :)

ACME.sh werde ich einrichten, sobald mein Rest läuft. Ich habe erst mal nur 1 Zertifikat per DNS01-Challenge zu verwalten, das alle paar Wochen zu erneuern ist erst mal kein Problem. (Sofern der Domain/DNS-Provider ein passendes API anbietet, kann Nginx Proxy Manager auch selbst Zertifikate bei Lets Encrypt anfordern.)

Nach meinen geringen Kenntnissen ist Nginx Proxy Manager ein Reverse Proxy und das Eingangstor auf Port 80/443. Er verteilt dann Anfragen wie foo1.proxmox.meine-domain.de an 192.168.0.111, foo2.proxmox.meine-domain.de an 192.168.0.112 usw.

Ich verstehe den Begriff "Zone halten" nicht, aber ich denke es ist so:
Ich habe einen vollständigen Webspace-Account bei all-inkl.com.
Mit dabei sind einige Domains, also denke ich, dass die Zone all-inkl.com hält?!

Für jede Domain kann ich u.a. A-, AAAA-, CNAME-, TXT-, SRV-, NS-Records anlegen.
Der (durch mich änderbare) A-Record für meine-domain.de zeigt auf die IP im Rechenzentrum, also auf meinen "Webspace".
Ebenso zeigt der (durch mich änderbare) A-Record *.meine-domain.de auf die IP im Rechenzentrum.

all-inkl.com bietet zusätzlich DynDNS mit den eigenen Domains an. So zeigt standort.meine-domain.de auf meine FritzBox (IP ist dynamisch).

Ich habe CNAME-Einträge für proxmox.meine-domain.de und *.proxmox.meine-domain.de auf standort.meine-domain.de gesetzt.
Port 80 und 443 habe ich in der FritzBox freigegeben, sodass diese Anfragen beim Nginx Proxy Manager ankommen.
Das ganze funktioniert soweit, die Verbindung wird auch mit dem Lets Encrypt-Zertifikat gesichert.
Unter foo1.proxmox.meine-domain.de ist dann der gewünschte Dienst erreichbar. Auch ein XYZ.proxmox.meine-domain.de mit zufälligem XYZ wird korrekt auf die im Nginx Proxy Manager hinterlegte IP-Adresse für Wilcard-Anfragen weitergeleitet.

Problem: Ich muss immer Port 80 und 443 öffentlich freigeben. Das möchte ich nicht.

Ziel: Ich möchte foobar115.proxmox.meine-domain.de aus dem LAN aufrufen können, ohne dass der Nginx Proxy Manager unter Port 80 und 443 erreichbar ist.
Gedachter Lösungsvorschlag: Einen eigenen DNS-Server (Pi-hole) mit Local DNS so einrichten, dass foobar115.proxmox.meine-domain.de am Ende auf 192.168.0.115 erreichbar ist, und trotzdem das Lets Encrypt-Zertifikat genutzt/ausgeliefert wird. Für die "Auslieferung" von Zertifikaten habe ich im Pi-hole keine Einstellung gefunden.
Ein `curl {Pi-hole-IP}` auf foo115.proxmox.meine-ip.de gibt ein "No route to host" zurück.
An diesem Punkt scheitere ich derzeit. Ich bin am Punkt des "lokalen Netzwerk only", oder?
Nachtrag: Wenn ich im Pi-hole unter Local DNS foo115.proxmox.meine-domain.de auf die IP mit dem Nginx Proxy Manager verweisen lasse, funktioniert das ganze mit Zertifikat, ohne dass die Ports 80 und 443 freigegeben sein müssen.

Jedoch nur für einen Rechner, der per VPN eingeloggt ist. Ein anderer Rechner, ebenfalls per VPN eingeloggt, bekommt keine Verbindung hin.
Die FritzBox ist so konfiguriert, dass Pi-hole als DNS-Server verwendet wird (einzustellen im Menü Internet > Zugangsdaten > DNS-Server, dort 2x die IP des Pi-hole hinterlegen). Zusätzlich muss eingestellt werden, dass bei der DHCP-Lease-Anforderung auch der Pi-hole als DNS-Server genutzt werden soll (Heimnetz > Netzwerk > netzwerkeinstellungen > weitere Einstellungen > IP-Adressen > Lokaler DNS-Server).
 
Zuletzt bearbeitet:

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.754
Ort
in der Zukunft
unbedarfte Frage am Rande?
Warum 2x Pihole und warum Docker-Container? Was läuft denn alles auf deiner Farm?
 

redbeard

Pirat

Registriert
14 Juli 2013
Beiträge
196
Ort
/home/redbeard
Ich glaube ich kriegs langsam. Also du willst deine Proxmox Dinge sowieso nur intern aufrufbar haben? Nur halt mit nem validen SSL Zertifikat?

Da du ja eh DNS Challenge machst, kannst du auch einfach deine A Records auf die lokale IP Adressen (in dem all-inkl. Dingens) zeigen lassen. Dann sparst du dir das ganze Split-Zone Gemauschel mit dem Pihole DNS.

Dann kannst du in der Fritzbox auch das DNAT auf Port80/443 wieder rausnehmen und von aussen gibts nix mehr zu sehen.


Liest sich fuer mich so, dass einfach primary und secondary DNS auf denselben pihole gesetz werden :)
 

Raubsau

NGBler

Registriert
29 Aug. 2013
Beiträge
201
  • Thread Starter Thread Starter
  • #6
Hallo,

danke für Eure Hilfe! Das ganze läuft jetzt erstmal soweit wie ich es wollte :)


Ja, die FritzBox bietet zwei Eingabefelder für DNS-Server an. Ich habe einfach bei beiden dieselbe IP eingetragen.


Wenn ich es richit verstehe, muss man einen DNS-Rebind-Schutz entfernen, wenn man A-Records auf lokale Adressen setzt.


Die nächste Frage wird irgendwann sein: "Hilfe, ich habe ein Wildcard-Zertifikat für *.meine-domain.de erstellt! Wie kann ich nun noch eins für *.rechner2.meine-domain.de erstellen?" - aber das ist für später ;)
 

redbeard

Pirat

Registriert
14 Juli 2013
Beiträge
196
Ort
/home/redbeard
Wenn ich es richit verstehe, muss man einen DNS-Rebind-Schutz entfernen, wenn man A-Records auf lokale Adressen setzt.
Wenn deine Clients auch die FB als DNS Server benutzen, dann ja. Bzw. halt deine Domain auf die Accesslist packen

Die nächste Frage wird irgendwann sein: "Hilfe, ich habe ein Wildcard-Zertifikat für *.meine-domain.de erstellt! Wie kann ich nun noch eins für *.rechner2.meine-domain.de erstellen?" - aber das ist für später ;)
Genau so wie fuer *.meine-domain.de auch :)
 

Raubsau

NGBler

Registriert
29 Aug. 2013
Beiträge
201
  • Thread Starter Thread Starter
  • #8
Nächste Frage:

Ich möchte die Container hinter dem nginx Proxy Manager nur für lokale IPs zugänglich zu machen.
Nginx Proxy Manager bietet dafür Access Lists an - z.B.
Code:
allow 192.168.0.0/16; deny 0.0.0.0/
Das funktioniert nicht, weil als anfragende IP immer die externe IP der FritzBox geloggt wird. Das Problem scheint bekannt zu sein und ist nicht gelöst.

Meine Idee: in Proxmox den Containern nur Traffic für die privaten IP-Ranges geben (auch die 172/8 und 169/8, um den Docker-Interfaces Rechnung zu tragen).

Was wäre hier das "richtige" Vorgehen?
 

redbeard

Pirat

Registriert
14 Juli 2013
Beiträge
196
Ort
/home/redbeard
Benutzt du die Public IP auch von intern um auch interne Dienste zuzugreifen? Dann reichts schon, wenn du einfach die internen IPs benutzt (dann klappten die ACLs in Nginx auch wieder)
 
Oben