So habe ich es gemacht, aber irgendwie funktioniert es nicht.
1.) KVM mit Ubuntu 20.04 erstellt.
2.) Docker und Docker-Compose installiert
3.) NPM installiert.
4.) in NPM Proxy Host erstellt.
View attachment 28968
Die Seite wird aber nicht aufgerufen (nur Weißes Bild)
Muss ich noch was beachten?
Port 81? Der wird doch von NPM selbst für die WebGUI verwendet.
Grundsätzlich muss auf DNS-Ebene mit NPM gearbeitet werden. Also alle Hosts/VMs, welche sowohl von außen als auch von innen erreicht werden sollen, müssen über ihren Namen, nicht die IP angesprochen werden.
Je nach lokaler Gegebenheit (Router/Firewall & DNS-Server) können dann sowohl externe (Sub)Domains als auch interne Domains via NPM gemanaged werden. Für externe Domains kann dann auch ein SSL-Cert in NPM genutzt werden.
Externe Domains müssen logischerweise auf die IP oder DynDNS-Namen des eigenen Internetanschlusses verweisen. Bei DynDNS empfiehlt sich die Verwendung von CNAMES statt A-Records beim Hoster.
Voraussetzungen
Für den Zugriff von
außen müssen auf der Firewall/Router Port 80 & 443 per Port Forwarding (NAT) auf die IP des Docker-Hosts mit NPM geleitet werden.
Zusätzlich dazu sollte man überprüfen, ob sowohl auf dem PVE als auch in VM/LXC zusätzliche Firewallregeln aktiv sind, welche die Ports 80 & 443 (TCP) ggf. blocken.
Beispiel: nextcloud.meinedomain.de als Subdomain -> verweist als CNAME-Record beim Hoster auf -> meineninternetanschluss.dyndns.org
In NPM erzeugt man einen Eintrag (Proxy Hosts -> Add Proxy Host) und trägt hier ein:
Domain names: nextcloud.meinedomain.de
Scheme: http (https, wenn die VM bzw. der Server mit Nextcloud nur auf 443 lauscht)
IP: IP-Adresse der VM/Host, welcher den Dienst bereitstellt
Port: 80 (443 bei der Verwendung von HTTPS)
Bei Diensten wie Nextcloud sollte man "Block Common Exploits" sowie "Enable Websockets Support" aktivieren. Im nächsten Schritt kann ein SSL-Zertifikat für nextcloud.meinedomain.de beantragt und zugewiesen werden. Sobald das Zertifikat aktiv ist, kann in den SSL-Options des Proxy Hosts bspw. die Verwendung von SSL forciert werden ("Force SSL").
Möchte man
interne Dienste/Namen mit NPM managen, muss ein entsprechender DNS-Server im LAN vorhanden sein. Das reicht von einer Fritte bis hin zu Unbound, PiHole, AdGuard, etc. Der lokale DNS-Server muss dann über entsprechende Einträge verfügen,
welche auf die IP des NPM verweisen, dieser erledigt dann den Rest. Bei den Blockdiensten wie PiHole oder AdGuard kann man Domains umbiegen (PiHole: Local DNS -> DNS Records | AdGuard: Filter -> DNS Umschreibungen). Bei pfSense/OPNsense geht das bei DNSMASQ/Unbound mittels "Domain override".
Beispiel: meinserver.meinlan.local -> verweist als Eintrag im lokalen DNS-Server auf IP-DER-VM-MIT-NPM
Als Proxy Host wird dann meinserver.meinlan.local bei Domain eingetragen, anschließend ebenfalls die IP, Schema und Port.
Hosts können unter mehreren Namen erreichbar sein bei gleicher IP.
Edit: Schema hinzugefügt