Ich habe zu Lernzwecken (vor Echteinsatz) zwei NC identisch aufgesetzt (natürlich zwei IPs und zwei registrierte Domains welche auch funktionieren. Habe aber eine FB 7590 und will zwei Freigaben einrichten. Nehme ich die Standardfreigabeports 80/443 funktionieren beide. Möchte aber beide gleichzeitig betreiben d.h. habe eine neue Freigabe in der FB eingerichtet mit HTTPS Port 42279. Funktioniert dann nicht mehr. Meine Frage muss ich der einen NC an einer Stelle “sagen” das sie über 42279 und nicht über 443 erreichbar ist? Umgebung ist Nextcloud Hub 8 (29.0.4) und Ubuntu Server 24.04 LTS mit allen aktuellen Patches PHP Version: 8.1.30
Beide sind intern über 443 erreichbar mit unterschiedlichen IPs? Dann legst du eine Portfreigabe für 42279 auf 443 in der FRITZ!Box an.
das ist das erste was ich gemacht habe, leider geht es seitdem nicht. Wenn ich immer nur einen von beiden in der FB anlege dann gehts, aber den zweiten mit nicht “serienmäßigen” Port dann nicht mehr
Was genau heißt denn, geht nicht mehr in dem Fall?
ich mache in der Fritzbox eine Standardfreigabe auf Port 80 und 443. Hinterlege ich NC1 ist sie aus dem Internet erreichbar. Zeigt die Standardfreigabe auf die NC2 ist die aus dem Internet auch erreichbar. Möchte ich beide aus dem Internet erreichen muss ich bei einer Freigabe einen Port als 443 verwenden. Würde ich versuchenn 443 zu nehmen sagt die Fritzbox - kenne ich schon - also habe ich für die zweite den Port 42279 genommen. Dan ist aber dir NC mit dem Port 42279 nicht mehr erreichbar
Also gar nicht mehr erreichbar, sprich keine Fehlermeldung oder so?
Und du rufst sie korrekt über https://domain-nc2:44279 auf ?
Fehlermeldung ist: Fehler: Netzwerk-Zeitüberschreitung. Die Weiterleitung für beide Domains habe ich bei IONOS hinterlegt. Immer die welche den Port 42279 hat kommt die Fehlermeldung.
Hallo @johann-56
Da du sagst, dass du lernen willst, erlaube ich mir, ein paar grundsätzliche Gedanken zu deinem Konzept zu äussern und sage gleich zu Beginn: Ich würde es nicht so machen.
Und jetzt die Erklärung…
Zunächst kommt es darauf an, ob die beiden Instanzen auf dem gleichen Server bzw. der gleichen lokalen IP laufen oder auf verschiedenen Servern/lokalen IPs, und hier eines vorweg: In keinem der beiden Fälle muss man unterschiedliche Ports verwenden.
Falls beide Instanzen auf dem gleichen Server/der gleichen lokalen IP laufen, gibt es sogar absolut überhaupt gar keinen Grund unterschiedliche Ports zu verwenden. Stattdessen könntest du für jede Domain einen eigenen VirtualHost im Webserver einrichten (was du ja sowieso musst), die beide auf Port 443 hören und dann unterschiedliche DocumentRoots definieren (was du auch sowieso musst), in denen dann die jeweiligen Nextcloud Instanzen installiert sind. Der Webserver unterscheidet dann anhand des Domainnamens, für welchen DocumentRoot und damit für welche Nextcloud Instanz die Anfrage bestimmt ist.
Domain-nc1.de → /var/www/nc1
Domain-nc2.de → /var/www/nc2
Wenn die Instanzen auf verschiedenen Servern/lokalen IPs laufen, ist das mit den verschiedenen Ports zwar eine Möglichkeit, um Verbindungsanfragen an eine einzelne öffentliche IP an die richtige interne IP weiterzuleiten, aber imho keine sehr gute, da man, wie @SysKeeper schon sagte, immer die Portnummer mit angeben muss und damit auch die HTTP Challenge zum automatischen Bezug von Let’s Encrypt Zertifikaten nicht funktioniert (benötigt zwingend Port 80 und 443).
Eine viel elegantere Variante wäre hier ein Reverse Proxy, der die Anfragen für beide Domains auf Port 443 entgegennimmt und dann anhand des Namens die Anfragen an die richtige interne IP weiterleitet, ähnlich wie die VirtualHosts das auf dem einzelnen Server für die verschiedenen DocumentRoots machen. Gleichzeitig kann dieser Reverse Proxy dann auch noch die HTTPS-Zertifikate für alle Instanzen gleichzeitig verwalten.
Siehe auch: 101: reverse proxy
Apropos Namen. Um mehrere Instanzen zu betreiben, braucht man nicht unbedingt mehrere registrierte Domainnamen, sondern kann auch verschiedene Subdomains einer einzigen Domain verwenden (nc1.domain.de, nc2.domain.de usw.). Aber das bleibt natürlich dir überlassen.
Genau so mache ich es ebenso. Bei mir läuft alles auf einem Proxmox Note und jeder Service läuft auf einen eigenen LXC Container, dadurch hat auch jeder Dienst seine eigene interne IP.
Als DynDNS dienst nutze ich ipv64.net. dort verwalte ich meine eigenen Toplevel Domains. Es gehen auch DynDNS vom Dienst selbst.
Über ein Update-Script wird meine externe IP von meinem Router stetig mit opv64 synchronisiert
Der nginx Proxy Manager übernimmt bei mir den Rest, so wie im Beitrag von bb77 beschrieben, damit meine Dienste nach außen ohne Gefrickel zuverlässig erreichbar sind.
Also wir haben (aufgrund alter gewachsener Strukturen) mittlerweile 5 Server (4 davon mit Nextcloud) hinter einer DynDns laufen. Leider können wir nur Weiterleitungen (302) für die ungefähr 8 Subdomains machen. Die gehen alle auf unterschiedliche Ports. Da die Second-Level-Domain in allen Fällen gleich ist, bedient nur ein Server Port 80 und holt die Zertifikate über Letsencrypt. Die anderen Server holen sie sich bei ihm ab.
Ok, bisschen Eiertanz, aber es läuft. Da wir die Server und Dienste unabhängig voneinander haben wollten, haben wir dafür keinen Reverse-Proxy genommen.
Der Einfachkeit halber behalte ich die Port konsequent bei. Das heißt sowohl nginx als auch Nextcloud müssen den Port wissen. Hat den Vorteil, dass ich so auch mehrere Subdomain von außen auf einen Server lenken kann.
Wenn du also in der Portweiterleitung intern, wie extern den gleichen Port verwendest, muss dieser sowohl in der entsprechenden conf-Datei vom nginx, als auch in der config.php der Nextcloud eingetragen sein.
Hallo @bb77 zunächst mal ein großes Danke für deine ausführliche Erklärung. Zur Umgebung: 2 physikalische Maschinen - keine virtuellen. Bei Installation von den Let’s Encrypt Zertifikaten habe ich dann temporär auf FB 80/443 eingetragen. Die Lösung mit Reverse Proxy klingt für mich am geeignesten. Auf welcher Maschine würdestdu den installieren?
Natürlich kann das ganze auch anders aufgezogen werden, aber so ganz grundsätzlich muss das auch mit dem anderen Port bzw den zwei Portfreigaben funktionieren. Also irgendwas anderes ist da nicht ganz korrekt.
Wenn eine der beiden mehr Leistung oder mehr RAM hat, nimmst du vielleicht besser diese, ansonsten ist es im Prinzip egal.
In der Fritzbox leitest du einfach die Ports 80 und 443 auf eine der beiden Maschinen weiter, nennen wir sie Server 1, und dort kannst du entweder auf dem bestehenden Webserver einen zweiten VirtualHost einrichten, der dann als Reverse Proxy für Server 2 fungiert, oder du installierst zusätzlich zum bestehenden Webserver z.B. den nginx Proxy Manager, der dann als Reverse Proxy für beide Server fungiert.
Im zweiten Fall müsste die Nextcloud bzw. der bestehende Webserver auf Server 1 dann allerdings auf einem anderen Port laufen, da ja dann der nginx Proxy Manager auf den Ports 80 und 443 lauscht.
Wie du das im Detail konfigurieren musst und welches Produkt du am besten verwendest, hängt auch davon ab, wie du die beiden Nextcloud Instanzen installiert hast. Docker, Snap, eine Appliance wie Nextcloud Pi, Nextcloud AIO oder eine manuelle Installation und wenn manuell, welchen Webserver du verwendest.
EDIT:
Und ja @SysKeeper hat natürlich recht. Es sollte prinzipell schon auch mit den verschiedenen Ports funktionieren, also so wie du es jetzt hast. Was genau da schief läuft, kann ich aber nicht sagen, dazu haben wir zu wenig Infos. Kann im Prinzip alles Mögliche sein, vom DNS der fraglichen Domain, über die Router-Konfiguration bis hin zur Konfiguration des Servers selbst, der nicht erreichbar ist.
Webserver ist der Apache, Installation manuell nach einem sehr guten Video auf Youtube. Wobei ich zu der Lösung mit dem zweiten Virtualhost neige.
aktuell habe keine grafische Oberfläche weil ich die ganzen Konsolenbefehle lernen will, brauche ich für Nginx eine grafische Oberfläche?
Ich muss vorwegnehmen, dass ich selbst Nextcloud nicht hinter einem Reverse Proxy betreibe, dir also keine detailierten Konfigurationsbeispiele oder eine Schritt für Schritt Anleitung anbieten kann.
Ich würde vermutlich diesen Weg gehen, denn der Apache ist ja eh schon da, also warum nochmal einen zweiten Webserver wie nginx davor schalten. Theoretisch gäbe das vielleicht einen leichten Sicherheitsgewinn, da der Reverse Proxy aber auf dem gleichen Server laufen würde wie der Apache mit der einen Nextcloud, relativiert sich das wieder und es mach die Konfiguration komplizierter, sprich höheres Risiko für Fehlkonfigurationen.
Nein. Alles was der nginx Proxy Manager macht, kann man auch manuell mit config Files machen, und die Zertifikate kann man auch via Konsole mit Tools wie Certbot oder acme.sh managen.
Schau mal unter decatec.de nach. Da wird einiges erklärt, auch mit 2. Installation auf einem Server. Das Geheimnis besteht aus Subdomain. Adressen
Einfach mal lesen und verstehen
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.