Guide de déploiement

Déployer une application Strapi sur un VPS

Déployer sur un VPS Cloud →

Développement8 min de lecture

Déployer une application Strapi sur un VPS

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.

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.

Bénéfices concrets

  • 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

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.

Déploiement pas à pas

01

Configurer la base de données de production

Renoncez à SQLite en production. Dans config/database.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.

02

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.

03

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.

04

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/uploads afin que les médias survivent aux redéploiements. Démarrez avec docker compose up -d.

05

Placer Nginx en reverse proxy

Configurez un vhost vers http://127.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.

06

Activer HTTPS et fixer l'URL publique

Exécutez certbot --nginx -d cms.mondomaine.ma, puis renseignez URL=https://cms.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.

Déchargez le stockage des médias vers un bucket S3 compatible grâce au provider d'upload @strapi/provider-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.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou écrivez à notre équipe — support en anglais, français et arabe.