Ghost ist eine moderne, Open-Source-Blogging-Plattform. Sie ist schneller als WordPress, bietet integriertes Newsletter-Management und einen schönen Editor.
Warum Ghost?
Vorteile
- Schnell (Node.js-basiert)
- Moderner Editor (Markdown)
- Integrierte Newsletter
- SEO-optimiert
- Membership-Funktionen
- Minimalistisches DesignGhost vs. WordPress
| Feature | Ghost | WordPress | |---------|-------|-----------| | Fokus | Blogging | Alles | | Performance | Schnell | Variabel | | Editor | Modern (Cards) | Classic/Gutenberg | | Themes | Weniger, moderner | Sehr viele | | Plugins | Weniger (Integrationen) | Tausende | | Newsletter | Integriert | Plugin nötig |
Voraussetzungen
Systemanforderungen
- Ubuntu 20.04/22.04 oder Debian 11/12
- 1 GB RAM (2 GB empfohlen)
- Node.js 18.x LTS
- MySQL 8.0
- Nginx
- Domain mit SSLInstallation
Node.js installieren
# NodeSource Repository
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
# Node.js installieren
apt install -y nodejs
# Version prüfen
node -v
npm -vMySQL installieren
apt install mysql-server
# Sicherheit konfigurieren
mysql_secure_installationDatenbank erstellen
mysql -u root -pCREATE DATABASE ghost_production;
CREATE USER 'ghost'@'localhost' IDENTIFIED BY 'SicheresPasswort!';
GRANT ALL PRIVILEGES ON ghost_production.* TO 'ghost'@'localhost';
FLUSH PRIVILEGES;
EXIT;Nginx installieren
apt install nginx
systemctl enable --now nginxGhost-CLI installieren
npm install ghost-cli@latest -gGhost-Benutzer erstellen
adduser ghost
usermod -aG sudo ghostGhost-Verzeichnis vorbereiten
mkdir -p /var/www/ghost
chown ghost:ghost /var/www/ghost
chmod 775 /var/www/ghostGhost installieren
Als ghost-Benutzer
su - ghost
cd /var/www/ghost
# Ghost installieren
ghost installSetup-Fragen
? Enter your blog URL: https://blog.example.com
? Enter your MySQL hostname: localhost
? Enter your MySQL username: ghost
? Enter your MySQL password: SicheresPasswort!
? Enter your Ghost database name: ghost_production
? Do you wish to set up Nginx? Yes
? Do you wish to set up SSL? Yes
? Enter your email: admin@example.com
? Do you wish to set up Systemd? Yes
? Do you want to start Ghost? YesManueller Setup
Falls automatisches Setup fehlschlägt:
ghost install --no-setup
ghost setupErste Schritte
Admin-Bereich
URL: https://blog.example.com/ghost
1. Account erstellen 2. Blog-Titel setzen 3. Einladungen versenden (optional)
Wichtige Einstellungen
Settings → General:
- Site title
- Site description
- Site timezone
Settings → Design:
- Theme wählen
- Navigation anpassen
Settings → Email newsletter:
- Newsletter aktivieren
- Mailgun einrichtenKonfiguration
config.production.json
// /var/www/ghost/config.production.json
{
"url": "https://blog.example.com",
"server": {
"port": 2368,
"host": "127.0.0.1"
},
"database": {
"client": "mysql",
"connection": {
"host": "localhost",
"user": "ghost",
"password": "SicheresPasswort!",
"database": "ghost_production"
}
},
"mail": {
"transport": "SMTP",
"options": {
"host": "smtp.example.com",
"port": 587,
"auth": {
"user": "mail@example.com",
"pass": "mailpasswort"
}
}
},
"logging": {
"transports": ["file", "stdout"]
},
"paths": {
"contentPath": "/var/www/ghost/content"
}
}Änderungen anwenden
ghost restartE-Mail einrichten
Mailgun (empfohlen)
{
"mail": {
"transport": "SMTP",
"options": {
"service": "Mailgun",
"auth": {
"user": "postmaster@mg.example.com",
"pass": "mailgun-api-key"
}
}
}
}SMTP-Server
{
"mail": {
"transport": "SMTP",
"options": {
"host": "smtp.example.com",
"port": 587,
"secure": false,
"auth": {
"user": "mail@example.com",
"pass": "passwort"
}
}
}
}Themes
Theme installieren
cd /var/www/ghost/content/themes/
git clone https://github.com/TryGhost/Casper.git
ghost restartOder über Admin
Settings → Design → Change theme → Upload theme
Beliebte Themes
Kostenlos:
- Casper (Standard)
- Starter
- Edition
Premium:
- Massively
- Attila
- CflavorBackup
Manuelles Backup
# Als ghost-Benutzer
cd /var/www/ghost
ghost backupBackup-Skript
#!/bin/bash
# /usr/local/bin/ghost-backup.sh
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup/ghost"
GHOST_DIR="/var/www/ghost"
mkdir -p $BACKUP_DIR
# Ghost-Backup
cd $GHOST_DIR
sudo -u ghost ghost backup
# Backup verschieben
mv $GHOST_DIR/backup-*.zip $BACKUP_DIR/ghost-$DATE.zip
# Datenbank separat
mysqldump -u ghost -p'passwort' ghost_production | gzip > $BACKUP_DIR/db-$DATE.sql.gz
# Alte Backups löschen
find $BACKUP_DIR -type f -mtime +30 -deleteBackup wiederherstellen
cd /var/www/ghost
# Ghost stoppen
ghost stop
# Datenbank wiederherstellen
mysql -u ghost -p ghost_production < backup.sql
# Content wiederherstellen
unzip backup.zip -d content/
# Ghost starten
ghost startUpdate
Ghost aktualisieren
cd /var/www/ghost
# Backup erstellen
ghost backup
# Update durchführen
ghost updateAuf spezifische Version
ghost update --v5.0.0Ghost CLI-Befehle
# Status
ghost status
# Starten
ghost start
# Stoppen
ghost stop
# Neustarten
ghost restart
# Logs anzeigen
ghost log
# Version
ghost version
# Konfiguration
ghost config
# Backup
ghost backup
# Update
ghost update
# Doctor (Probleme diagnostizieren)
ghost doctorPerformance-Optimierung
Nginx-Caching
# /etc/nginx/sites-available/ghost
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=ghost_cache:10m inactive=60m;
server {
listen 443 ssl http2;
server_name blog.example.com;
location / {
proxy_cache ghost_cache;
proxy_cache_valid 60m;
proxy_cache_bypass $http_pragma;
proxy_cache_revalidate on;
proxy_pass http://127.0.0.1:2368;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}Content-Caching
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}Sicherheit
Firewall
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 22/tcp
ufw enableRegelmäßige Updates
# Sicherheitsupdates
apt update && apt upgrade -y
# Ghost-Updates
cd /var/www/ghost
ghost updateBackup-Strategie
- Tägliche Datenbank-Backups
- Wöchentliche Content-Backups
- Externe Speicherung (S3, Remote)Troubleshooting
Ghost startet nicht
# Logs prüfen
ghost log
# Doctor ausführen
ghost doctor
# Node-Version prüfen
node -v # Muss 18.x sein502 Bad Gateway
# Ghost läuft?
ghost status
# Port belegt?
netstat -tlnp | grep 2368
# Nginx-Config prüfen
nginx -tBerechtigungsprobleme
# Besitzer korrigieren
chown -R ghost:ghost /var/www/ghost
# Berechtigungen
chmod -R 755 /var/www/ghostZusammenfassung
| Befehl | Funktion | |--------|----------| | ghost install | Installation | | ghost start | Starten | | ghost stop | Stoppen | | ghost restart | Neustarten | | ghost update | Aktualisieren | | ghost backup | Backup erstellen | | ghost log | Logs anzeigen | | ghost doctor | Diagnose |
Fazit
Ghost ist eine moderne Alternative zu WordPress für Blogger und Publisher. Die Installation mit Ghost-CLI ist unkompliziert, und die integrierten Newsletter-Funktionen machen externe Tools überflüssig. Achten Sie auf regelmäßige Updates und Backups. Für größere Installationen empfiehlt sich ein CDN wie Cloudflare.