Ionic Verbindung zur Datenbank über Internet

Hallo,

mein Problem ist, dass ich mein Ionic Projekt im Brower über das Internet mit einer Datenbank verbinden will, genauer gesagt soll die Verbindung zu einem anderen meiner Projekte durchgeführt werden, welches ein Quarkus-Projekt ist.
Grundlegend also das Quarkus-Projekt als Backend und das Ionic-Projekt als Frontend.

Mit Localhost habe ich bereits eine Verbindung. Musste dazu in der application.properties die CORS-Eigenschaften eintragen, dass der die Port-Verbindung akzeptiert, das funktioniert also schon.
Ich hatte gedacht, dass ich bei den jeweiligen Angaben der URL in den beiden Projekten die IP-Adresse („IP-Adresse“ : „portnummer“) angebe, also die jeweils andere IP, anstatt von http://localhost:„portnummer“, aber das hat nicht funktioniert.

Im Internet habe ich jetzt auch nichts gefunden, weil bisher alle nur über localhost gehen, kann mir jemand vielleicht erklären wie das genau gehen soll?

Zur Info einmal Starte ich das Programm über meine PC und einmal über meinen Laptop, und ja ich habe die richtigen IP-Adressen angegeben.

Gruß Felix

Du schreibst hier einerseits „über Internet“ und andererseits von zwei Anwendungen die auf zwei deiner PC laufen. Sind die denn an zwei getrennten Standorten? Oder reden wir hier eher von einer Verbindung innerhalb des heimischen (W)LAN? Ich gehe jetzt erst einmal von letzterer Variante aus, die auch deutlich einfacher wäre.

Haben die beiden Geräte in deinem LAN feste IP-Adressen oder beziehen sie diese über DHCP, womit sie sich jederzeit ändern können? Für den Anfang solltest Du bei solchen Geschichten immer mit festen Adressen arbeiten. Das schließt weitere Fehlermöglichkeiten diesbezüglich erst einmal aus.

Dann wäre es wichtig zu wissen, welche Betriebssystem auf den beiden Geräten laufen, und wie deren Konfiguration in Bezug auf ggf. vorhandene Firewalls aussieht. Da muss auf die entsprechende Verbindung zugelassen sein/werden, sonst passiert da trotz passender Adresse und passendem Port gar nichts. D.h. ohne die von Dir eingesetzten Dinge zu kennen, muss für den Zugriff auf die Datenbank zumindest der PC auf dem diese läuft eingehende Verbindungen des für den Zugriff verwendeten Protokolls auf dem jeweiligen Port zulassen. Ggf. sind bei den von Dir verwendeten Dingen noch weitere Freigaben von Verbindungen notwendig.

Also auf beiden Geräten läuft Win10, mein PC ist über eine Ethernet-Verbindung mit dem Router verbunden, und mein Laptop benutzt das WLAN des Routers. So gesehen habe ich eine Verbindung über den Router.
Über IP-Config habe ich die IP-Adressen, abgefragt. Also ist es eher eine Verbindung innerhalb eines Netzwerkes, deswegen wollte ich auch die IPv4-Adressen nehmen. Müsste ich bei einer Verbindung übers Internet, also bspw. von meinem Zuhause mit einem anderen Ort, dann IPv6-Adressen nehmen?
Also wenn ich eine Verbindung der Projekte auf einem gemeinsamen Gerät mache muss ich in den beiden Dateien dafür die URL angeben. Also http://localhost:8080/ und http://localhost:8100/ und natürlich die weiteren „Angaben“ in der URL um auf das Projekt zuzugreifen also bspw. „/Q-Projekt“/ bei Ionic und „/I-Projekt/“ beim Quarkus-Projekt.

Was genau müsste man denn für Konfigurationen machen in der Firewall, um diese Verbindung zu erreichen. Immerhin habe ich keine Meldung der Firewalls bekommen, falls die Projekte sich bereits verbunden haben sollten… Die IP-Adressen sind zumindest in diesem Netzwerk soweit festgelegt, dass Sie sich nicht ändern, so wie ich das sehe.

Localhost ist meines Wissens aus dem Internet genauso wenig erreichbar wie IP-Adressen aus dem Adressbereich 192.168.*

Also wenn ich mit IPv4-Adressen ein Spiel übers „Internet“ spiele im Gleichen Netzwerk geht das auch. Also sollte zumindest die Verbindung im selben Netzfunktionieren, schließlich kann man ja auch mit dem ping Kommando die Verbindung prüfen also sollte das schon gehen. Wenn auch nicht unbedingt außerhalb des Routers.
Mit „Internet“ meine ich jetzt nur das ich nicht extra die Internetverbindung trenne, sondern mit einer Internetverbindung im eigenen Hausnetzwerk mich verbinde.

Jein, die heute üblichen WLAN-Router sind eine Kombination verschiedener Komponenten. Hier wird dann nur die Komponente „Switch“ und die Komponente „Accesspoint“ genutzt und die ganze Sache spielt sich lokal in deinem eigenen (W)Lan ab. Mit dem Internet hat sie nichts zu tun, auch wenn es in de Gerät auch noch die Komponente „Router“ gibt.

Schon da musst Du aufpassen, dass Du die richtigen erwischt. Denn Laptops haben üblicherweise zwei Adressen, einmal die für die Netzwerkschnittstelle und einmal die für den WLAN-Adapter. Von ggf. weiteren Adressen für virtuelle Maschinen, … mal ganz abgesehen.

Wenn Du sowohl IPv4 als auch IPv6 korrekt für die beiden Geräte und die dazwischen stehenden Netze konfiguriert hast, geht beides.

