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. Immerprocess.env.PORTverwenden. - Nur localhost: Ohne
0.0.0.0ist die App im Container nicht erreichbar. - devDependencies im Build: Wird für den Build etwa TypeScript gebraucht, gehört es in die
dependenciesoder 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.