Ghost selbst hosten: Schritt-für-Schritt-Anleitung für Ubuntu

Ghost auf dem eigenen Server installieren: Diese Anleitung führt dich Schritt für Schritt durch Ubuntu, MySQL, Node.js, NGINX, SSL und Ghost-CLI – verständlich erklärt und mit allen benötigten Befehlen.

Ghost selbst hosten: Schritt-für-Schritt-Anleitung für Ubuntu
Ghost wird auf einem eigenen Server eingerichtet – dargestellt mit Terminal, Datenbank, Domain, SSL-Schutz und verbundenen Hosting-Komponenten.

Ghost lässt sich vollständig auf einem eigenen Server betreiben. Damit behältst du die Kontrolle über deine Installation, deine Daten und deine laufenden Kosten. Im Gegenzug bist du selbst für Updates, Backups, Sicherheit und die technische Wartung verantwortlich.

In dieser Anleitung installieren wir Ghost auf einem Ubuntu-Server mit dem offiziell empfohlenen Produktions-Setup: NGINX, MySQL, Node.js, Ghost-CLI, SSL und systemd.

Hinweis: Die Anleitung richtet sich an Einsteiger, setzt aber voraus, dass du dich per SSH mit einem Server verbinden und Befehle im Terminal ausführen kannst.

Was du für die Installation benötigst

Bevor wir beginnen, brauchst du:

  • einen VPS oder Cloud-Server
  • mindestens 1 GB Arbeitsspeicher
  • Ubuntu 22.04, 24.04 oder 26.04
  • eine eigene Domain
  • Zugriff auf die DNS-Einstellungen der Domain
  • SSH-Zugang zum Server
  • eine öffentliche IPv4-Adresse
  • etwas Zeit für Einrichtung und Tests

Ghost empfiehlt aktuell MySQL 8.0 oder 8.4, eine unterstützte Node.js-Version, NGINX und systemd. Diese Anleitung orientiert sich am offiziellen Installationsweg von Ghost.

Schritt 1: Domain mit dem Server verbinden

Bevor Ghost installiert wird, sollte deine Domain bereits auf den Server zeigen. Das ist wichtig, damit während der Installation direkt ein kostenloses SSL-Zertifikat eingerichtet werden kann.

Lege beim Anbieter deiner Domain einen A-Record an:

EinstellungWert
TypA
Name@
ZielIP-Adresse deines Servers
TTLAutomatisch oder Standard

Wenn Ghost unter einer Subdomain erreichbar sein soll, kannst du beispielsweise folgenden Eintrag verwenden:

EinstellungWert
TypA
Nameblog
ZielIP-Adresse deines Servers

Die spätere Adresse wäre dann beispielsweise:

https://blog.deinedomain.de

DNS-Änderungen können je nach Anbieter einige Minuten oder mehrere Stunden benötigen.

Schritt 2: Per SSH mit dem Server verbinden

Öffne unter Windows beispielsweise PowerShell oder Windows Terminal. Unter macOS und Linux kannst du das normale Terminal verwenden.

Verbinde dich zunächst als Root-Benutzer mit deinem Server:

ssh root@DEINE-SERVER-IP

Ersetze DEINE-SERVER-IP durch die tatsächliche IP-Adresse deines Servers.

Beim ersten Verbindungsaufbau musst du möglicherweise bestätigen, dass du dem Server vertraust. Anschließend wird das Root-Passwort abgefragt.

Schritt 3: Einen eigenen Benutzer anlegen

Ghost sollte nicht dauerhaft über den Root-Benutzer verwaltet werden. Deshalb erstellen wir einen separaten Benutzer.

adduser ghostadmin

Du wirst nun aufgefordert, ein Passwort festzulegen. Die zusätzlichen Angaben wie Name oder Telefonnummer kannst du mit der Enter-Taste überspringen.

Verwende nicht einfach den Benutzernamen ghost. Dieser Name wird später von Ghost selbst für einen eingeschränkten Systembenutzer verwendet.

Füge den neuen Benutzer anschließend der sudo-Gruppe hinzu:

usermod -aG sudo ghostadmin

Wechsle danach zum neuen Benutzer:

su - ghostadmin

