[{"data":1,"prerenderedAt":206},["ShallowReactive",2],{"seo-verification":3,"blog-migrer-ghost-pro-vers-self-hosted-vps-fr":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-migrer-ghost-pro-vers-self-hosted-vps-fr",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":144,"ctaBody":145,"ctaButton":146,"ctaUrl":147,"relatedPosts":148},496,"migrer-ghost-pro-vers-self-hosted-vps",{"fr":10,"en":12,"ar":13,"es":14},"migrate-ghost-pro-to-self-hosted-ghost-vps","نقل-مدونة-ghost-من-ghost-pro-إلى-خادم-vps-خاص","migrar-ghost-pro-a-ghost-autoalojado-en-vps","Migrer de Ghost(Pro) vers Ghost auto-hébergé sur VPS","Quitter Ghost(Pro) sans perdre un lecteur ni un abonné Stripe : export, images, thème, membres payants, newsletters Mailgun et bascule DNS réversible.",11,0,false,"2026-10-22T00:00:00+00:00","2026-10-23T13:27:02+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fmigrer-ghost-pro-vers-self-hosted-vps-poster.svg",{"categorySlug":34,"appSlug":35},"cms","ghost","Ghost(Pro) facture selon le nombre de membres : chaque palier franchi relève l'abonnement, et une agence qui porte plusieurs publications paie autant d'abonnements que de sites. Ghost étant open source, la même publication peut tourner sur votre propre serveur, avec le même format d'export. Le risque n'est pas l'import du contenu, mais ce qui l'entoure : les images, les abonnements Stripe, l'envoi des newsletters et la bascule du domaine. Ce guide traite ces quatre points, étape par étape, avec un retour arrière possible tant que Ghost(Pro) reste actif.",[38,42,52,88,91,125,128,131,134,138,141],{"type":39,"title":40,"body":41},"h2","Pourquoi quitter Ghost(Pro), et ce que vous laissez derrière vous","La grille de Ghost(Pro) est indexée sur l'audience : chaque formule plafonne le nombre de membres, et Ghost vous invite à monter de formule quand la publication grandit. Pour un éditeur seul, c'est un coût lisible. Pour une agence qui opère la newsletter ou le média de cinq clients, c'est cinq abonnements qui suivent chacun leur propre courbe. La formule d'entrée exclut aussi les thèmes personnalisés et les intégrations sur mesure.\n\nAuto-héberger règle ces deux points : un serveur porte plusieurs publications, et vous installez le thème et les intégrations que vous voulez.\n\nIl faut être honnête sur l'autre colonne. Ghost(Pro) inclut l'envoi des newsletters, avec une délivrabilité déjà configurée, les mises à jour, les sauvegardes et le support de l'éditeur. En partant, vous reprenez chacune de ces tâches. Ce n'est pas un chantier insurmontable, mais c'est un coût réel, à chiffrer avant la décision et non à découvrir après.",{"type":43,"title":44,"items":45},"ul","Ce que vous récupérez en sortant de Ghost(Pro)",[46,47,48,49,50,51],"**Un coût qui ne suit plus l'audience** — le serveur se dimensionne sur le trafic et le volume d'images, pas sur le nombre de membres inscrits.","**Plusieurs publications sur une même machine** — une agence regroupe ses instances Ghost sur un ou deux VPS au lieu d'empiler les abonnements.","**Thèmes et intégrations sans restriction de formule** — thème sur mesure, webhooks, outils d'analyse ou de recherche branchés directement sur le serveur.","**La main sur les données** — base MySQL, dossier `content` et sauvegardes vous appartiennent ; vous choisissez leur emplacement et leur rétention.","**Le même format de bout en bout** — de Ghost vers Ghost, l'import est natif : aucun convertisseur, aucune réécriture des articles.","**Un calendrier de mises à jour choisi** — vous testez une nouvelle version sur une copie avant de l'appliquer à la publication en ligne.",{"type":53,"title":54,"headers":55,"rows":59},"comparison","Ce qui change poste par poste",[56,57,58],"Poste","Ghost(Pro)","Ghost auto-hébergé",[60,64,68,72,76,80,84],[61,62,63],"Tarification","Par formule, plafonnée en nombre de membres","Prix du serveur, quel que soit le nombre de membres",[65,66,67],"Envoi des newsletters","Inclus, sans configuration","Compte Mailgun obligatoire, facturé à part",[69,70,71],"E-mails de connexion des membres","Inclus","Serveur SMTP à configurer",[73,74,75],"Mises à jour de Ghost","Appliquées par l'éditeur","À votre charge",[77,78,79],"Sauvegardes","Gérées par l'éditeur","Base MySQL et dossier `content` à sauvegarder vous-même",[81,82,83],"Thème personnalisé","Selon la formule","Toujours possible",[85,86,87],"Commission sur les abonnements","Aucune côté Ghost sur les formules payantes","Aucune ; seuls les frais Stripe s'appliquent",{"type":39,"title":89,"body":90},"Prérequis chiffrés avant de toucher à Ghost(Pro)","**Serveur** : prévoyez 2 vCPU et 2 Go de RAM pour une publication, 4 Go si vous regroupez deux ou trois instances ou si la liste dépasse quelques dizaines de milliers de membres. Le disque se calcule sur vos médias : relevez la taille du dossier d'images, doublez-la pour les sauvegardes locales, ajoutez 10 Go pour le système.\n\n**Base de données** : MySQL 8, et non MariaDB. La documentation officielle de Ghost est sans ambiguïté : MySQL 8 est la seule base supportée en production, et Ghost recommande de quitter MariaDB. Le moteur ne change rien à l'export JSON, mais l'instance cible, elle, doit tourner sur MySQL 8.\n\n**Version** : l'instance cible doit être de version égale ou supérieure à celle de Ghost(Pro). Relevez la version affichée dans Ghost Admin avant d'installer quoi que ce soit.\n\n**Comptes et accès** : l'accès propriétaire au compte Stripe connecté à la publication, un compte Mailgun pour les newsletters, un relais SMTP pour les e-mails de connexion, et l'accès à la zone DNS du domaine.\n\n**L'installation elle-même** n'est pas répétée ici : suivez \u003Ca href=\"\u002Fblog\u002Fheberger-ghost\">notre guide d'installation de Ghost sur VPS\u003C\u002Fa>, puis revenez à l'étape 5.",{"type":92,"title":93,"steps":94},"steps","La migration en dix étapes, de l'inventaire à la bascule",[95,98,101,104,107,110,113,116,119,122],{"title":96,"body":97},"Relever l'état de référence","Avant tout export, notez ce que la migration devra retrouver : nombre d'articles publiés, de pages, de membres gratuits, payants et offerts (filtres de la vue Membres de Ghost Admin), version de Ghost et liste des URL du sitemap. Gardez cette liste dans un fichier :\n\n```bash\ncurl -s https:\u002F\u002Fvotre-domaine.com\u002Fsitemap-posts.xml | grep -o '\u003Cloc>[^\u003C]*' | sed 's\u002F\u003Cloc>\u002F\u002F' > urls-avant.txt\nwc -l urls-avant.txt\n```",{"title":99,"body":100},"Baisser le TTL du domaine","Dans la zone DNS, ramenez le TTL des enregistrements du domaine de la publication à 300 secondes, au moins 24 heures avant la bascule. C'est ce qui permet, le jour venu, de changer d'adresse IP en quelques minutes et de revenir en arrière aussi vite.",{"title":102,"body":103},"Exporter tout le contenu","Dans Ghost Admin, ouvrez **Settings → Advanced → Import\u002FExport**, onglet Export, et choisissez **All data**. L'archive contient `export.json` (contenu et réglages), `members.csv`, les thèmes installés en `.zip`, `routes.yaml` et `redirects.yaml`. Vérifiez la présence de chaque fichier avant de continuer.",{"title":105,"body":106},"Récupérer les images et les médias","La documentation de Ghost le précise : les images ne sont pas dans l'export. Sur Ghost(Pro), vous n'avez pas d'accès au serveur ; deux voies existent. Demandez au support Ghost(Pro) l'archive du dossier `content\u002Fimages`, ou reconstituez-la à partir des URL publiques présentes dans l'export :\n\n```bash\ngrep -o '\u002Fcontent\u002Fimages\u002F[^\"\\\\]*' export.json | sort -u > images.txt\nwc -l images.txt\n```\n\nTéléchargez ensuite chaque fichier en conservant l'arborescence `content\u002Fimages\u002F…` : l'importeur de Ghost attend ce chemin.",{"title":108,"body":109},"Installer l'instance cible sur un sous-domaine de test","Installez Ghost sur le VPS en lui donnant une URL provisoire, par exemple `https:\u002F\u002Fnouveau.votre-domaine.com`, avec MySQL 8 et une version au moins égale à la source. La publication de production reste servie par Ghost(Pro) pendant tout ce temps : vos lecteurs ne voient rien.",{"title":111,"body":112},"Importer le contenu, le thème et les redirections","Dans **Settings → Advanced → Import\u002FExport**, importez un `.zip` qui contient `export.json` et le dossier `content\u002Fimages` : l'importeur accepte JSON et zip, et une archive d'images volumineuse se découpe en plusieurs zip. Vérifiez ensuite le thème avant de le téléverser :\n\n```bash\nnpx gscan -z mon-theme.zip\n```\n\nPuis activez-le, et téléversez `redirects.yaml` et `routes.yaml` dans **Settings → Labs**.",{"title":114,"body":115},"Connecter le même compte Stripe, puis importer les membres","Ghost demande de connecter le **même compte Stripe** que la publication d'origine **avant** d'importer les membres payants. Importez d'abord un échantillon de cinq à dix membres payants, contrôlez leur formule et leur abonnement dans la fiche membre, puis importez le reste de `members.csv`.",{"title":117,"body":118},"Brancher l'e-mail : SMTP et Mailgun","Configurez le bloc `mail` de `config.production.json` (ou les variables d'environnement équivalentes en Docker) avec votre relais SMTP, pour les e-mails de connexion. Saisissez ensuite les clés API Mailgun dans les réglages **Email newsletter** de Ghost Admin. Testez les deux : un lien de connexion reçu sur une adresse interne, puis une newsletter de test envoyée à un libellé interne.",{"title":120,"body":121},"Comparer avant et après","Comptez les articles et les membres sur la nouvelle instance :\n\n```bash\nmysql -u ghost -p ghost_prod -e \"SELECT status, COUNT(*) FROM posts GROUP BY status; SELECT status, COUNT(*) FROM members GROUP BY status;\"\n```\n\nLes chiffres doivent égaler ceux de l'étape 1. Ouvrez dix articles au hasard, images comprises, et cherchez toute trace de l'ancien hôte dans le code source des pages.",{"title":123,"body":124},"Basculer le domaine et garder Ghost(Pro) en recouvrement","Remplacez l'URL provisoire par le domaine définitif dans la configuration, redémarrez Ghost, puis modifiez l'enregistrement DNS. Rejouez le sitemap et vérifiez que chaque ancienne URL répond 200 :\n\n```bash\nwhile read u; do echo \"$(curl -s -o \u002Fdev\u002Fnull -w '%{http_code}' \"$u\") $u\"; done \u003C urls-avant.txt | grep -v '^200'\n```\n\nGardez l'abonnement Ghost(Pro) actif une à deux semaines. Pour le transactionnel de plusieurs publications, voyez \u003Ca href=\"\u002Fblog\u002Fsmtp-relay-vps-emails-transactionnels-clients\">notre guide du relais SMTP sur VPS\u003C\u002Fa>.",{"type":39,"title":126,"body":127},"Abonnements Stripe : ce qui se transfère, et ce qu'il faut tester","L'export des membres porte, pour chaque membre payant, son identifiant client Stripe (`stripe_customer_id`). L'importeur sait aussi le retrouver lui-même : avec la valeur `auto`, Ghost cherche dans le compte Stripe connecté un client portant la même adresse e-mail. D'où la condition posée par la documentation : la nouvelle instance doit être branchée sur le **même compte Stripe** avant l'import. Un autre compte ne contient pas ces clients, et vos abonnés payants arriveraient comme membres gratuits.\n\nLes abonnements eux-mêmes restent chez Stripe : la migration ne les annule pas et ne demande aucune re-souscription. La documentation ne détaille pas, en revanche, la manière dont chaque abonnement retrouve sa formule sur la nouvelle instance. C'est la raison de l'échantillon de l'étape 7 : vérifiez sur quelques fiches que la formule, l'échéance et le statut payant sont justes avant d'importer toute la liste.\n\nAprès la bascule, ouvrez les points de terminaison webhook dans le tableau de bord Stripe. Celui de la nouvelle instance doit recevoir les événements ; celui de Ghost(Pro) ne se retire qu'à la fermeture de l'ancien abonnement.",{"type":39,"title":129,"body":130},"Newsletters : le trou de l'e-mail à combler","C'est le point que la plupart des migrations découvrent trop tard. Sur Ghost(Pro), l'envoi des newsletters est inclus. En auto-hébergé, la documentation de Ghost est explicite : Mailgun est le seul fournisseur d'envoi en masse supporté, et un simple serveur SMTP ne peut pas envoyer les newsletters. Le SMTP ne sert qu'aux e-mails de connexion et aux invitations.\n\nIl vous faut donc deux canaux : un relais SMTP pour le transactionnel, et un compte Mailgun pour la diffusion. Côté coût, Mailgun a retiré ou rendu difficile d'accès son plan Flex pour les nouveaux comptes : vérifiez la grille actuelle sur le site de Mailgun avant de chiffrer, en fonction du nombre d'envois mensuels (membres abonnés multipliés par la fréquence de publication).\n\nPréparez enfin l'authentification du domaine d'envoi : les enregistrements SPF et DKIM fournis par Mailgun s'ajoutent à la zone DNS avant le premier envoi réel. Une newsletter partie depuis un domaine non authentifié atterrit en spam, et c'est la réputation du domaine entier qui en pâtit.",{"type":39,"title":132,"body":133},"La bascule DNS, avec une coupure réduite au minimum","La coupure se joue sur deux éléments : la propagation DNS et le certificat TLS. Le TTL abaissé à l'étape 2 règle le premier. Pour le second, deux options. Si votre serveur obtient son certificat par défi HTTP (Caddy dans l'installation Docker officielle de Ghost, certbot avec nginx), il ne peut le faire qu'une fois le DNS basculé : comptez quelques secondes à quelques minutes d'erreurs TLS. Si votre DNS le permet, un défi DNS-01 émet le certificat avant la bascule et supprime cette fenêtre.\n\nChoisissez un créneau de faible trafic, et n'envoyez aucune newsletter le jour même. Une publication programmée sur Ghost(Pro) partirait encore depuis l'ancienne instance : suspendez les envois programmés avant l'export.\n\nTant que Ghost(Pro) reste actif, le retour arrière consiste à remettre l'ancien enregistrement DNS. C'est votre filet. Ne fermez l'abonnement qu'après une semaine sans écart sur les comptages, les webhooks Stripe et la délivrabilité.",{"type":135,"title":136,"body":137},"tip","Sauvegarder dès le premier jour","Ghost(Pro) sauvegardait pour vous ; c'est désormais votre rôle. Planifiez au minimum un dump quotidien de la base et une copie du dossier `content`, vers un stockage hors du VPS :\n\n```bash\nmysqldump --single-transaction -u ghost -p ghost_prod | gzip > \u002Fbackup\u002Fghost-$(date +%F).sql.gz\ntar czf \u002Fbackup\u002Fcontent-$(date +%F).tar.gz \u002Fvar\u002Fwww\u002Fghost\u002Fcontent\n```\n\nFermez au pare-feu tout port autre que 22, 80 et 443, et testez une restauration complète sur une machine vierge au moins une fois par trimestre.",{"type":39,"title":139,"body":140},"Dépannage : les erreurs les plus fréquentes","**`413 Request Entity Too Large` à l'import** : nginx refuse l'archive. Augmentez `client_max_body_size` dans le bloc `server` (par exemple `200m`), rechargez nginx, ou découpez les images en plusieurs zip.\n\n**Images cassées après l'import** : l'archive ne respectait pas le chemin `content\u002Fimages\u002F…`, ou certains fichiers manquent. Comparez `images.txt` au contenu du dossier sur le serveur et réimportez les manquants.\n\n**Membres payants importés comme gratuits** : Stripe n'était pas connecté au moment de l'import, ou il s'agissait d'un autre compte. Connectez le bon compte et réimportez les membres concernés.\n\n**Lien de connexion jamais reçu** : le bloc `mail` est absent ou erroné. Consultez les journaux de Ghost (`ghost log`, ou `docker compose logs ghost`) au moment de la demande de connexion.\n\n**Option d'envoi par e-mail absente à la publication** : Mailgun n'est pas configuré. Le SMTP ne suffit pas pour les newsletters ; saisissez les clés API Mailgun dans **Email newsletter**.",{"type":39,"title":142,"body":143},"Pour une agence : regrouper les publications de ses clients","La migration d'une publication prend une demi-journée de préparation et une heure de bascule. La deuxième se fait plus vite, parce que le serveur, le relais SMTP et la méthode existent déjà. C'est là que l'auto-hébergement devient rentable pour une agence : plusieurs instances Ghost sur un même VPS, chacune avec sa base et son domaine, et une seule facture d'infrastructure.\n\nSur ServOrbit, les VPS démarrent à 99 DH\u002Fmois hors taxes (HT), avec accès root et IPv4 dédiée, et vos domaines, serveurs et renouvellements sont suivis au même endroit. Si la question reste « qui tient le serveur ? », l'option d'administration VPS y répond : vous gérez la relation éditoriale avec vos clients, nous tenons l'infrastructure.\n\nCe guide est fourni tel quel : ServOrbit ne réalise pas la migration de votre publication Ghost(Pro) ; l'administration VPS porte sur le serveur, pas sur cette bascule.","Vos publications Ghost, regroupées sur vos serveurs","Un seul espace pour les domaines, les VPS et les échéances de renouvellement de tout votre portefeuille de publications. L'option d'administration VPS porte sur l'exploitation du serveur, pas sur la migration elle-même : vous gérez la relation avec vos clients, nous tenons l'infrastructure.","Découvrir l'offre agence","\u002Fsolutions\u002Fagences",[149,166,186],{"id":150,"slug":151,"slugs":152,"title":156,"excerpt":157,"readTime":158,"views":18,"isPinned":19,"publishedAt":159,"updatedAt":160,"category":161,"categories":162,"featuredImage":30,"bgImage":31,"posterImage":164,"relatedSolution":165},72,"heberger-ghost",{"fr":151,"en":153,"ar":154,"es":155},"hosting-ghost-on-your-own-vps","استضافة-ghost-على-خادمك-الـvps-الخاص","alojar-ghost-en-un-vps","Héberger Ghost sur VPS : guide complet 2026","Déployez Ghost v6 sur votre VPS avec Caddy, MySQL, Ghost CLI et Stripe Tax : installation, reverse proxy TLS, mise à jour et dépannage des erreurs fréquentes.",10,"2026-04-09T00:00:00+00:00","2026-10-09T22:36:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[163],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-ghost-poster.svg",{"categorySlug":25,"appSlug":35},{"id":167,"slug":168,"slugs":169,"title":173,"excerpt":174,"readTime":158,"views":18,"isPinned":19,"publishedAt":175,"updatedAt":176,"category":177,"categories":182,"featuredImage":30,"bgImage":31,"posterImage":184,"relatedSolution":185},389,"migrer-squarespace-ghost-vps",{"fr":168,"en":170,"ar":171,"es":172},"migrating-squarespace-ghost-vps","الانتقال-من-squarespace-إلى-ghost-على-vps","migrar-squarespace-ghost-vps","Migrer de Squarespace vers Ghost sur VPS","Squarespace +26 % juillet 2026. Migrez vers Ghost auto-hébergé sur VPS : comparatif de coûts sur 3 ans, export\u002Fimport pas à pas, redirections 301.","2026-09-29T00:00:00+00:00","2026-10-22T01:57:45+00:00",{"id":178,"name":179,"slug":180,"color":181,"icon":180},5,"Comparatif","comparatif","bg-info\u002F10 text-info",[183],{"id":178,"name":179,"slug":180,"color":181,"icon":180},"\u002Fblog\u002Fcovers\u002Fmigrer-squarespace-ghost-vps-poster.svg",{"categorySlug":34,"appSlug":35},{"id":187,"slug":188,"slugs":189,"title":193,"excerpt":194,"readTime":195,"views":196,"isPinned":19,"publishedAt":197,"updatedAt":198,"category":199,"categories":203,"featuredImage":30,"bgImage":31,"posterImage":205,"relatedSolution":30},280,"smtp-relay-vps-emails-transactionnels-clients",{"fr":188,"en":190,"ar":191,"es":192},"postfix-smtp-relay-on-vps-client-transactional-emails","إعداد-postfix-smtp-relay-على-vps-لبريد-المواقع","relay-smtp-postfix-en-vps-emails-transaccionales","SMTP relay Postfix sur VPS : emails transactionnels clients","Configurez Postfix en relay SMTP sur un VPS ServOrbit : IPv4 dédiée, SPF, DKIM et DMARC alignés pour tous vos sites clients cPanel en moins d'une heure.",8,1,"2026-08-18T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":17,"name":200,"slug":201,"color":202,"icon":201},"E-mail professionnel","emails","bg-cyan-500\u002F10 text-cyan-400",[204],{"id":17,"name":200,"slug":201,"color":202,"icon":201},"\u002Fblog\u002Fcovers\u002Fsmtp-relay-vps-emails-transactionnels-clients-poster.svg",1792763123414]