Wie schon geschrieben kenne ich die konkreten Dinge, die Du da benutzt nicht. Aber offenbar findet da eine Kommunikation auf den Ports 8080 und 8100 statt, wobei aus deiner Schilderung nicht ganz klar wird, ob das beides Ports auf der „Server-Maschine“ mit der DB sind. Du musst Dir halt ansehen, auf welcher Maschine welcher Dienst mit welchem Port läuft und diese dann in der Firewall für eingehende Verbindungen entsprechend freigeben. Wenn das hier einfache Webserver sind, dann würde man über Systemsteuerung/Windows Defender Firewall/Eingehende Regeln eine neue eingehende Regel auf der entsprechenden Maschine für den entsprechenden Port anlegen, die einen TCP-Zugriff ermöglicht. Alternativ kennt die Windows Firewall auch die Freigabe für Apps. D.h. je nachdem was Du da verwendest, kannst Du auch das entsprechende Programm an sich dort eintragen.

localhost ist nur der Name der Adresse 127.0.0.1 die per Definition immer auf das eigene Netzwerkinterface verweist. D.h. die ist grundsätzlich nur über das eigene Gerät erreichbar, weil jedes andere Gerät eine eigene 127.0.0.1 hat, die auf das eigene Interface verweist. Vorteil von localhost ist, dass man sich, solange man sich nur mit Diensten auf der eigenen Maschine beschäftigt, keinerlei Gedanken um tatsächliche Adressen machen muss und auch komplette Konfigurationen mit mehreren Diensten auf einer Maschine problemlos durch die Weltgeschichte kopieren kann, weil alles, auf das über localhost zugegriffen wird, sich immer auch die eigene Maschine bezieht, egal welche dies tatsächlich ist und ob/wie die tatsächlich in ein Netzwerk eingebunden ist.

1 Like

Das ist aber eine ganz andere Geschichte. Da bauen beide Geräte eine eigene Verbindung zu einem Server im Internet auf und betreibt keine der Maschinen einen Dienst, der eingehende Verbindungen zulassen muss.

Ebenfalls eine andere Geschichte, weil Ping einen Sonderfall darstellt, der standardmäßig aktiviert und zugelassen ist.

1 Like

Das ist nicht ganz richtig, ich rede hier nicht von Online-Spielen, bei alten Spielen bspw. Anno 1602, Siedler 4, gibt es keinen Server im Internet, viel mehr ist der Host der das Spiel leitet dann der Server, und die Teilnehmenden sind die Clients.

Habe jetzt die entsprechenden Ports für Ein und Ausgang soweit freigegeben, also für die Projekte auf den Geräten eine Ausgangs-Regel und für den Zugriff auf das andere Gerät eine Eingangsregel mit den jeweiligen Ports, auf den anderen Gerät natürlich. Ist das so richtig?

Ich glaube aber jetzt da ich nochmal geschaut habe, das die gar kein Signal nach draußen senden, immerhin definieren sie als Zugang den localhost, vielleicht muss ich irgendwas in den Einstellungen der Projekte ändern damit die ein Signal nach draußen senden.
Da habe ich aber keine Ahnung von… Da müsste mir glaub ich schon jemand antworten der Ionic und/oder Quarkus bereits kennt.

Kann ich jetzt nicht im Detail nachvollziehen, was Du da gemacht hast.

Natürlich musst Du zusätzlich zur Portfreigabe dann für die Dienste auf dem jeweils anderen PC auch dessen echte IP im eigenen Netz verwenden. D.h. wenn da aktuell auf dem Gerät, das künftig nur noch Client sein soll, als Datenbankserver noch http://localhost:8080/datenbank konfiguriert ist, die Datenbank jetzt aber auf dem PC mit der IP 192.168.1.15 betrieben wird, dann musst Du den Pfad auf dem Client natürlich auf http://192.168.1.15:8080/datenbank ändern.

Das QuarkusProjekt ist im Grunde das Backend und soll auf Abruf, mit teilweise benötigten Informationen wie Logindaten etc., Daten zurücksenden, halt die Datenbank.
Das Ionic-Projekt ist nur das Frontend und holt sich immer alle Daten die sie benötigt vom Backend. Dazu gibt sie auch Informationen an wie UserDaten um Authentisieren oder andere Informationen um bspw. eine Liste von Objekten zu holen mit denen im Frontend irgendwas gemacht werden kann. Halt ein Typisches Frontend wenn man so will (Und ich jetzt nicht alles durcheinander gebracht habe).

Ich habe auf Gerät1 eine eingehende Regel erstellt für das Ionic Projekt(8100) und eine Ausgehende Regel für das Quarkus-Projekt(Port 8080), das Quarkus-Projekt ist auf Gerät1.

Auf Gerät 2 habe ich eine Eingehende Regel für das Quarkus-Projekt(Port 8080) und eine Ausgehende Regel für das Ionic-Projekt(Port 8100). Das Ionic-Projekt ist auf Gerät2.

Ich das so richtig oder wie genau müsste das gemacht werden?
Kannst du dazu notfalls auch ein Beispielmachen?

So ich habe es jetzt hinbekommen ich musste neben der Angabe das ich auf diese Bestimmten Adressen und Port zu greife, natürlich auch die PRojekte so starten das sie nicht den Localhost nehmen sondern die IP des Rechners auf dem Sie sich befinden.

Keine Ahnung ob das mit den Ein. und Ausgehenden Regeln hätte gemacht werden müssen, aber so funktioniert die Verbindung auf jeden Fall.
Nochmal vielen Dank für die ganzen Denkanstöße so konnte ich die Richtige Antwort finden.

Gruß Felix