Coolify Installation: Anwendungs-Deployment mit Self-Hosted PaaS
Coolify-Installation: Docker- und Git-Integration, Deployment, Datenbanken, SSL und Umgebungsvariablen als selbst gehostete Heroku/Netlify-Alternative.
Ghost mit Docker installieren: Nginx Reverse Proxy, SSL-Zertifikat, Theme-Einrichtung, Mitgliedschaften und Abonnements, E-Mail-Newsletter und Produktion.
Ghost ist eine Open-Source-CMS-Plattform für modernes Blogging und Content-Publishing. Im Vergleich zu WordPress ist es schneller, sicherer und inhaltsorientiert. Es unterstützt auch Content-Monetarisierung mit Mitgliedschaftssystem, Newsletter und Zahlungsintegration.
Ghost ist ein Node.js-basiertes Headless-CMS und Publishing-Plattform. Hauptmerkmale:
# docker-compose.yml
version: '3.8'
services:
ghost:
image: ghost:5-alpine
container_name: ghost
restart: unless-stopped
depends_on:
- db
environment:
database__client: mysql
database__connection__host: db
database__connection__user: ghost
database__connection__password: starkes-passwort
database__connection__database: ghost
url: https://blog.example.com
mail__transport: SMTP
mail__options__host: smtp.mailgun.org
mail__options__port: 587
mail__options__auth__user: postmaster@mg.example.com
mail__options__auth__pass: mailgun-api-key
mail__from: noreply@example.com
volumes:
- ./ghost-content:/var/lib/ghost/content
ports:
- "127.0.0.1:2368:2368"
db:
image: mysql:8.0
container_name: ghost-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root-passwort
MYSQL_DATABASE: ghost
MYSQL_USER: ghost
MYSQL_PASSWORD: starkes-passwort
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
# Container starten
docker compose up -d
# Logs prüfen
docker logs ghost -f
Ghost erstellt die Datenbank beim ersten Start automatisch. Zugriff auf das Admin-Panel unter https://blog.example.com/ghost.
server {
listen 80;
server_name blog.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name blog.example.com;
ssl_certificate /etc/letsencrypt/live/blog.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:2368;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
}
}
Settings → Membership
- Kostenlose Mitglieder erlauben: Aktiviert
- Bezahlte Abonnements: Über Stripe
- Standard-Beitragszugriff: Öffentlich / Nur Mitglieder / Bezahlt
Settings → Membership → Stripe
1. Stripe-Konto erstellen
2. API-Schlüssel eingeben
3. Webhook-Endpoint hinzufügen:
https://blog.example.com/members/webhooks/stripe
environment:
mail__transport: SMTP
mail__options__service: Mailgun
mail__options__host: smtp.mailgun.org
mail__options__port: 587
mail__options__auth__user: postmaster@mg.example.com
mail__options__auth__pass: mailgun-smtp-password
mail__from: "Blog Name <noreply@example.com>"
# Ghost-Inhaltsverzeichnis sichern
tar -czf ghost-backup-$(date +%Y%m%d).tar.gz ./ghost-content/
# MySQL-Datenbank-Backup
docker exec ghost-db mysqldump -u ghost -pstarkes-passwort ghost > \
ghost-db-$(date +%Y%m%d).sql
Ghost ist eine leistungsstarke, moderne Alternative zu WordPress für Content-Publishing. Mit Docker-Deployment auf REXE-Servern können Sie in wenigen Minuten eine produktionsreife Ghost-Instanz betreiben.
Prüfen Sie mit docker ps, ob der Ghost-Container läuft. Stellen Sie sicher, dass die URL-Umgebungsvariable korrekt gesetzt ist. Prüfen Sie die Nginx-Proxy-Konfiguration. Überprüfen Sie Ghost-Logs: docker logs ghost. Beim ersten Setup gehen Sie zu /ghost: https://blog.example.com/ghost.
Prüfen Sie die SMTP-Einstellungen. Bei Mailgun stellen Sie sicher, dass die Domain verifiziert ist. Senden Sie eine Test-E-Mail über Ghost Admin Settings → Email. Im Mailgun-Sandbox-Modus können nur verifizierte Adressen empfangen. Aktivieren Sie die Mailgun-Domain für die Produktion.
Prüfen Sie, ob die Stripe-API-Schlüssel korrekt eingegeben sind (Live-Key, nicht Test-Key). Überprüfen Sie, ob der Webhook-Endpoint im Stripe-Dashboard hinzugefügt wurde. Stellen Sie sicher, dass die Ghost-URL HTTPS ist. Prüfen Sie Webhook-Ereignisse in den Stripe-Logs.
Sichern Sie vor dem Update (Inhaltsverzeichnis + Datenbank). Laden Sie das neue Image mit docker compose pull herunter. Starten Sie den Container mit docker compose up -d neu. Ghost führt automatisch Datenbank-Migrationen durch. Bei großen Versionssprüngen (z.B. 4.x → 5.x) lesen Sie die Release Notes.
Stellen Sie sicher, dass die Theme-.zip-Datei die richtige Struktur hat (package.json und index.hbs sind erforderlich). Aktivieren Sie das Theme über Settings → Design → Activate. Prüfen Sie Ghost-Logs auf Theme-Fehler. Das Theme muss mit Ihrer Ghost-Version kompatibel sein.
Bei MySQL optimieren Sie die Datenbankverbindung. Fügen Sie gzip-Komprimierung und Browser-Caching in Nginx hinzu. Aktivieren Sie Caching in Ghost Settings → Labs. Erwägen Sie die Verwendung eines CDN (Cloudflare Free Plan). Erhöhen Sie den Server-RAM (mindestens 2 GB empfohlen).
Coolify-Installation: Docker- und Git-Integration, Deployment, Datenbanken, SSL und Umgebungsvariablen als selbst gehostete Heroku/Netlify-Alternative.
Nextcloud-Installation mit Docker, Nginx-Konfiguration, Datenbankeinrichtung, SSL-Zertifikat, Dateisynchronisierung, App-Store und Leistungsoptimierung.
Portainer CE installieren: Docker- und Kubernetes-Verwaltung, Stack-Deployment, Volumes und Netzwerke, Benutzerrechte und GitOps-Integration.