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:
| Einstellung | Wert |
|---|---|
| Typ | A |
| Name | @ |
| Ziel | IP-Adresse deines Servers |
| TTL | Automatisch oder Standard |
Wenn Ghost unter einer Subdomain erreichbar sein soll, kannst du beispielsweise folgenden Eintrag verwenden:
| Einstellung | Wert |
|---|---|
| Typ | A |
| Name | blog |
| Ziel | IP-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-IPErsetze 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 ghostadminDu 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 ghostadminWechsle danach zum neuen Benutzer:
su - ghostadminAb diesem Punkt arbeitest du mit ghostadmin und nicht mehr direkt als Root.
Schritt 4: Ubuntu aktualisieren
Aktualisiere zunächst die Paketlisten:
sudo apt-get updateInstalliere anschließend verfügbare Aktualisierungen:
sudo apt-get upgradeJe 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 rebootDanach musst du die SSH-Verbindung erneut herstellen:
ssh ghostadmin@DEINE-SERVER-IPSchritt 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 nginxFalls 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 nginxMit 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 mysqlAuf 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:
exitBewahre 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 gnupgErstelle das Verzeichnis für den Signaturschlüssel:
sudo mkdir -p /etc/apt/keyringsImportiere 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.gpgFü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.listAktualisiere erneut die Paketlisten:
sudo apt-get updateInstalliere Node.js:
sudo apt-get install nodejs -yÜberprüfe die installierten Versionen:
node --version
npm --versionBeide 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 versionAlternativ kannst du dir die verfügbaren Befehle anzeigen lassen:
ghost helpSchritt 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-seiteSetze die benötigten Berechtigungen:
sudo chmod 775 /var/www/meine-ghost-seiteWechsle anschließend in das Verzeichnis:
cd /var/www/meine-ghost-seiteWenn 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 installGhost-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.deVerwende keine reine IP-Adresse.
MySQL hostname
Wenn MySQL auf demselben Server installiert wurde, lautet die Antwort:
localhostMySQL username
Gib als Benutzer ein:
rootMySQL 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_productionEigenen 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 lsDie 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 lsGhost starten:
ghost startGhost stoppen:
ghost stopGhost neu starten:
ghost restartProtokolle anzeigen:
ghost logNur Fehlermeldungen anzeigen:
ghost log --errorInstallation überprüfen:
ghost doctorGhost aktualisieren:
ghost updateEin vollständiges Ghost-Backup erstellen:
ghost backupDiese Befehle solltest du immer im Installationsverzeichnis ausführen:
cd /var/www/meine-ghost-seiteGhost sicher aktualisieren
Ghost veröffentlicht regelmäßig neue Versionen. Vor jedem Update solltest du ein Backup erstellen:
cd /var/www/meine-ghost-seite
ghost backupDanach kannst du Ghost aktualisieren:
ghost updateBei 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 --rollbackEin 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 -tStarte NGINX bei Bedarf neu:
sudo systemctl restart nginxGhost meldet falsche Berechtigungen
Überprüfe, ob das Installationsverzeichnis deinem normalen Benutzer gehört:
ls -la /var/www/meine-ghost-seiteGhost 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 doctorZeige anschließend die Fehlermeldungen an:
ghost log --errorFür eine direkte Diagnose kann Ghost im Vordergrund gestartet werden:
ghost runDie 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 mysqlIst 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.