[{"data":1,"prerenderedAt":117},["ShallowReactive",2],{"seo-verification":3,"blog-deployer-strapi-vps-fr":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"title":9,"excerpt":10,"readTime":11,"views":12,"isPinned":13,"publishedAt":14,"category":15,"categories":21,"featuredImage":23,"bgImage":24,"posterImage":25,"relatedSolution":26,"intro":28,"sections":29,"ctaTitle":72,"ctaBody":73,"ctaButton":74,"ctaUrl":75,"relatedPosts":76},54,"deployer-strapi-vps","Déployer une application Strapi sur un VPS","Déployez Strapi sur un VPS Cloud : Docker, PostgreSQL, build de l'admin, reverse proxy et SSL. Guide complet pour un CMS headless self-hébergé.",8,398,false,"2026-04-27T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},4,"Développement","developpement","bg-warning\u002F10 text-warning","dev",[22],{"id":16,"name":17,"slug":18,"color":19,"icon":20},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-strapi-vps-poster.svg",{"categorySlug":18,"appSlug":27},"strapi","Strapi est le CMS headless open source de référence en Node.js. Le self-héberger sur un VPS vous donne la propriété totale de vos contenus, de votre base de données et de vos uploads, sans dépendre du Strapi Cloud. Voici comment le mettre en production avec PostgreSQL, Docker et un reverse proxy.",[30,34,44,47,69],{"type":31,"title":32,"body":33},"h2","Pourquoi self-héberger Strapi sur un VPS","Strapi est conçu pour être auto-hébergé : c'est une application Node.js qui expose une API REST ou GraphQL et un panneau d'administration React. Le déployer sur votre propre VPS, plutôt que sur le Strapi Cloud, signifie que vos données, vos médias uploadés et votre base restent sous votre contrôle exclusif, ce qui est souvent une exigence pour des projets clients ou des contraintes de localisation des données. Vous choisissez votre base (PostgreSQL recommandé en production plutôt que SQLite), votre stockage des médias (disque local ou S3), et vous n'êtes pas limité par les quotas d'entrées ou d'utilisateurs admin des offres managées. Un VPS vous permet aussi de faire tourner Strapi et son front consommateur sur la même infrastructure.",{"type":35,"title":36,"items":37},"ul","Bénéfices concrets",[38,39,40,41,42,43],"Propriété complète des contenus, de la base PostgreSQL et des médias uploadés","Choix libre de la base de données et du stockage (disque local ou bucket S3 compatible)","Aucun quota d'entrées, de types de contenu ou d'utilisateurs administrateurs","API REST et GraphQL exposées sur votre domaine, sans intermédiaire ni rate-limit imposé","Plugins de la communauté installables librement, sans validation d'une plateforme","Localisation des données maîtrisée, utile pour la conformité et les exigences clients",{"type":31,"title":45,"body":46},"Prérequis matériels et logiciels","Strapi est plus gourmand que les frameworks front car le build de l'admin React est lourd. Visez un VPS de 2 vCPU et 4 Go de RAM minimum : le build de l'interface admin peut consommer plus de 2 Go de RAM à lui seul, et il est fréquent qu'un build échoue par OOM sur un serveur sous-dimensionné. En production stable, l'application tourne ensuite confortablement. Installez Docker et Docker Compose, et provisionnez une base PostgreSQL 16 (idéalement dans son propre conteneur). Pointez `cms.mondomaine.ma` vers l'IP du VPS. Prévoyez 15 Go de disque pour les `node_modules`, les uploads et les sauvegardes.",{"type":48,"title":49,"steps":50},"steps","Déploiement pas à pas",[51,54,57,60,63,66],{"title":52,"body":53},"Configurer la base de données de production","Renoncez à SQLite en production. Dans `config\u002Fdatabase.js`, configurez le client `postgres` et lisez les credentials depuis l'environnement (`DATABASE_HOST`, `DATABASE_NAME`, `DATABASE_USERNAME`, `DATABASE_PASSWORD`). PostgreSQL est bien plus robuste sous charge concurrente.",{"title":55,"body":56},"Définir les secrets de production","Strapi exige plusieurs clés : `APP_KEYS`, `API_TOKEN_SALT`, `ADMIN_JWT_SECRET`, `JWT_SECRET` et `TRANSFER_TOKEN_SALT`. Générez-les aléatoirement et placez-les dans un fichier `.env` jamais commité. Sans ces clés, l'admin refusera de démarrer en mode production.",{"title":58,"body":59},"Builder l'interface d'administration","Lancez `NODE_ENV=production npm run build` pour compiler le panneau admin React. Si le build manque de mémoire, augmentez temporairement le swap du VPS ou buildez l'image Docker sur une machine plus puissante avant de la pousser.",{"title":61,"body":62},"Orchestrer avec Docker Compose","Déclarez un service `strapi` (basé sur `node:20`) et un service `db` (`postgres:16`) dans `docker-compose.yml`, reliés par un réseau interne. Montez un volume pour `public\u002Fuploads` afin que les médias survivent aux redéploiements. Démarrez avec `docker compose up -d`.",{"title":64,"body":65},"Placer Nginx en reverse proxy","Configurez un vhost vers `http:\u002F\u002F127.0.0.1:1337` (port par défaut de Strapi). Augmentez `client_max_body_size` à 50M ou plus pour autoriser l'upload de médias volumineux, sinon les téléversements échoueront avec une erreur 413.",{"title":67,"body":68},"Activer HTTPS et fixer l'URL publique","Exécutez `certbot --nginx -d cms.mondomaine.ma`, puis renseignez `URL=https:\u002F\u002Fcms.mondomaine.ma` dans la config serveur de Strapi. Cette URL est indispensable pour que les liens des médias et le panneau admin fonctionnent correctement derrière le proxy.",{"type":70,"body":71},"tip","Déchargez le stockage des médias vers un bucket S3 compatible grâce au provider d'upload `@strapi\u002Fprovider-upload-aws-s3` : vos uploads ne grossissent plus le disque du VPS et survivent à toute recréation de conteneur, sans volume à sauvegarder. Pour la base, automatisez un `pg_dump` quotidien via un cron sur le VPS et copiez le dump hors du serveur. Enfin, lancez Strapi avec `NODE_ENV=production` impérativement : le mode développement recompile l'admin à chaud et expose le Content-Type Builder, à proscrire en prod.","Hébergez votre CMS Strapi en toute autonomie","Le VPS Cloud ServOrbit fournit la RAM nécessaire au build de l'admin Strapi et un environnement Docker + PostgreSQL prêt à l'emploi, pour garder la pleine propriété de vos contenus et de vos données.","Découvrir le VPS Cloud","\u002Fvps-cloud",[77,91,104],{"id":78,"slug":79,"title":80,"excerpt":81,"readTime":82,"views":83,"isPinned":13,"publishedAt":84,"category":85,"categories":86,"featuredImage":23,"bgImage":24,"posterImage":88,"relatedSolution":89},5,"deployer-laravel-vps","Déployer Laravel sur un VPS : guide production","Passez Laravel en production sur VPS : PHP, workers, cache, base de données, reverse proxy et HTTPS proprement configurés.",7,2840,"2026-02-09T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[87],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fdeployer-laravel-vps-poster.svg",{"categorySlug":20,"appSlug":90},"laravel-stack",{"id":92,"slug":93,"title":94,"excerpt":95,"readTime":11,"views":96,"isPinned":13,"publishedAt":97,"category":98,"categories":99,"featuredImage":23,"bgImage":24,"posterImage":101,"relatedSolution":102},43,"deployer-nodejs-vps","Déployer une application Node.js sur un VPS","Déployez une application Node.js en production sur un VPS : PM2, reverse proxy Nginx, SSL Let's Encrypt et démarrage automatique au boot.",591,"2026-05-08T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[100],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fdeployer-nodejs-vps-poster.svg",{"categorySlug":18,"appSlug":103},"nodejs",{"id":105,"slug":106,"title":107,"excerpt":108,"readTime":11,"views":109,"isPinned":13,"publishedAt":110,"category":111,"categories":112,"featuredImage":23,"bgImage":24,"posterImage":114,"relatedSolution":115},44,"deployer-django-vps","Déployer une application Django sur un VPS","Déployez Django sur un VPS : Gunicorn, Nginx, PostgreSQL, Docker et SSL. Guide complet pour développeurs Python qui veulent self-héberger.",628,"2026-05-07T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[113],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fdeployer-django-vps-poster.svg",{"categorySlug":18,"appSlug":116},"django",1784126233949]