Zum Inhalt springen
Ratgeber

Node.js Hosting: So veröffentlichen Sie Ihre App mit eigener Domain und SSL

Aktualisiert am

Sie haben eine Node.js-App (zum Beispiel mit Express gebaut) und möchten sie unter https://ihre-domain.com erreichen, mit Schloss-Symbol und ohne selbst einen Server aufzusetzen. Diese Anleitung führt Sie vom Ordner bis zur Domain und folgt dabei der Funktionsweise von NodeApp auf unserem Server: Ihre App liegt in einem Ordner, PM2 hält sie am Laufen, nginx verbindet Ihre Domain mit ihr, und das SSL von Let’s Encrypt ist kostenlos. Möchten Sie zuerst sehen, was der Dienst umfasst, finden Sie eine Zusammenfassung unter Node.js Hosting.

Was Sie vor dem Start brauchen

Drei Dinge: einen Tarif mit Node.js-Apps, eine Domain und Ihren Code.

Merkmal Cloud Startup
Node.js-Apps Enthalten
SSH-Zugang Ja (Jailed Shell)
Websites Unbegrenzt
Speicherplatz 100 GB SSD
Arbeitsspeicher und Kerne 4 GB RAM und 4 Kerne
Datenbanken 300 (MySQL/MariaDB)
Einführungspreis 9,99 US$ pro Monat im ersten Jahr, bei jährlicher Zahlung
Verlängerung 311,88 US$ pro Jahr (25,99 US$ pro Monat)
Monatliche Zahlung 27,99 US$
  • Tarif. Eine Jailed Shell ist eine auf Ihr eigenes Konto beschränkte Kommandozeile: Sie führen Befehle aus, kommen aber nicht an den Rest des Servers heran. Bezahlt wird per Kredit- oder Debitkarte über Stripe, in US$. Wenn Sie eine bolivianische Karte nutzen, klären Sie mit Ihrer Bank, dass sie für Zahlungen im Ausland freigeschaltet ist.
  • Domain. Besitzen Sie bereits eine, stellen Sie bei Ihrem Registrar die Nameserver auf ns1.quimeracloud.com und ns2.quimeracloud.com um; die Schritte stehen in der Anleitung So verbinden Sie eine .com- oder .bo-Domain mit Ihrem Webhosting. Brauchen Sie eine neue Domain, wird sie automatisch registriert, sobald die Zahlung bestätigt ist: .com und .net kosten 20 US$ im ersten Jahr und 25 US$ pro Jahr bei Verlängerung, .org kostet 16 US$ im ersten Jahr und 20 US$ pro Jahr bei Verlängerung (mehr unter Domains). .bo-Domains verkaufen wir nicht.
  • Ihr Code. Ein Projekt mit eigener package.json.

So funktioniert NodeApp in vier Bausteinen

NodeApp ist das Plugin HCPP-NodeApp (v2.0.3 auf unserem Server) für HestiaCP, das Control Panel, das wir einsetzen. Laut seinem README lassen sich damit Node.js-Anwendungen hosten, die über PM2 gesteuert werden.

Baustein Was er für Sie übernimmt
Ordner nodeapp Ihre App liegt in web/<domain>/nodeapp.
PM2 Ein Prozessmanager: ein Programm, das Ihre App startet und dabei hilft, sie online zu halten, wie es die Dokumentation beschreibt. Stürzt Ihre App ab, startet PM2 sie neu.
Automatischer Port Das System weist den Port zu und übergibt ihn beim Start an Ihre App.
nginx Nimmt die Aufrufe Ihrer Domain entgegen und leitet sie an Ihre App weiter, mit WebSocket-Unterstützung.

Schritt für Schritt

1. NodeApp für Ihre Domain aktivieren

  1. Melden Sie sich im Panel an (verfügbar auf Spanisch, Portugiesisch, Französisch, Italienisch, Deutsch und Englisch).
  2. Bearbeiten Sie auf der Registerkarte Web Ihre Domain und öffnen Sie die erweiterten Optionen (Advanced Options).
  3. Wählen Sie in der Liste der Proxy-Vorlagen (Proxy Template) NodeApp aus, wie es die Plugin-Dokumentation beschreibt, und speichern Sie.

Das Plugin verlangt außerdem, dass Ihr Benutzer SSH-Zugang hat; bei QuimeraCloud ist er in Cloud Startup enthalten. Sehen Sie NodeApp nicht unter den Vorlagen oder hat Ihr Benutzer noch kein SSH, schreiben Sie uns per WhatsApp.

