VPS aufsetzen – Node, PM2 und Apache Reverse Proxy
Ein Virtual Private Server (VPS) bietet volle Kontrolle über die Serverumgebung — kein Vendor Lock-in, keine Plattform-Einschränkungen, DSGVO-konformes Hosting auf deutschen oder europäischen Servern. Für Node.js-Anwendungen wie Astro SSR ist ein VPS mit Apache Reverse Proxy und PM2 das bewährte Production-Setup. Diese Anleitung beschreibt das Setup auf Ubuntu 24.04 — dem aktuellen LTS-Standard für Produktionsserver.
Voraussetzungen
Benötigt wird ein VPS mit Ubuntu 24.04 (oder 22.04 LTS), Root- oder sudo-Zugriff per SSH, ein Domain-Name der auf die Server-IP zeigt und grundlegende Linux-Kenntnisse (Navigation, Dateieditor, Dienste starten). Empfohlene VPS-Anbieter mit deutschen Rechenzentren: IONOS, Hetzner Cloud, netcup. Alle DSGVO-konform, gute Performance, faire Preise.
Node.js installieren
Node.js wird über den offiziellen NodeSource-Repository installiert — das garantiert aktuelle Versionen statt der veralteten Ubuntu-Repository-Version. Für Astro wird Node 22 LTS oder Node 24 empfohlen. Nach der Installation mit node --version und npm --version verifizieren. Die Versionsnummer sollte 22.x oder 24.x zeigen.
PM2 — Prozess-Manager für Node.js
PM2 ist der Standard-Prozessmanager für Node.js in Production. Er startet Anwendungen automatisch neu wenn sie abstürzen, kümmert sich um Auto-Start beim Server-Neustart und bietet Logging, Monitoring und Clustering.
PM2 installieren und Anwendung starten
PM2 global installieren: npm install -g pm2. Astro-Anwendung starten: pm2 start dist/server/entry.mjs --name digitalherrmann. Status prüfen: pm2 status. Logs abrufen: pm2 logs digitalherrmann.
Auto-Start beim Systemstart
PM2 startet nach Server-Neustart nicht automatisch — das muss konfiguriert werden: pm2 startup generiert einen Systemd-Befehl. Diesen Befehl ausführen, dann pm2 save um den aktuellen Prozess-Status zu speichern.
Zero-Downtime Deployment
Bei Updates die Anwendung mit pm2 reload digitalherrmann neu starten — das führt einen graceful reload durch ohne Downtime. Alternativ pm2 restart für einen harten Neustart wenn nötig.
PM2 Monitoring
pm2 monit zeigt CPU- und RAM-Auslastung in Echtzeit. pm2 logs zeigt die letzten Log-Einträge. Für erweiterte Überwachung bietet PM2 Plus (kostenpflichtig) ein Web-Dashboard.
Apache als Reverse Proxy
Apache nimmt HTTP/HTTPS-Anfragen entgegen und leitet sie an den Node.js-Prozess weiter. Die Vorteile: Apache kümmert sich um SSL-Terminierung, HTTP/2, Kompression und statische Dateien — Node.js muss nur die dynamischen Anfragen bearbeiten.
Apache Module aktivieren
Für den Reverse Proxy werden drei Module benötigt: a2enmod proxy, a2enmod proxy_http, a2enmod proxy_wstunnel (für WebSockets). Danach Apache neu starten: systemctl restart apache2.
VirtualHost konfigurieren
In der Apache-Konfiguration (z.B. /etc/apache2/sites-available/digitalherrmann.conf) wird der ProxyPass und ProxyPassReverse definiert. ProxyPass / http://localhost:3000/ leitet alle Anfragen an den Node-Prozess weiter.
SSL mit Let's Encrypt
Certbot installieren: apt install certbot python3-certbot-apache. Zertifikat beantragen: certbot --apache -d digitalherrmann.de -d www.digitalherrmann.de. Certbot konfiguriert Apache automatisch für HTTPS und richtet Auto-Renewal ein.
HTTP/2 aktivieren
HTTP/2 verbessert Performance durch Multiplexing: a2enmod http2, dann in der SSL-VirtualHost-Konfiguration 'Protocols h2 http/1.1' ergänzen. Spürbare Verbesserung bei Seiten mit vielen Ressourcen.
Deployment-Workflow
Code auf Server übertragen
Git pull im Projektverzeichnis oder rsync/scp für Dateiübertragung. Git ist empfohlen: sauberere Historie, einfaches Rollback.
Dependencies installieren
npm ci (nicht npm install) für reproduzierbare Installs. npm ci nutzt package-lock.json und ist schneller und zuverlässiger als npm install.
Build ausführen
npm run build generiert dist/. Bei Astro SSR entsteht dist/server/ mit dem Node-Entry-Point.
Anwendung neu starten
pm2 reload digitalherrmann für Zero-Downtime Reload. pm2 save um den neuen Status zu persistieren.
Häufig gestellte Fragen
Welchen Port verwendet Astro SSR standardmäßig?
Astro SSR mit @astrojs/node läuft standardmäßig auf Port 4321 im Dev-Modus und Port 3000 im Production-Build. Der Port kann über die HOST- und PORT-Umgebungsvariablen konfiguriert werden.
Wie sichere ich den VPS ab?
Grundlegende Maßnahmen: SSH-Passwort-Login deaktivieren (nur SSH-Keys), Fail2ban gegen Brute-Force, UFW Firewall (nur Port 22, 80, 443 offen), regelmäßige System-Updates (apt upgrade), Node.js und npm auf aktuellem Stand halten.
Wie viel RAM braucht ein Astro SSR-Prozess?
Ein Astro SSR-Prozess benötigt typischerweise 100–300 MB RAM. Für eine kleine bis mittelgroße Website reicht ein VPS mit 2 GB RAM problemlos aus. PM2 Clustering (mehrere Prozess-Instanzen) erlaubt horizontale Skalierung bei höherem Traffic.
Kann ich mehrere Websites auf einem VPS betreiben?
Ja — Apache Virtual Hosts ermöglichen beliebig viele Websites auf einem Server. Jede Website bekommt einen eigenen VirtualHost-Eintrag, einen eigenen Node-Prozess (PM2) und einen eigenen Port. Apache routet basierend auf dem Domain-Namen zum richtigen Prozess.