NodeJS in Webhosting 4000 NGINX?

  • Ich bin vor kurzem zum Webhosting 4000 Paket gewechselt, um einfache NodeJS Anwendungen bei netcup hosten zu können.

    Eine dieser Anwendungen ist Actual Budget (https://github.com/actualbudget/actual-server), die versuche ich aktuell vergebens, erreichbar zu machen.

    Es scheint, als würde die Anwendung laufen (ein weiteres Ausführen von 'yarn start' resultiert in 'Error: address already in use'). Den Port dafür kann ich über eine JSON config frei wählen.

    Ich würde gerne die Anwendung über die Subdomain via HTTPS verfügbar machen und gehe davon aus, dass das NGINX Konfiguration erfordert.

    Die entsprechenden Optionen dafür habe ich im WCP bisher aber nicht finden können.


    Ein anderer Punkt, der mich etwas verwirrt: Der server wird über 'yarn start' gestartet, ich habe aber bisher keinen Weg gefunden, diesen wieder zu stoppen.

    Selbst, wenn ich NodeJS deaktiviere und wieder aktiviere, ist der Port nach wie vor in Benutzung...


    Über jegliche Hilfe würde ich mich sehr freuen!

  • Danke für die Antwort! ich habe mir die Seite durchgelesen, aber konnte da noch keine Lösung für mein Problem herausziehen.

    Ich habe in der actual-server config den default port auf process.env.PORT gesetzt.

    Starte ich die Anwendung, meldet Plesk: Application will be restarted after the first request.

    Öffne ich die subdomain im Browser, so bekomme ich folgenden Fehler: Web application could not be started by the Phusion Passenger(R) application server.


    Bin nach wie vor etwas ratlos :/

  • Die https Verschlüsselung würde man per Let's Encrypt Zertifikat ganz normal auf der Subdomain aktivieren und nicht per https Anweisung in der config des Servers auf dem Standardport 5006. Den durch process.env.PORT zu ersetzen, welchen die Plesk Phusion Lösung vorgibt ist also mindestens nötig.

    Der passenger Loader von Plesk Phusion würde den Server vermutlich auch versuchen zu starten, aber ich scheitere ebenfalls an zwei Problemen und bin kein JS Guru und wende hier nur brutale Schrotflintenlösungen an. Für alle Tests habe ich eine Node.js-Version >= 18 festgelegt, also 19.9.0 oder 20.12.0 oder höher und den Package Manager auf yarn gesetzt.

    Den ersten Fehler den ich bekomme beim Drücken von [Yarn-Installation] ist folgender:

    Zitat

    error This project's package.json defines "packageManager": "yarn@4.0.1". However the current global version of Yarn is 1.22.22. Presence of the "packageManager" field indicates that the project is meant to be used with Corepack, a tool included by default with all official Node.js distributions starting from 16.9 and 14.19. Corepack must currently be enabled by running corepack enable in your terminal. For more information, check out https://yarnpkg.com/corepack.

    Weil ich aber wie vorgeschlagen unter https://yarnpkg.com/corepack das corepackage enable auf der Konsole nicht eingeben kann und auch nicht per npm install -g corepack installieren kann, wegen Berechtigungsproblemen entferne ich den Abschnitt einfach aus der package.json


    Code
    ,
    "packageManager": "yarn@4.0.1"


    Jetzt kann ich mit [Yarn-Installation] zumindest die Abhängigkeiten installieren, bekomme aber schon einige Warnungen. Und beim Versuch, die Anwendung zu starten, spuckt mir Plesk Phusion die nächste Fehlermeldung aus, noch bevor wir man sich um den Port kümmern könnte:



    Und diese Fehlermeldung sagt aus, dass die app.js von actualbudget in der Form nicht vom Plesk Phusion Passenger Anwendungsserver geladen werden kann.
    Die Art des Projekts und Einbindung der ES Module (ESM) müsste anders gemacht werden, wenn die Meldung korrekt ist und nicht aufgrund der vorigen Anpassungen schon falsche Angaben macht.


    Ein ähnliches Problem wurde schon einmal hier im Februar 2024 erwähnt, aber ohne Lösung abgeschlossen:


    NodeJS App läuft nicht: Error [ERR_REQUIRE_ESM]: require() of ES Module - netcup Kundenforum
    Hallo allerseits, Ich versuche seit gestern eine sehr simple NodeJS Anwendung ans Laufen zu bekommen und scheitere immer wieder. Ich hab die Beispiel-Projekte…
    forum.netcup.de


    Da bin ich auch mit meinem Laien-Latein am Ende und man könnte höchstens beim Projekt selbst höflich nachfragen z.B. per GitHub Issue, ob da einer weiterhelfen möchte oder kann, den actualbudget Server unter dem Phusion Passenger(R) application server zum Laufen zu bekommen.


    netcup_plesk_phusion_passenger_application_server_error_config.png

    WH8000 SE 🥚 20 | WH1000 SE OST22 | WH1000 SE OST23 | WH1000 SE OST24 | WH 🥚🧶🥛🐖 | 🦆 VPS 200 🇺🇦🕊️

    4 Mal editiert, zuletzt von Copro () aus folgendem Grund: Formattierung gerettet.

  • Ich schreibe es bei Gelegenheit nochmal mit einem sauberen Setup runter - aber es hat doch noch geklappt :P

    Entscheidender Hinweis über einen stackoverflow Hinweis. Es bleibt die Modifikation der package.json in der ,"packageManager": "yarn@4.0.1") entfernt wird, damit yarn funktioniert und die Abhängigkeiten per Klick auf [Yarn-Installation] installieren kann.



    Die vorgeschlagene Modifikation der process.env.PORT in der load-config.js Zeile 49 statt Port 5006 ist auch gut und bleibt.


    src/load-config.js Zeile 49:

    Code
     port: process.env.PORT,


    Erstelle zusätzlich eine entry.cjs Datei mit folgendem Inhalt und trage die als Anwendungsstartdatei ein in der Node.js Konfiguration im WCP.

    entry.cjs:

    Code
    // Diese entry.cjs ersetzt die app.js als Anwendungsstartdatei mit entry.cjs angelehnt an:
    // https://stackoverflow.com/questions/69297449/how-can-i-correct-this-esm-error-with-phusion-passenger
    async function loadApp() {
      const { app } = await import("./src/app.js");
    }
    loadApp();


    Und ganz am Ende ergänze ich noch den Aufruf run() am Ende der src/app.js:

    Code
    run();


    Konfiguration sollte also so aussehen:
    netcup_wcp_nodejs_yarn_actualbudget_settings.png

    Damit ist die App schonmal erreichbar, aber der Server noch nicht erreichbar.


    Der kann aber wie beschrieben dann über "Node.js-Befehle ausführen" mit yarn start ganz einfach gestartet werden.
    netcup_wcp_nodejs_befehl_yarn_start.png

    Wenn alles klappt, stellen wir den Anwendungsmodus von "development" wieder auf "production".

    Aufruf erfolgt dann über https://actualbudget.beispiel.de und wenn alles gut gegangen ist, wird man mit "Welcome to Actual!" begrüßt und kann sein Passwort festlegen.

    Ob sich dafür ein Tutorial lohnt, weiß ich noch nicht. Nehme aber gerne Feedback oder Aufrufe dazu entgegen.

    WH8000 SE 🥚 20 | WH1000 SE OST22 | WH1000 SE OST23 | WH1000 SE OST24 | WH 🥚🧶🥛🐖 | 🦆 VPS 200 🇺🇦🕊️

    Einmal editiert, zuletzt von Copro () aus folgendem Grund: Formattierung Fix v2

    Ente gut, alles gut 1 Gefällt mir 1
  • Das ist mit Abstand das netteste Feedback, dass jemals irgendwo online bekommen habe und ich sage Danke und drücke die Daumen.
    <3

    WH8000 SE 🥚 20 | WH1000 SE OST22 | WH1000 SE OST23 | WH1000 SE OST24 | WH 🥚🧶🥛🐖 | 🦆 VPS 200 🇺🇦🕊️

    Haha 1 Gefällt mir 1
  • Funktioniert einwandfrei! Deinen beschriebenen Schritten gefolgt und in 5 min die Anwendung laufen gehabt :)
    Actual Budget hat zwar hier und da ein paar Schwierigkeiten mit dem Bank Sync, die tauchen aber auch auf, wenn ich das lokal ausführe.

    Einmal gab es einen 504, da musste ich die Node App über WCP neustarten, seither funktioniert aber alles perfekt :)


    Danke nochmal!

  • Sehr schön - würde mich freuen, wenn Du einer faulen Socke wie mir noch erklärst, wofür man das genau einsetzen kann ^^
    Vielleicht biete ich das Ganze nochmal als Community Tutorial an, oder erstelle ein paar PR für das Projekt an sich, wenn man das Node.js corepack nicht aktivieren oder nutzen kann.

    Ich werde es auf jeden Fall auch mal anschauen - mich interessiert die Sync-Funktionalität über den Server als eine Art Haushaltsbuch.

    Pro-Tipp: Wenn der Beitrag abgeschlossen ist, kann man das in den Einstellungen als abgeschlossen markieren und das Abo beenden.
    netcup_Forum_Beitrag_erledigt.png

    WH8000 SE 🥚 20 | WH1000 SE OST22 | WH1000 SE OST23 | WH1000 SE OST24 | WH 🥚🧶🥛🐖 | 🦆 VPS 200 🇺🇦🕊️

  • Für mich dient es als Möglichkeit, einen klaren Überblick über meine Cashflows zu erhalten, unabhängig davon, bei welcher Bank gerade mein Hauptkonto liegt.

    Besonders mit dem experimentellen Report Budget mode kann ich mir Fragen wie "Kann ich dieses teure Spielzeug guten Gewissens kaufen?" oder "Wie hoch kann ich meine Sparrate ansetzen?" einfach und begründet beantworten.

    Auch einen Überblick über ausstehende Zahlungen zu behalten ist damit recht einfach.


    Mein Tipp: Ein Emoji am Anfang jedes Labels (🅿️ PayPal, ⚡ Strom, ⛑️ Versicherungen).. macht alles viel schneller einsehbar :)