2. Das mitgelieferte Beispiel ansehen

Im Ordner web/<domain>/nodeapp finden Sie ein Express-Beispiel: app.js und app.config.js. Öffnen Sie beide, bevor Sie etwas schreiben, denn sie zeigen, wie eine App auf diesem Server ihren Port erhält.

Die Beispieldatei app.js liest keine Umgebungsvariable: Sie erhält den Port als Argument -p. Hier eine gekürzte Fassung der Datei aus dem Plugin:

const express = require('express');
const app = express();

// Das Plugin startet die App mit: -p <port>
const argv = require('minimist')(process.argv.slice(2));
const port = argv.p || 0;
if (port == 0) {
  console.log('Port number is not specified');
  process.exit(1);
}

app.get('*', (req, res) => res.send('Hello World!'));
app.listen(port, () => console.log(`Server läuft auf Port ${port}`));

Das Beispiel nutzt express und minimist als Abhängigkeiten. Und app.config.js ist die Datei, die PM2 zum Starten der App liest:

module.exports = {
  apps: (function () {
    let nodeapp = require('/usr/local/hestia/plugins/nodeapp/nodeapp.js')(__filename);
    return [nodeapp];
  })()
}

Sie müssen die Datei nicht ändern. Laut dem Kommentar in der Datei sorgt dieses Plugin-Modul automatisch für die Unterstützung von .nvmrc und für die Port-Zuweisung. Ihr Ordner enthält eine eigene Kopie dieser Dateien: Nutzen Sie sie als Referenz, wenn Sie Abweichungen vom obigen Code sehen.

3. Die Node-Version mit .nvmrc wählen

Erstellen (oder bearbeiten) Sie im Ordner nodeapp eine Datei namens .nvmrc. Sie enthält nur die Version:

v22

Auf unserem Server sind vier Versionen mit NVM (dem Versionsmanager für Node) installiert: 16, 18, 20 und 22. Das README des Plugins erklärt, dass die PM2-Konfiguration die Version anhand dieser Datei auswählt. Das README des Repositorys beschreibt die neueste Version des Plugins und kann andere Node-Versionen nennen; für Ihr Konto gilt die Liste in diesem Absatz.

4. Die eigene App hochladen

  1. Kopieren Sie Ihren Code per SSH in den Ordner nodeapp.
  2. Benennen Sie app.js und app.config.js nach Ihrer App um, zum Beispiel in shop.js und shop.config.js. Das README sieht vor, „app“ durch den Namen Ihrer Anwendung zu ersetzen.
  3. Öffnen Sie Ihre package.json und ändern Sie das Feld main auf den neuen Namen ("main": "shop.js").
  4. Sorgen Sie dafür, dass Ihre App den Port wie im Beispiel (-p) einliest und genau auf diesem Port lauscht. Lauscht sie auf einem anderen, findet nginx sie nicht.
  5. Installieren Sie Ihre Pakete mit npm install im Ordner. Findet Ihre Shell npm nicht, schreiben Sie uns per WhatsApp.

5. Starten und neu starten

Das Panel bietet auf der Registerkarte Web eine Liste der NodeApp-Prozesse mit den Funktionen Starten, Stoppen, Neustarten und Protokolle anzeigen. Es gibt zwei weitere Wege, beide per SSH und aus dem Ordner nodeapp:

touch .restart/restart      # fordert einen Neustart der App an
pm2 start app.config.js     # startet mit PM2 (verwenden Sie Ihren eigenen Dateinamen)

Starten Sie die App nach jeder Änderung an Ihrem Code neu, damit die Änderungen übernommen werden.

6. Die Protokolle lesen

Wenn etwas schiefgeht, beginnen Sie mit den Protokollen des Prozesses: im Panel in der Liste der NodeApp-Prozesse oder per SSH mit pm2 logs, das laut PM2-Dokumentation die Protokolle in Echtzeit anzeigt.

7. SSL aktivieren und die Domain prüfen

