Port geschlossen

  • Hallo,


    ich habe Ubuntu Server 18.04 auf meinem VServer installiert und es läuft eigentlich alles super.

    Jetzt habe ich aber eine Anwendung, die ich manuell auf dem Server starte und die Port 8080 benötigt.

    Ich hab diesen dann versucht, mit Hilfe von ufw -allow 8080 freizuschalten, allerdings zeigt sich kein Erfolgt - auch Portscanner im Internet zeigen an, dass der Port geschlossen ist.

    Wenn ich Apache installiere, öffnet sich der Port ja "automatisch"...


    Meine Frage: Wie kann ich dafür sorgen, das Port 8080 auf meinem Ubuntu Server geöffnet wird?


    Viele Grüße

    Florian

  • Wenn du den Port wie du oben geschrieben hast "manuell öffnest" wie genau machst du das denn? Startest du die App manuell ($ my-app start)? Machst du das wenigstens in einer Screen/Tmux Session? Sonst beendet sich ja der Prozess, wenn du dich wieder ausloggst. Schau auch mal, ob der Port wirklich offen ist (mittels "ss -tulpn"). Poste auch mal den den Output des letzten Befehls. Nicht, dass der Dienst evtl. nur auf localhost/127.0.0.1 lauscht. Gibt da einige Dinge, die es sein könnten.

  • Hallo,


    als erstes mal zu der "App".

    Es ist die Anwendung code-server: https://github.com/cdr/code-server

    Diese habe ich mit den zwei angegebenen Befeehlen (von GitHub) installiert und dann gestartet (durch die Eingabe code-server)


    Die Ausgabe des Befehles sieht so aus:


    Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port

    udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*

    udp UNCONN 0 0 45.129.180.112%ens3:68 0.0.0.0:*

    tcp LISTEN 0 128 127.0.0.1:8080 0.0.0.0:* users:(("node",pid=8610,fd=19))

    tcp LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*

    tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*

    tcp LISTEN 0 128 [::]:22 [::]:*



    Viele Grüße

    Florian

  • Was sagt denn netstat -tulpen | grep -i 8080? Kann es sein, dass der Dienst nur auf Localhost horcht und einen Reverseproxy haben will?

    Kurz in die Installation.md geschaut und da steht das auch so:

    Code
    1. # Now visit http://127.0.0.1:8080. Your password is in ~/.config/code-server/config.yaml
  • Da haben wir ja vermutlich schon die Ursache:

    "127.0.0.1:8080"


    Du musst den Port an deine externe IP binden bzw. auf 0.0.0.0, damit diese von extern erreichbar sein kann. Das wirst du entweder beim Starten oder in der Konfiguration angeben müssen.


    Bitte beachte aber die Dokumentation der App. Insbesondere den Hinweis

    Never, ever expose code-server directly to the internet without some form of authentication and encryption as someone can completely takeover your machine with the terminal.

    Das obige Vorhaben klingt daher nicht sonderlich klug...

  • Um aber noch einen konstruktiven Vorschlag zu machen (daher auch als neuen Post). Installiere dir noch einen Reverse Proxy davor und aktiviere doch zumindest einen Basic Auth Schutz + SSL Zertifikat, so dass du die App über eine verschlüsselte https Verbindung aufrufen kannst. Dann kann der Server ruhig auf 127.0.0.1 lauschen und du musst nur deinen RP extern erreichbar machen.

  • Hallo,


    vielen Dank für den Tipp, ich werde mich mal mit der Konfigurationsdatei vertraut machen.


    Den Abschnitt mit der Sicherheit habe ich auch bereits gelesen. Sobald das erstmal läuft werde ich mich um das SSL Zertifikat und das SSH Forwarding kümmern:) -aber danke für den Hinweis


    PS:

    Was sagt denn netstat -tulpen | grep -i 8080?

    root@Server-L-Florian:~# netstat -tulpen | grep -i 8080

    tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 1000 59039 8610/node


    Viele Grüße

    Florian

  • Ja natürlich. Ich empfehle eine der beiden Varianten (je nachdem mit was man sich besser auskennt).


    1. nginx (https://docs.nginx.com/nginx/a…ttp-basic-authentication/)


    2. traefik (https://docs.traefik.io/middlewares/basicauth/)


    Geht natürlich auch mit Apache, falls du damit besser vertraut bist (https://cwiki.apache.org/confl…y/HTTPD/PasswordBasicAuth).