Ab diesem Punkt arbeitest du mit ghostadmin und nicht mehr direkt als Root.

Schritt 4: Ubuntu aktualisieren

Aktualisiere zunächst die Paketlisten:

sudo apt-get update

Installiere anschließend verfügbare Aktualisierungen:

sudo apt-get upgrade

Je nach Server und Anzahl der Updates kann dieser Vorgang einige Minuten dauern.

Wenn Ubuntu nach einem Neustart verlangt, kannst du diesen mit folgendem Befehl durchführen:

sudo reboot

Danach musst du die SSH-Verbindung erneut herstellen:

ssh ghostadmin@DEINE-SERVER-IP

Schritt 5: NGINX installieren

NGINX übernimmt später die Verbindung zwischen der Domain und Ghost. Außerdem wird NGINX für die HTTPS-Verschlüsselung benötigt.

Installiere NGINX:

sudo apt-get install nginx

Falls auf dem Server die UFW-Firewall aktiviert ist, erlaube HTTP- und HTTPS-Verbindungen:

sudo ufw allow 'Nginx Full'

Den Status von NGINX kannst du überprüfen:

sudo systemctl status nginx

Mit der Taste Q verlässt du die Statusanzeige wieder.

Wenn du jetzt die IP-Adresse deines Servers im Browser aufrufst, sollte die Standardseite von NGINX erscheinen.

Schritt 6: MySQL installieren

Ghost verwendet bei einer produktiven Installation MySQL als Datenbank.

Installiere MySQL:

sudo apt-get install mysql-server

Öffne anschließend die MySQL-Konsole:

sudo mysql

Auf aktuellen Ubuntu-Systemen verwendet der MySQL-Root-Benutzer häufig eine socketbasierte Anmeldung. Da Ghost damit nicht arbeiten kann, erhält der MySQL-Root-Benutzer ein eigenes Passwort.

Führe innerhalb der MySQL-Konsole folgenden Befehl aus:

ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY 'DEIN-SICHERES-PASSWORT';

Ersetze DEIN-SICHERES-PASSWORT durch ein starkes, individuelles Passwort.

Aktualisiere anschließend die Berechtigungen:

FLUSH PRIVILEGES;

Verlasse die MySQL-Konsole:

exit

Bewahre das Passwort sicher auf. Es wird während der Ghost-Installation noch einmal benötigt.

Schritt 7: Node.js installieren

Ghost benötigt Node.js. Zum Zeitpunkt dieser Anleitung verwendet die offizielle Ghost-Dokumentation Node.js 22 als unterstützte Version.

Installiere zunächst die benötigten Pakete:

sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

Erstelle das Verzeichnis für den Signaturschlüssel:

sudo mkdir -p /etc/apt/keyrings

Importiere den Schlüssel des NodeSource-Repositories:

curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg

Füge das Repository für Node.js 22 hinzu:

NODE_MAJOR=22
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list

Aktualisiere erneut die Paketlisten:

sudo apt-get update

Installiere Node.js:

sudo apt-get install nodejs -y

Überprüfe die installierten Versionen:

node --version
npm --version

Beide Befehle sollten jeweils eine Versionsnummer ausgeben.

Unterstützte Node.js-Versionen können sich ändern. Kontrolliere deshalb bei einer späteren Installation zusätzlich die aktuellen Systemvoraussetzungen von Ghost.

Schritt 8: Ghost-CLI installieren

Ghost-CLI ist das offizielle Kommandozeilenwerkzeug für die Installation und Verwaltung von Ghost.

Installiere die aktuelle Version:

sudo npm install ghost-cli@latest -g

Überprüfe anschließend, ob die Installation erfolgreich war:

ghost version

Alternativ kannst du dir die verfügbaren Befehle anzeigen lassen:

ghost help

Schritt 9: Installationsverzeichnis erstellen

Ghost benötigt ein eigenes Verzeichnis mit passenden Berechtigungen.

Erstelle zunächst den Ordner:

sudo mkdir -p /var/www/meine-ghost-seite

Übertrage den Besitz an deinen Benutzer:

sudo chown ghostadmin:ghostadmin /var/www/meine-ghost-seite

Setze die benötigten Berechtigungen:

sudo chmod 775 /var/www/meine-ghost-seite

