Pourquoi auto-héberger Ghost sur un VPS
Ghost combine ce que WordPress fait laborieusement et ce que Substack facture cher : un éditeur épuré, des performances natives excellentes (Node.js), une gestion de membres et d'abonnements payants intégrée via Stripe, et l'envoi de newsletters sans plugin. Mais Ghost(Pro) facture à l'audience, et les plateformes de newsletter prennent une commission sur vos revenus. En l'hébergeant sur votre VPS, vous gardez 100 % de vos abonnés payants (hors frais Stripe), vous personnalisez le thème sans restriction, et vous maîtrisez votre liste d'emails, votre actif le plus précieux.
Les bénéfices d'un Ghost auto-hébergé
- Aucune commission plateforme sur vos abonnements payants (hors Stripe)
- Performances natives : pages servies en quelques dizaines de millisecondes
- Newsletters et membres intégrés, sans empilement de plugins
- Personnalisation totale du thème Handlebars et accès complet à l'API
- Maîtrise de votre liste d'abonnés et de vos données
- Coût fixe du VPS quel que soit le nombre de lecteurs
Prérequis réalistes
Ghost est sobre : un VPS 1-2 vCPU / 2 Go de RAM tient un blog avec un trafic confortable, montez à 4 Go si votre audience grandit fort. Il lui faut une base MySQL 8 (recommandée en production), Docker + Compose, et un service SMTP transactionnel (Mailgun, Postmark, etc.) pour l'envoi fiable des newsletters et des emails de membres. Prévoyez un domaine blog.votredomaine.ma avec son certificat SSL.
Déploiement pas à pas
Composer Ghost et sa base de données
Dans docker-compose.yml, déclarez l'image officielle ghost:5-alpine et un service mysql:8. Reliez-les sur un réseau interne, persistez le contenu dans un volume /var/lib/ghost/content et les données MySQL dans un volume dédié.
Renseigner l'URL et la base
Définissez url=https://blog.votredomaine.ma (crucial : Ghost génère tous ses liens à partir de cette valeur) et les variables database__connection__* pointant vers le service MySQL.
Configurer l'envoi d'emails
Renseignez les variables mail__transport=SMTP et les identifiants de votre fournisseur transactionnel. C'est indispensable pour les newsletters et les emails de connexion des membres.
Lancer et accéder à l'admin
Démarrez avec docker compose up -d, puis rendez-vous sur /ghost pour créer le compte propriétaire et configurer le site. Vérifiez l'envoi d'un email de test depuis les réglages.
Placer le reverse proxy SSL
Configurez Nginx/Caddy en HTTPS devant le port 2368 de Ghost. Avec Caddy, le certificat Let's Encrypt est automatique ; activez aussi la compression et le cache des assets statiques.
Brancher Stripe et publier
Connectez votre compte Stripe dans Réglages > Membres pour activer les abonnements payants, définissez vos niveaux (tiers), puis publiez votre premier article et envoyez votre première newsletter.
Placez un CDN ou un cache de pages (Cloudflare en mode proxy, ou un cache Nginx proxy_cache) devant Ghost : comme la quasi-totalité du contenu public est statique, vous absorbez des pics de trafic (effet Hacker News ou réseaux sociaux) sans surcharger le VPS, tout en gardant l'admin et les pages membres dynamiques exclues du cache via des règles sur /ghost et /members.
La documentation officielle
Pour la configuration avancée et les options propres à l'outil, référez-vous à la documentation officielle de Ghost. Ce guide couvre la mise en ligne sur VPS ; la doc éditeur reste la référence pour les réglages fins, les mises à jour majeures et les cas d'usage spécifiques.