# Node.js HTTP Server auf VPS Server aufrufen



## Javaris (2. Jan 2021)

Hallo, ich versuche zur Zeit mit Node.js Sachen aus zu testen, ich kann etwas Hilfe gebrauchen, bin noch ganz neu dabei.

Ich habe heute ein einfaches HTTP Server Beispiel ausgestet, folgender Code kommt in eine index Javascript Datei und dann startet man die Datei ueber node index.js


```
var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World!');
}).listen(8080);
```

Wenn man dann im Browser die Adresse http://localhost:8080 eingibt bekommt man ein "Hello Wordl" im Browser zurueck, ganz simpel und einfach klappt alles.

Jetzt habe ich das ganze auf die gleiche Weise auf ein VPS Server installiert und dort funktioniert es natuerlich auch genauso wie auf meinem PC, aber was ich jetzt machen will ist folgendes, wenn ich auf meinem lokalen PC die IP adresse von meinem VPS Server aufrufe, dann will ich den node.js server erreichen koennen und von ihm die Ausgabe auch bekommen, also zum beispiel folgende Adresse will ich auf meinem lokalen PC im browser eingeben: http://194.84.342.181:8080  also statt localhost gebe ich die IP Adresse vom VPS Server ein.

Im Moment funktioniert es nicht und ich weis nicht genau warum, muss ich in der index.js datei auf dem VPS Server Sachen einbauen und aendern, oder muss man fuer den VPS Server irgendwelche Sachen anders einstellen?


----------



## LimDul (2. Jan 2021)

Du musst vermutlich bei Listen die IP Adresse des Servers (oder 0.0.0.0 für alle IP-Adressen) angeben.


----------



## kneitzel (2. Jan 2021)

Also ohne Angabe einer IP sollte listen doch eigentlich an alle Adapter binden. Ich habe zwar mit node.js und dem http noch nichts gemacht, aber das wäre das übliche Vorgehen.

Was für ein Server hast Du denn da, wo du es laufen lässt? Ich würde da eher auf eine Firewall oder so tippen, die da Verbindungen von außen nicht zuläßt.


----------



## Javaris (2. Jan 2021)

LimDul hat gesagt.:


> Du musst vermutlich bei Listen die IP Adresse des Servers (oder 0.0.0.0 für alle IP-Adressen) angeben.


ich weis nicht genau bescheid wie man vps server generell einstellt, ich wunder mich nur das es nicht auf Anhieb geklappt hat.
Wo kann man das den nachsehen was du beschreibst?


----------



## Javaris (2. Jan 2021)

kneitzel hat gesagt.:


> Also ohne Angabe einer IP sollte listen doch eigentlich an alle Adapter binden. Ich habe zwar mit node.js und dem http noch nichts gemacht, aber das wäre das übliche Vorgehen.
> 
> Was für ein Server hast Du denn da, wo du es laufen lässt? Ich würde da eher auf eine Firewall oder so tippen, die da Verbindungen von außen nicht zuläßt.


Ich habe ein windows vps server vom Anbieter vps2day. ich kenne mich leider auch nicht aus wie man vps server einstellt.


----------



## JCODA (2. Jan 2021)

Meistens muss man noch angeben, dass man "mehr als localhost" möchte, zum Beispiel so: 


```
var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World!');
}).listen(8080, "0.0.0.0");
```

Ich habe keine Erfahrung mit node.js, ich habe aber das hier gefunden: https://stackoverflow.com/a/44962707


----------



## httpdigest (2. Jan 2021)

kneitzel hat gesagt.:


> Also ohne Angabe einer IP sollte listen doch eigentlich an alle Adapter binden.


Korrekt: https://nodejs.org/api/net.html#net_server_listen_port_host_backlog_callback


> If host is omitted, the server will accept connections on the unspecified IPv6 address ( : : ) when IPv6 is available, or the unspecified IPv4 address (0.0.0.0) otherwise.


Es ist nicht nötig, die Wildcard-IP Adresse oder die öffentliche IP des Servers anzugeben.

@Javaris Meine Vermutung ist, dass hier einfach eine (default) Firewallregel greift, die erstmal (eventuell) nur SSH zulässt.
Bekommst du denn ein Socket- bzw. Connection Timeout, wenn du dich auf den VPS Server per Browser mit :8080 verbinden willst? Oder was für einen Fehler bekommst du genau?


----------



## Javaris (2. Jan 2021)

httpdigest hat gesagt.:


> Korrekt: https://nodejs.org/api/net.html#net_server_listen_port_host_backlog_callback
> 
> Es ist nicht nötig, die Wildcard-IP Adresse oder die öffentliche IP des Servers anzugeben.
> 
> ...



ich habe eben heraus gefunden, das es dann funktioniert wenn ich die Firewall auf dem vps server komplett ausschalte. Also wird es daran liegen.
Jetzt muss ich mich wohl noch etwas genauer einlesen zum Thema Firewal und Ports freigeben, meint ihr als Laie darf man sowas ueberhaupt probieren, ist das nicht zu riskant wenn ich ein Port freigebe und nachher kann jeder irgendwie uebr dieses Port auf dem VPS Server zugreifen?


----------