Wechsle anschließend in das Verzeichnis:

cd /var/www/meine-ghost-seite

Wenn du einen anderen Benutzernamen gewählt hast, musst du ghostadmin entsprechend ersetzen.

Schritt 10: Ghost installieren

Die eigentliche Installation wird mit nur einem Befehl gestartet:

ghost install

Ghost-CLI prüft zunächst, ob der Server die Voraussetzungen erfüllt. Danach werden Ghost und die erforderlichen Konfigurationen eingerichtet.

Während der Installation beantwortest du mehrere Fragen.

Blog URL

Gib die vollständige Adresse deiner Website einschließlich https:// ein:

https://deinedomain.de

Verwende keine reine IP-Adresse.

MySQL hostname

Wenn MySQL auf demselben Server installiert wurde, lautet die Antwort:

localhost

MySQL username

Gib als Benutzer ein:

root

MySQL password

Gib das zuvor festgelegte MySQL-Root-Passwort ein.

Das Passwort wird bei der Eingabe im Terminal nicht angezeigt. Das ist normal.

Ghost database name

Du kannst den vorgeschlagenen Datenbanknamen übernehmen oder einen eigenen Namen vergeben, beispielsweise:

ghost_production

Eigenen MySQL-Benutzer erstellen

Ghost fragt, ob ein eigener MySQL-Benutzer eingerichtet werden soll:

Set up a ghost MySQL user?

Bestätige diese Frage mit Yes. Dadurch arbeitet Ghost später nicht dauerhaft mit dem MySQL-Root-Benutzer.

NGINX einrichten

Bestätige auch diese Frage mit Yes:

Set up NGINX?

Ghost-CLI erstellt dadurch automatisch die passende NGINX-Konfiguration für deine Domain.

SSL einrichten

Wenn deine Domain bereits korrekt auf den Server zeigt, bestätige:

Set up SSL?

mit Yes.

Ghost richtet anschließend ein kostenloses SSL-Zertifikat ein. Außerdem wird die automatische Verlängerung des Zertifikats konfiguriert.

systemd einrichten

Bestätige:

Set up systemd?

mit Yes.

systemd sorgt dafür, dass Ghost als Hintergrunddienst läuft und nach einem Serverneustart automatisch wieder gestartet wird.

Ghost starten

Am Ende fragt Ghost-CLI:

Do you wish to start Ghost?

Bestätige auch diese Frage mit Yes.

Wenn keine Fehler auftreten, ist deine Ghost-Installation jetzt erreichbar.

Schritt 11: Administrator-Konto einrichten

Öffne im Browser die folgende Adresse:

https://deinedomain.de/ghost/

Dort richtest du dein erstes Administrator-Konto ein.

Du benötigst:

  • einen Namen für die Publikation
  • deinen Namen
  • eine E-Mail-Adresse
  • ein sicheres Passwort

Nach Abschluss der Einrichtung gelangst du direkt in den Ghost-Adminbereich.

Schritt 12: Installation überprüfen

Prüfe zuerst, ob Ghost korrekt läuft:

cd /var/www/meine-ghost-seite
ghost ls

Die Installation sollte mit dem Status running angezeigt werden.

Zusätzlich solltest du folgende Punkte testen:

  • Ist die Website über HTTPS erreichbar?
  • Wird im Browser ein gültiges Zertifikat angezeigt?
  • Ist der Adminbereich unter /ghost/ erreichbar?
  • Kann ein Testbeitrag veröffentlicht werden?
  • Lassen sich Bilder hochladen?
  • Funktioniert das aktive Theme?
  • Wird die Website nach einem Serverneustart automatisch gestartet?

Die wichtigsten Ghost-Befehle

Für die spätere Verwaltung solltest du dir einige Befehle merken.

Status der Installation anzeigen:

ghost ls

Ghost starten:

ghost start

Ghost stoppen:

ghost stop

Ghost neu starten:

ghost restart

Protokolle anzeigen:

ghost log

Nur Fehlermeldungen anzeigen:

ghost log --error

Installation überprüfen:

ghost doctor

Ghost aktualisieren:

ghost update

Ein vollständiges Ghost-Backup erstellen:

ghost backup