Das SSL von Let’s Encrypt ist kostenlos, verlängert sich selbst und gehört zu allen Tarifen. Zur Ausstellung prüft Let’s Encrypt, ob Sie die Domain kontrollieren, indem es per HTTP auf Port 80 eine Datei abruft (so erklärt es die Dokumentation). Deshalb muss Ihre Domain bereits unseren Server erreichen: Haben Sie sie über die Nameserver verbunden, kann es dauern, bis sich die Änderung verbreitet hat.

  1. Öffnen Sie http://ihre-domain.com und prüfen Sie, dass bereits Ihre App erscheint.
  2. Öffnen Sie im Panel die Optionen Ihrer Domain und setzen Sie die Häkchen bei SSL und Let’s Encrypt (auf Englisch Enable SSL for this domain und Use Let’s Encrypt to obtain SSL certificate). Sind sie schon gesetzt, ändern Sie nichts. Speichern Sie. So beschreibt es die HestiaCP-Dokumentation.
  3. Öffnen Sie https://ihre-domain.com und prüfen Sie das Schloss-Symbol.

Grenzen, die Sie kennen sollten

  • Ein einziger Server, in Seattle (USA). Ihre Besucher aus Bolivien, Lateinamerika oder Europa verbinden sich mit diesem Server. Es gibt keine Kopien in anderen Regionen.
  • Kein Root. Die Jailed Shell erlaubt keine Installation von Systemsoftware. Braucht Ihre App das, passt ein VPS besser: Wir vergleichen die Optionen unter Shared Hosting, Cloud oder VPS.
  • Nur MySQL/MariaDB als enthaltene Datenbanken.
  • Gemeinsam genutzte IPv4-Adresse. Alle Konten verwenden die IPv4-Adresse des Servers.
  • Tägliches Backup auf demselben Server. Das jeweils neueste Backup wird aufbewahrt.
  • Überwachung im Minutentakt, auch wenn wir keine Verfügbarkeitszahl veröffentlichen.

Häufige Probleme

Was Sie sehen Wahrscheinliche Ursache Was zu tun ist
Im Protokoll steht „Port number is not specified“ Das Beispiel des Plugins gibt das aus, wenn es ohne das Argument -p startet Starten Sie die App über das Panel oder mit pm2 start app.config.js, nicht von Hand mit node app.js
Sie haben den Code geändert, aber nichts ändert sich Die App läuft noch mit der vorherigen Version Starten Sie sie neu
Nach dem Umbenennen der Dateien startet nichts mehr Der Name der .config.js oder das main in der package.json stimmt nicht mit Ihrer Datei überein Prüfen Sie, dass alle drei Namen übereinstimmen
Die Domain lädt nicht Die Nameserver-Änderung ist noch nicht propagiert Prüfen Sie, dass sie auf ns1.quimeracloud.com und ns2.quimeracloud.com zeigen (wie Sie das mit nslookup kontrollieren, steht in der Domain-Anleitung)

Weicht etwas von dem ab, was Sie in Ihrem Panel sehen, schreiben Sie uns per WhatsApp unter +591 773 14890: Es antwortet eine Person aus dem Quimera-Team. Und wenn Sie noch auswählen, vergleichen Sie die Tarife.

Häufige Fragen

Kann ich Node.js nutzen, wenn ich derzeit den Tarif Premium oder Unlimited habe?

Node.js-Apps und SSH-Zugang gehören zum Tarif Cloud Startup. Für einen Tarifwechsel schreiben Sie uns per WhatsApp, und wir stellen Ihren Tarif um, ohne Ihre Website zu verschieben: Ihre Dateien, Datenbanken und E-Mails bleiben, wo sie sind, und Sie müssen nichts umziehen.

Welche Datenbank kann ich mit meiner App nutzen?

Die Tarife enthalten MySQL/MariaDB-Datenbanken (300 bei Cloud Startup). Andere Datenbanksysteme sind nicht enthalten. Hängt Ihre App von einem anderen System ab, passt ein VPS besser, denn dort installieren Sie, was Sie brauchen.

Gibt es ein Backup meiner App?

Ja, es gibt ein automatisches tägliches Backup. Das jeweils neueste wird auf demselben Server aufbewahrt, und Sie stellen es im Panel wieder her oder laden es dort herunter. Als zusätzliche Absicherung laden Sie ab und zu eine Kopie herunter und verwalten Ihren Code in einem eigenen Repository.

Welche Node.js-Versionen kann ich verwenden?

Auf dem Server sind vier Versionen mit NVM installiert: 16, 18, 20 und 22. Sie wählen eine mit einer .nvmrc-Datei im Ordner nodeapp Ihrer Domain, zum Beispiel mit der Zeile v22.

Quellen

← Alle Ratgeber

Veröffentlichen Sie Ihre Website noch diese Woche

Wählen Sie Ihren Tarif, verbinden Sie Ihre Domain und legen Sie los. Wenn Sie vor der Buchung Fragen haben, schreiben Sie uns.