Publication · sans KYC
Hébergez Ghost sur un VPS offshore
Ghost est une plateforme de publication rapide et moderne que vous pouvez auto-héberger en quelques minutes sur un VPS offshore, en gardant vos écrits, vos abonnés et vos paiements à l'écart des clouds tiers.
Ce que c'est
Ghost est un CMS open-source en Node.js conçu pour les blogs, les newsletters et les sites à adhésion, avec abonnements email natifs, paliers payants et un éditeur Markdown épuré. Il est distribué sous forme d'image Docker officielle adossée à MySQL 8, et sert votre site sur son propre port derrière un reverse proxy.
Pourquoi l'héberger en offshore
Faire tourner Ghost sur un VPS no-KYC payable en crypto signifie que votre publication n'est liée à aucun compte pouvant être identifié, déplateformé ou communiqué sur demande. Avec des localisations offshore axées confidentialité et une bande passante illimitée, vous gardez le contrôle total de votre contenu, de votre liste de membres et de vos versements Stripe, sans qu'un hébergeur ne fasse la police sur vos mots.
Le déploiement
Une configuration de référence fonctionnelle
Copiez ceci sur une nouvelle instance ChainVPS. Remplacez les paramètres, puis lancez-la.
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.
Pare-feu
Ports à ouvrir
| Port | Protocole | Objectif |
|---|---|---|
| 2368 | TCP | Port HTTP de l'application Ghost - à garder lié à 127.0.0.1 et à faire passer par un reverse proxy, ne jamais exposer publiquement |
| 443 | TCP | HTTPS vers le public via votre reverse proxy (Caddy/nginx) |
| 80 | TCP | HTTP pour l'émission de certificats ACME/Let's Encrypt et la redirection vers le 443 |
| 3306 | TCP | MySQL - réseau Docker interne uniquement, ne jamais publier sur l'hôte |
Dimensionnement optimal
De quel forfait vous avez besoin
VPS Nano/Small (1-2 vCPU, 2 GB RAM)
Blog personnel ou petite newsletter. Ghost + MySQL tiennent confortablement ; ajoutez 1 GB de swap par sécurité.
VPS Pro (2-4 vCPU, 4-8 GB RAM)
Publication active avec adhésions payantes, articles riches en images et envois d'emails réguliers. Marge de manœuvre pour le cache MySQL et les pics de trafic.
Dédié (cœurs dédiés, 16 GB+ RAM, NVMe)
Site à fort trafic ou configuration multi-blogs avec de grandes bibliothèques média ; isolez MySQL et servez les médias via un cache pour une latence homogène.
Meilleurs emplacements : Pour une publication qui doit rester en ligne quelle que soit la pression de retrait, choisissez une localisation ChainVPS orientée confidentialité : Islande (IS), Suisse (CH), Roumanie (RO), Moldavie (MD), Pays-Bas (NL) ou Luxembourg (LU). La CH et l'IS offrent une solide protection de la presse, de la liberté d'expression et du droit à la vie privée ; les NL et le LU offrent une portée à faible latence vers les lectorats européens, avec une bande passante illimitée pour les sites riches en images et en newsletters.
Verrouillez-le
Liste de vérification du durcissement
- Ne publiez jamais les ports 2368 ou 3306 sur 0.0.0.0. Gardez Ghost lié à 127.0.0.1 et MySQL uniquement sur le réseau Docker interne ; n'exposez le site que via un reverse proxy TLS (Caddy émet automatiquement des certificats Let's Encrypt, ou utilisez nginx + certbot).
- Définissez la variable d'environnement `url` sur votre vrai domaine https:// avant le tout premier démarrage. Ghost intègre cette URL dans les liens de ressources, et la modifier plus tard nécessite une mise à jour de la base de données et un vidage de cache.
- Verrouillez le panneau d'administration : imposez un mot de passe long et unique dès la configuration initiale, et restreignez /ghost/ par liste blanche d'IP ou par authentification basique au niveau du proxy si vous publiez depuis des emplacements fixes. Activez la 2FA intégrée pour le personnel de Ghost.
- Sauvegardez les deux volumes selon un planning régulier : exportez MySQL (`docker compose exec db mysqldump -u ghost -p ghostdb`) et archivez le volume de contenu (`/var/lib/ghost/content`, qui contient images et thèmes). Envoyez des sauvegardes chiffrées vers le stockage ChainVPS ou hors site.
- Figez les tags d'image (ghost:5-alpine, mysql:8.0) et mettez à jour de façon délibérée avec `docker compose pull && docker compose up -d` ; testez la compatibilité des thèmes/intégrations avant de passer à une version majeure de Ghost, et gardez activée en périphérie la protection anti-DDoS incluse dans le plan.
Questions
Hébergement Ghost — FAQ
Ghost a-t-il besoin de MySQL, ou puis-je utiliser SQLite ?
Ghost 5 nécessite officiellement MySQL 8 en production. Le fichier compose ci-dessus configure automatiquement MySQL 8. SQLite n'est pris en charge que pour le développement local et n'est pas recommandé pour un déploiement offshore en production.
Comment ajouter HTTPS ?
Ghost sert lui-même du HTTP simple sur le port 2368. Placez un reverse proxy devant - Caddy est le plus simple (il émet et renouvelle automatiquement les certificats Let's Encrypt), ou utilisez nginx avec certbot. Pointez-le vers 127.0.0.1:2368 et définissez le `url` de Ghost sur votre domaine https://.
Puis-je envoyer des newsletters sans laisser de trace d'identité chez un tiers ?
Ghost envoie les emails aux membres via n'importe quel fournisseur SMTP ou Mailgun. Sur une configuration axée confidentialité, utilisez un relais SMTP qui accepte le paiement en crypto ou une inscription minimale, et configurez-le via les variables d'environnement mail__. Les emails transactionnels nécessitent tout de même un domaine d'envoi délivrable avec SPF/DKIM.
De combien d'espace disque ai-je besoin ?
Le cœur de Ghost plus MySQL est léger (quelques centaines de MB). La véritable croissance vient des images et vidéos téléversées dans le volume de contenu. Un blog léger tourne très bien sur 20-40 GB ; les sites riches en images ou à adhésion devraient prévoir un stockage NVMe et des sauvegardes régulières du volume de contenu.
Mon site résistera-t-il aux pics de trafic ou aux attaques DDoS ?
Les plans ChainVPS incluent une protection anti-DDoS en périphérie du réseau, et la bande passante est illimitée, si bien qu'un article viral ne génèrera pas de frais de dépassement. Pour les pics bruts de requêtes, activez la mise en cache au niveau du proxy des pages vues et passez à un plan VPS Pro ou dédié si vous constatez une concurrence élevée en continu.
Plus à auto-héberger
Autres stacks en un clic
Déployer Ghost
dans les 60 prochaines secondes.
Bande passante illimitée · DDoS inclus · 21 cryptomonnaies · sans KYC.