Diese Befehle solltest du immer im Installationsverzeichnis ausführen:

cd /var/www/meine-ghost-seite

Ghost sicher aktualisieren

Ghost veröffentlicht regelmäßig neue Versionen. Vor jedem Update solltest du ein Backup erstellen:

cd /var/www/meine-ghost-seite
ghost backup

Danach kannst du Ghost aktualisieren:

ghost update

Bei einem größeren Versionssprung solltest du vorher zusätzlich prüfen, ob dein Theme mit der neuen Ghost-Version kompatibel ist.

Tritt während eines Updates ein Problem auf, kann unter bestimmten Voraussetzungen ein Rollback durchgeführt werden:

ghost update --rollback

Ein Rollback ersetzt jedoch kein vollständiges und extern gespeichertes Backup.

Backups nicht nur auf dem Ghost-Server speichern

Der Befehl ghost backup erstellt eine Sicherung der wichtigsten Ghost-Daten. Dazu gehören unter anderem:

  • veröffentlichte Inhalte
  • Mitglieder
  • installierte Themes
  • Bilder und Mediendateien
  • Weiterleitungen
  • die Datei routes.yaml

Das Backup sollte anschließend auf ein anderes System übertragen werden. Liegt es ausschließlich auf dem Ghost-Server, geht es bei einem vollständigen Serverausfall möglicherweise zusammen mit der Installation verloren.

Sinnvoll sind beispielsweise:

  • ein separater Backup-Speicher
  • ein anderer Server
  • ein S3-kompatibler Objektspeicher
  • ein verschlüsselter Cloudspeicher
  • eine lokale, regelmäßig aktualisierte Sicherung

Automatisierte externe Backups gehören deshalb zu den wichtigsten Aufgaben beim Self-Hosting.

E-Mail-Versand und Newsletter konfigurieren

Die reine Ghost-Installation bedeutet noch nicht, dass alle E-Mail-Funktionen automatisch einsatzbereit sind.

Ghost unterscheidet grundsätzlich zwischen:

  • Transaktions-E-Mails, beispielsweise für Anmeldung und Kontoverwaltung
  • Newslettern, die an viele Mitglieder versendet werden

Für den zuverlässigen Versand benötigst du einen geeigneten E-Mail-Dienst. Je nach gewünschter Funktion können zusätzliche Konfigurationen und laufende Kosten entstehen.

Teste deshalb nach der Einrichtung unbedingt:

  • Anmeldung eines neuen Mitglieds
  • Zustellung des Anmeldelinks
  • Passwortlose Anmeldung
  • Newsletterversand
  • Absenderadresse
  • SPF-, DKIM- und DMARC-Einstellungen deiner Domain

Gerade beim Self-Hosting wird dieser Aufwand häufig unterschätzt.

Was beim Self-Hosting dauerhaft zu erledigen ist

Nach der erfolgreichen Installation beginnt der laufende Betrieb. Dazu gehören:

  • Ghost regelmäßig aktualisieren
  • Ubuntu und Systempakete aktualisieren
  • Sicherheitsmeldungen beobachten
  • externe Backups kontrollieren
  • Wiederherstellung von Backups testen
  • Serverauslastung überwachen
  • Speicherplatz kontrollieren
  • SSL-Zertifikate überprüfen
  • E-Mail-Zustellung überwachen
  • Theme-Kompatibilität testen
  • Fehlerprotokolle kontrollieren
  • den Server gegen unberechtigte Zugriffe absichern

Ghost selbst lässt sich relativ schnell installieren. Die eigentliche Verantwortung beim Self-Hosting entsteht durch Wartung, Sicherheit und Überwachung.

Wichtige Einschränkung des klassischen Installationswegs

Die Installation mit Ghost-CLI ist weiterhin der offiziell dokumentierte Produktionsweg für Ubuntu. Laut aktueller Ghost-Dokumentation unterstützt diese Variante jedoch nicht alle neuen Self-Hosting-Funktionen vollständig.

Insbesondere selbst gehostete Web Analytics und eine vollständig selbst gehostete ActivityPub- beziehungsweise Social-Web-Infrastruktur benötigen derzeit den neueren Docker-Compose-Installationsweg. Bei einer klassischen Ghost-CLI-Installation können Social-Web-Funktionen teilweise auf von Ghost bereitgestellte Dienste angewiesen sein.

