Publishing · kein KYC
Ghost hosten auf einem Offshore-VPS
Ghost ist eine schnelle, moderne Publishing-Plattform, die du in wenigen Minuten selbst auf einem Offshore-VPS hosten kannst – so bleiben deine Texte, Abonnenten und Zahlungen unabhängig von Clouds Dritter.
Was es ist
Ghost ist ein Open-Source-CMS auf Node.js-Basis für Blogs, Newsletter und Mitgliedschaftsseiten – mit nativen E-Mail-Abonnements, kostenpflichtigen Stufen und einem übersichtlichen Markdown-Editor. Es wird als offizielles Docker-Image mit MySQL 8 im Hintergrund ausgeliefert und stellt deine Website über einen eigenen Port hinter einem Reverse-Proxy bereit.
Warum offshore hosten
Wenn du Ghost auf einem No-KYC-VPS betreibst, der mit Krypto bezahlt wird, ist deine Publikation an kein Konto gebunden, das mit deiner Identität verknüpft, deplatformt oder auf Anfrage herausgegeben werden kann. Dank Offshore-Standorten mit hohem Datenschutzniveau und unlimitiertem Datenvolumen behältst du die volle Kontrolle über deine Inhalte, deine Mitgliederliste und deine Stripe-Auszahlungen, ohne dass ein Hosting-Anbieter als Gatekeeper über deine Worte wacht.
Das Deployment
Ein funktionierendes Referenz-Setup
Kopieren Sie dies auf eine neue ChainVPS-Instanz. Ersetzen Sie die Platzhalter und starten Sie sie anschließend.
services:
ghost:
image: ghost:5-alpine
restart: always
ports:
# Bind to localhost only; terminate TLS in a reverse proxy (nginx/Caddy)
- "127.0.0.1:2368:2368"
environment:
url: https://blog.example.com
NODE_ENV: production
database__client: mysql
database__connection__host: db
database__connection__port: 3306
database__connection__user: ghost
database__connection__password: CHANGE_ME_DB_PASSWORD
database__connection__database: ghostdb
# Optional outbound SMTP for member/newsletter email:
# mail__transport: SMTP
# mail__options__host: smtp.example.com
# mail__options__port: 587
# mail__options__auth__user: [email protected]
# mail__options__auth__pass: CHANGE_ME_SMTP
volumes:
- ghost-content:/var/lib/ghost/content
depends_on:
- db
db:
image: mysql:8.0
restart: always
command: --default-authentication-plugin=caching_sha2_password
environment:
MYSQL_ROOT_PASSWORD: CHANGE_ME_ROOT_PASSWORD
MYSQL_DATABASE: ghostdb
MYSQL_USER: ghost
MYSQL_PASSWORD: CHANGE_ME_DB_PASSWORD
volumes:
- ghost-db:/var/lib/mysql
volumes:
ghost-content:
ghost-db:
# Deploy:
# apt-get update && apt-get install -y docker.io docker-compose-v2
# docker compose up -d
# Then point a reverse proxy (Caddy/nginx) at 127.0.0.1:2368 to add HTTPS,
# and set `url:` to your real https:// domain before first boot.
Firewall
Zu öffnende Ports
| Port | Protokoll | Zweck |
|---|---|---|
| 2368 | TCP | Ghost-HTTP-App-Port – an 127.0.0.1 gebunden lassen und per Reverse-Proxy bereitstellen, niemals öffentlich freigeben |
| 443 | TCP | HTTPS für die Öffentlichkeit über deinen Reverse-Proxy (Caddy/nginx) |
| 80 | TCP | HTTP für die ACME/Let's-Encrypt-Zertifikatsausstellung und Weiterleitung auf 443 |
| 3306 | TCP | MySQL – nur internes Docker-Netzwerk, niemals auf dem Host veröffentlichen |
Richtige Dimensionierung
Welchen Plan Sie brauchen
VPS Nano/Small (1-2 vCPU, 2 GB RAM)
Persönliches Blog oder kleiner Newsletter. Ghost und MySQL laufen hier problemlos; als Sicherheitsnetz zusätzlich 1 GB Swap einrichten.
VPS Pro (2-4 vCPU, 4-8 GB RAM)
Aktive Publikation mit kostenpflichtigen Mitgliedschaften, bildlastigen Beiträgen und regelmäßigem E-Mail-Versand. Bietet Spielraum für MySQL-Cache und Traffic-Spitzen.
Dedicated (dedizierte Kerne, 16 GB+ RAM, NVMe)
Stark frequentierte Website oder Multi-Blog-Setup mit umfangreichen Medienbibliotheken; MySQL isolieren und Medien über einen Cache ausliefern, um eine gleichbleibende Latenz zu gewährleisten.
Beste Standorte: Für eine Publikation, die unabhängig von Abschaltdruck online bleiben muss, wähle einen Datenschutz-Standort von ChainVPS: Island (IS), Schweiz (CH), Rumänien (RO), Moldau (MD), Niederlande (NL) oder Luxemburg (LU). CH und IS bieten starken Presse- und Meinungsfreiheitsschutz sowie ein striktes Datenschutzrecht; NL und LU ermöglichen mit unlimitierter Bandbreite eine latenzarme Anbindung an europäische Leserschaften – ideal für bild- und newsletterlastige Seiten.
Sichern Sie es ab
Hardening-Checkliste
- Veröffentliche Port 2368 oder 3306 niemals auf 0.0.0.0. Halte Ghost an 127.0.0.1 gebunden und MySQL ausschließlich im internen Docker-Netzwerk; stelle die Website nur über einen TLS-Reverse-Proxy bereit (Caddy stellt Let's-Encrypt-Zertifikate automatisch aus, alternativ nginx + certbot).
- Setze die Umgebungsvariable `url` vor dem allerersten Start auf deine echte https://-Domain. Ghost verankert die URL fest in den Ressourcenlinks; eine spätere Änderung erfordert ein Datenbank-Update und das Leeren des Caches.
- Sichere das Admin-Panel ab: erzwinge bei der Ersteinrichtung ein langes, einzigartiges Passwort und schränke /ghost/ per IP-Allowlist oder Basic-Auth am Proxy ein, wenn du von festen Standorten aus publizierst. Aktiviere die integrierte 2FA für Mitarbeiter-Konten von Ghost.
- Sichere beide Volumes nach einem festen Zeitplan: erstelle einen MySQL-Dump (`docker compose exec db mysqldump -u ghost -p ghostdb`) und archiviere das Content-Volume (`/var/lib/ghost/content`, das Bilder und Themes enthält). Übertrage verschlüsselte Backups zu ChainVPS-Storage oder auf ein externes System.
- Fixiere die Image-Tags (ghost:5-alpine, mysql:8.0) und aktualisiere bewusst mit `docker compose pull && docker compose up -d`; teste die Kompatibilität von Themes und Integrationen, bevor du auf eine neue Ghost-Hauptversion wechselst, und lasse den im Plan enthaltenen DDoS-Schutz am Netzwerkrand aktiviert.
Bereitstellen auf
Das richtige ChainVPS-Produkt
Fragen
Hosting Ghost — FAQ
Braucht Ghost MySQL, oder kann ich SQLite verwenden?
Ghost 5 setzt für den Produktivbetrieb offiziell MySQL 8 voraus. Die obige Compose-Datei richtet MySQL 8 automatisch ein. SQLite wird nur für die lokale Entwicklung unterstützt und ist für ein produktives Offshore-Deployment nicht empfehlenswert.
Wie richte ich HTTPS ein?
Ghost selbst liefert nur einfaches HTTP über Port 2368 aus. Setze davor einen Reverse-Proxy – Caddy ist die einfachste Lösung (er stellt Let's-Encrypt-Zertifikate automatisch aus und erneuert sie), alternativ nginx mit certbot. Richte ihn auf 127.0.0.1:2368 und setze Ghosts `url` auf deine https://-Domain.
Kann ich Newsletter ohne Identitätsspuren bei Drittanbietern versenden?
Ghost versendet E-Mails an Mitglieder über einen beliebigen SMTP-Anbieter oder Mailgun. Verwende bei einem auf Datenschutz ausgelegten Setup ein SMTP-Relay, das Krypto-Zahlungen oder eine minimale Registrierung akzeptiert, und konfiguriere es über die mail__-Umgebungsvariablen. Transaktionale E-Mails benötigen weiterhin eine zustellfähige Absenderdomain mit SPF/DKIM.
Wie viel Speicherplatz benötige ich?
Ghosts Kernsystem plus MySQL ist klein (wenige hundert MB). Der eigentliche Speicherbedarf entsteht durch hochgeladene Bilder und Videos im Content-Volume. Ein leichtes Blog läuft problemlos mit 20-40 GB; bildlastige oder mitgliederbasierte Seiten sollten NVMe-Speicher sowie regelmäßige Backups des Content-Volumes einplanen.
Übersteht meine Website Traffic-Spitzen oder DDoS-Angriffe?
ChainVPS-Pläne beinhalten DDoS-Schutz am Netzwerkrand, und die Bandbreite ist unlimitiert, sodass ein viraler Beitrag keine Zusatzgebühren verursacht. Bei reinen Anfrage-Spitzen aktiviere Caching auf Proxy-Ebene für die Offshore-Seitenaufrufe und wechsle bei dauerhaft hoher Gleichzeitigkeit zu einem VPS-Pro- oder Dedicated-Plan.
Mehr zum Selbst-Hosten
Weitere One-Click-Stacks
Bereitstellen Ghost
in den nächsten 60 Sekunden.
Unlimitierte Bandbreite · DDoS inklusive · 21 Kryptowährungen · Kein KYC.