Server in Falkenstein · Support auf Deutsch · Rechnung mit Umsatzsteuer
Rechenhalle

Node.js-App hosten

Node-Projekte brauchen keine Konfigurationsdatei: Sobald eine package.json im Repository liegt, baut Rechenhalle die App selbst.

Wie erkannt und gebaut wird

Gibt es eine package.json, läuft der Reihe nach:

npm ci          # oder npm install, falls keine package-lock.json vorhanden ist
npm run build   # nur wenn ein build-Skript existiert
npm start       # der Startbefehl

Ohne start-Skript wird node server.js versucht. Eindeutiger ist ein eigenes Skript:

{
  "scripts": {
    "build": "tsc",
    "start": "node dist/server.js"
  }
}

Node-Version festlegen

Die gewünschte Version steht im Feld engines:

{ "engines": { "node": ">=22" } }

Ohne Angabe läuft die aktuelle LTS-Version. Wer ganz genau bestimmen will, was läuft, nimmt ein eigenes Dockerfile.

Beispiel: Express

import express from "express";

const app = express();
app.get("/", (req, res) => res.send("Läuft."));

// Wichtig: Port aus der Umgebung, Adresse 0.0.0.0
app.listen(process.env.PORT ?? 3000, "0.0.0.0");

Mehr braucht es nicht. Nach dem Deployment ist die App unter deinname.apps.rechenhalle.de erreichbar.

Häufige Stolpersteine

  • Fester Port: app.listen(3000) ignoriert die Umgebungsvariable. Immer process.env.PORT verwenden.
  • Nur localhost: Ohne 0.0.0.0 ist die App im Container nicht erreichbar.
  • devDependencies im Build: Wird für den Build etwa TypeScript gebraucht, gehört es in die dependencies oder in ein Dockerfile.
  • Speicher: Größe S gibt 256 MB. Große Builds brauchen mehr – die Größe lässt sich jederzeit im Reiter Betrieb ändern.

Häufige Fragen

Werden WebSockets unterstützt?

Ja. Der Proxy reicht Verbindungen mit Upgrade unverändert an die App weiter.

Kann ich mehrere Node-Prozesse laufen lassen?

Ja. Über ein Procfile laufen neben dem Web-Prozess beliebige Worker mit, etwa für Warteschlangen. Zusätzlich lassen sich mehrere Instanzen desselben Web-Prozesses starten.

Weiterlesen