Für einen klassischen Blog, ein Magazin, eine Mitgliederseite oder einen Newsletter bleibt Ghost-CLI dennoch der verständlichere Einstieg. Wer die komplette moderne Ghost-Infrastruktur selbst betreiben möchte, sollte sich zusätzlich mit Docker Compose beschäftigen.

Häufige Probleme bei der Installation

Die Domain ist nicht erreichbar

Überprüfe, ob der A-Record wirklich auf die richtige Server-IP zeigt. DNS-Änderungen benötigen manchmal etwas Zeit.

Das SSL-Zertifikat kann nicht erstellt werden

Häufige Ursachen sind:

  • die Domain zeigt noch nicht auf den Server
  • Port 80 oder 443 ist blockiert
  • NGINX läuft nicht
  • ein Proxy oder CDN ist falsch konfiguriert
  • die eingegebene Domain stimmt nicht mit dem DNS-Eintrag überein

Prüfe NGINX mit:

sudo nginx -t

Starte NGINX bei Bedarf neu:

sudo systemctl restart nginx

Ghost meldet falsche Berechtigungen

Überprüfe, ob das Installationsverzeichnis deinem normalen Benutzer gehört:

ls -la /var/www/meine-ghost-seite

Ghost selbst darf nicht als Root installiert werden. Verwende für ghost install immer den zuvor angelegten Benutzer.

Ghost startet nicht

Wechsle in das Installationsverzeichnis und prüfe die Installation:

cd /var/www/meine-ghost-seite
ghost doctor

Zeige anschließend die Fehlermeldungen an:

ghost log --error

Für eine direkte Diagnose kann Ghost im Vordergrund gestartet werden:

ghost run

Die dabei ausgegebenen Meldungen helfen häufig dabei, die eigentliche Ursache zu finden.

MySQL lehnt die Anmeldung ab

Überprüfe:

  • den verwendeten Benutzernamen
  • das MySQL-Passwort
  • den Hostnamen localhost
  • ob MySQL läuft
  • ob der Ghost-Datenbankbenutzer angelegt wurde

Den Status von MySQL prüfst du mit:

sudo systemctl status mysql

Ist Self-Hosting für Einsteiger geeignet?

Grundsätzlich ja – sofern du bereit bist, dich mit Linux, DNS, Backups und Serverwartung auseinanderzusetzen.

Die Erstinstallation ist dank Ghost-CLI vergleichsweise komfortabel. Schwieriger ist der zuverlässige Betrieb über Monate und Jahre.

Self-Hosting passt gut zu dir, wenn du:

  • gern technisch arbeitest
  • volle Kontrolle über den Server möchtest
  • Backups und Updates selbst organisieren kannst
  • individuelle Serverkonfigurationen benötigst
  • die laufenden Infrastrukturkosten kontrollieren möchtest

Ghost(Pro) ist meist angenehmer, wenn du:

  • dich hauptsächlich auf Inhalte konzentrieren möchtest
  • keine Serverwartung übernehmen willst
  • eine betreute Infrastruktur bevorzugst
  • möglichst wenig technische Verantwortung möchtest
  • Support und integrierte Betriebsprozesse schätzt

Fazit

Ghost auf einem eigenen Ubuntu-Server zu installieren ist kein Hexenwerk. Mit Ghost-CLI werden Datenbank, NGINX, SSL und systemd weitgehend automatisch eingerichtet.

Die größere Herausforderung beginnt nach der Installation: Ein eigener Ghost-Server muss aktualisiert, abgesichert, überwacht und regelmäßig gesichert werden. Wer diese Verantwortung bewusst übernimmt, erhält dafür eine flexible und kontrollierbare Publishing-Plattform.

Wenn du dagegen einfach schreiben, Mitglieder verwalten und Newsletter verschicken möchtest, ohne dich um den Serverbetrieb zu kümmern, bleibt Ghost(Pro) die bequemere Lösung.

Der beste Hosting-Weg ist deshalb nicht zwangsläufig der günstigste, sondern derjenige, der zu deinen technischen Kenntnissen, deiner verfügbaren Zeit und deinem Projekt passt.