NGINX Proxy Manager und Docker

Hallo Zusammen,

ich habe bei mir Zuhause einen Raspberry Pi5 mit Docker laufen. Auf diesem laufen nun verschiedene Container:

  • NGINX ProxyManager
  • Vaultwarden
  • Heimdal
  • PiHole
  • Portainer
  • Home Assistant
  • Grafana

Einige Dienste wie Vaultwarden ist extern über DynDNS erreichbar und funktioniert sehr gut über den NGINX ProxyManager.

Da ich nun immer mit den Ports durcheinander komme, möchte ich den anderen Diensten auch eine URL zuweisen. Hier möchte ich allerdings einige nur Intern im LAN zur Verfügung stellen und nicht über die DynDNS Adresse. Wie kann ich dies am besten machen?

Viele Grüße
Björn

eine Möglichkeit wäre eine interne Umleitung zu machen, funktioniert zumindest wen man eine Domain hat, eine Subdoamin anlegen z.b. local.webseite.de diese auf die interne IP von deinem NPM leiten, jetzt Subdoamin für deine internen dienste anlegen und mit cname auf die local.webseite.de zeigen lassen, so kannst du deine internen dienste sogar mit Let’s Encrypt Zertifikate ausstatten.

Hi,

kannst du bei dem Container, den du bloß aus dem internen Netz möchtest an der Stelle

allow 192.168.1.0/24
deny all

einfügen?
Natürlich angepasst auf dein Heimnetzwerk?

ja ich kann beim NGINX Proxy Manager durch die Accesslist dies begrenzen.

Ich probiere es aus.

Du kannst im NPM entsprechende ACLs bauen. Somit könntest du Proxy Hosts definieren, ob LAN und WAN oder nur LAN. Mache ich bei bestimmten Services über den NPM seit Jahren - tut was es soll.

ich brauche nochmal euren Rat zu Docker. Es gibt ja auch die Möglichkeit jedem Container eine direkte IP-Adresse zu geben oder es über den Reverse Proxy zu machen. Welche Variante ist hier die schlauere oder gibt es diese gar nicht?

Ich bekomme es bis jetzt nur über den NGINX Proxy Manager hin eine SubDomain über DynDNS einzurichten:

z.B. bitwarden.XXX.ipv64.net kann ich extern wunderbar aufrufen. Intern ja auch aber über die externe IP-Adresse.

Wenn ich dies nun für Portainer so machen will und eine Accesslist anlege gehe ich Intern ja auch immer über die externe DynDNS IP Adresse und komme nicht drauf. Portainer will ich ja nicht extern erreichen können. Ich bin etwas ratlos

Hast du eine Subdomain portainer.xxx.ipv64.net angelegt, welche als A-Eintrag auf deine öffentliche IP-Adresse zeigt? Diese richtest du entsprechend im NPM ein.

Hast du die ACL entsprechend dem Proxy Host zugewiesen?

Moin @lnix,

Meiner Meinung nach hast du jetzt an der Stelle ein Problem mit dem Routing. Wenn du jetzt deine URL aufrufst schaut dein DNS ja nach dem Ziel, da es sich im WWW befindet bekommst du als Ziel auch die externe IP Adresse zurück und verbindest dich auch dort hin. Somit stehst du durch die NPM ACL vor verschlossener Tür.

Ich habe das bei mir so gelöst das ich intern in meinem DNS Server (in dem Fall ADGUARD) meinen externen Subdomains, die internen IP Adressen zugewiesen habe.
Nennt sich DNS-Alias oder Umschreibung.

In dem Fall wird immer im internen Netz zum angeforderten Namen die lokale IP Adresse zurückgegeben.

Alternativ kannst du in deinem lokalen Netzwerk auf mit dem DNS Suffix arbeiten den dein DNS verteilt.
Und darauf die DNS Aliase setzen, hierbei wirst du wahrscheinlich aber das Problem bekommen dass es Zertifikatswarnungen geben. Wenn du die Namen nicht noch explizit in die Zertifikate mit aufnimmst

Das ist korrekt. Alternativ kann man seine eigene Domain in der „DNS Rebind Protection“ von Router ausnehmen bzw. als „Trust“ eintragen. Dann gehen die Anfragen aus dem Internet, die auf sich selbst zeigen, ebenfalls durch und werden nicht geblockt.