Installation Strapi · 11 min read · Oct 19, 2025

Comment installer Strapi CMS sur Ubuntu 22.04

Strapi est un système de gestion de contenu (CMS) sans tête open-source, construit avec JavaScript. Comme d’autres CMS sans tête, Strapi ne vient pas avec un frontend par défaut. Il utilise une API pour son frontend, vous permettant de construire le site web en utilisant des frameworks populaires comme React et Next.js. Basé sur un système de plugins, Strapi est un CMS flexible dont le panneau d’administration et l’API sont extensibles - et dont chaque partie est personnalisable pour correspondre à n’importe quel cas d’utilisation. Strapi dispose également d’un système d’utilisateur intégré pour gérer en détail l’accès des administrateurs et des utilisateurs finaux.

Dans ce tutoriel, vous apprendrez à installer la version communautaire de Strapi CMS sur un serveur Ubuntu 22.04, avec Nginx comme serveur proxy inverse.

Prérequis

  • Un serveur exécutant Ubuntu 22.04.
  • Un utilisateur non-root avec des privilèges sudo.
  • Un nom de domaine entièrement qualifié (FQDN) comme strapi.example.com.
  • Assurez-vous que tout est à jour. $ sudo apt update $ sudo apt upgrade
  • Quelques paquets dont votre système a besoin. $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y Certains de ces paquets peuvent déjà être installés sur votre système.

Étape 1 - Configurer le pare-feu

La première étape consiste à configurer le pare-feu. Ubuntu est livré avec ufw (Uncomplicated Firewall) par défaut.

Vérifiez si le pare-feu est en cours d’exécution.

$ sudo ufw status

Vous devriez obtenir la sortie suivante.

Status: inactive

Autorisez le port SSH afin que le pare-feu ne rompe pas la connexion actuelle lors de son activation.

$ sudo ufw allow OpenSSH

Autorisez également les ports HTTP et HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Activez le pare-feu

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Vérifiez à nouveau l’état du pare-feu.

$ sudo ufw status

Vous devriez voir une sortie similaire.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Étape 2 - Installer et configurer PostgreSQL

Strapi fonctionne avec PostgreSQL 11 et supérieur. Ubuntu 22.04 est livré avec PostgreSQL 14 par défaut. Nous allons utiliser PostgreSQL 15 pour notre tutoriel.

Exécutez la commande suivante pour ajouter la clé GPG de PostgreSQL.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

Ajoutez le dépôt APT à votre liste de sources.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Mettez à jour le dépôt système.

$ sudo apt update

Maintenant, vous pouvez installer PostgreSQL en utilisant la commande ci-dessous.

$ sudo apt install postgresql postgresql-contrib

Le paquet postgresql-contrib contient quelques utilitaires supplémentaires.

Vérifiez l’état du service PostgreSQL.

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2022-12-28 18:03:03 UTC; 17s ago
   Main PID: 4119 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Dec 28 18:03:03 strapi systemd[1]: Starting PostgreSQL RDBMS...
Dec 28 18:03:03 strapi systemd[1]: Finished PostgreSQL RDBMS.

Vous pouvez voir que le service est activé et en cours d’exécution par défaut.

Lancez le shell PostgreSQL.

$ sudo -i -u postgres psql

Créez la base de données Strapi.

postgres=# CREATE DATABASE strapidb;

Créez l’utilisateur Strapi et choisissez un mot de passe fort.

postgres-# CREATE USER strapiuser WITH PASSWORD 'Your_Password';

Changez le propriétaire de la base de données en utilisateur Strapi.

postgres-# ALTER DATABASE strapidb OWNER TO strapiuser;

Quittez le shell.

postgres-# \q

Vérifiez que vos identifiants fonctionnent.

$ psql --username strapiuser --password --host localhost strapidb
Password:
psql (15.1 (Ubuntu 15.1-1.pgdg22.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

strapidb=>

Quittez le shell en tapant \q.

Étape 3 - Installer Node.js

Ubuntu 22.04 est livré avec Node v12 qui est obsolète. Nous allons installer la dernière version LTS de Node qui est v18 au moment de la rédaction de ce tutoriel.

Téléchargez l’installateur Node v18 depuis Nodesource.

$ curl -sL https://deb.nodesource.com/setup_18.x -o nodesource_setup.sh

Exécutez le script d’installation.

$ sudo bash nodesource_setup.sh

Installez Node.js.

$ sudo apt install nodejs

Vérifiez la version de Node.js.

$ node -v
v18.12.1

Supprimez le fichier d’installation.

$ rm nodesource_setup.sh

Étape 4 - Installer Strapi

Exécutez la commande suivante pour installer Strapi.

$ npx create-strapi-app@latest howtoforge-project
Need to install the following packages:
  [email protected]
Ok to proceed? (y) y

Entrez y pour continuer avec l’installation. Ensuite, vous serez invité à choisir le type d’installation. Choisissez Personnalisé pour continuer et répondez aux questions comme suit.

? Choose your installation type Custom (manual settings)
? Choose your preferred language JavaScript
? Choose your default database client postgres
? Database name: strapidb
? Host: 127.0.0.1
? Port: 5432
? Username: strapiuser
? Password: Your_Password
? Enable SSL connection: No

Selon vos besoins, vous pouvez choisir Typescript ou JavaScript comme langue pour Strapi.

Une fois l’installation terminée, vous êtes prêt à construire votre projet Strapi.

Passez au répertoire du projet.

$ cd howtoforge-project

Exécutez la commande suivante pour construire le projet, y compris l’interface utilisateur d’administration Strapi.

$ NODE_ENV=production npm run build

Démarrez le serveur Strapi en utilisant la commande suivante.

$ node ~/howtoforge-project/node_modules/.bin/strapi start

Votre application devrait être visible à l’URL http://:1337. Mais d’abord, ouvrez le port dans le pare-feu.

$ sudo ufw allow 1337

Une fois que vous ouvrez l’URL, vous devriez obtenir l’écran suivant.

Strapi CMS Home

Appuyez sur Ctrl + C dans le terminal pour arrêter le serveur. Vous devriez supprimer la règle du pare-feu car nous n’en aurons pas besoin.

$ sudo ufw delete allow 1337

Étape 5 - Installer et configurer PM2

Au lieu de démarrer le serveur manuellement, nous pouvons utiliser PM2 (Process Manager 2) pour gérer le processus et créer un service systemd pour cela.

Passez au répertoire personnel.

$ cd ~

Installez PM2.

$ sudo npm install pm2@latest -g

Créez et ouvrez le fichier de configuration PM2 pour l’édition.

$ sudo nano ecosystem.config.js

Collez le contenu suivant dans le fichier. Assurez-vous d’entrer le bon nom de répertoire avec les identifiants Postgres.

module.exports = {
  apps: [
    {
      name: 'strapi',
      cwd: '/home/navjot/my-project',
      script: 'npm',
      args: 'start',
      env: {
        NODE_ENV: 'production',
        DATABASE_HOST: 'localhost',
        DATABASE_PORT: '5432',
        DATABASE_NAME: 'strapidb',
        DATABASE_USERNAME: 'strapiuser',
        DATABASE_PASSWORD: 'Your_Password',
      },
    },
  ],
};

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité une fois terminé.

Exécutez votre instance Strapi en arrière-plan en utilisant PM2.

$ pm2 start ecosystem.config.js

Vous obtiendrez la sortie suivante.

                        -------------

__/\\\\\\\\\____/\\\____________/\\\____/\\\\\\\_____ 
 _\/\\\/////////\\\_\/\\\\\________/\\\\\__/\\\///////\\\___
  _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
   _\/\\\\\\\\\\\\\/__\/\\\///\\\/\\\/__\/\\\___________/\\\/___
    _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
     _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
      _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
       _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\_ 
        _\///______________\///______________\///__\///////////////__


                          Runtime Edition

        PM2 est un gestionnaire de processus de production pour les applications Node.js
                     avec un équilibreur de charge intégré.

                Démarrez et dédémarrez n'importe quelle application :
                $ pm2 start app.js

                Équilibrez 4 instances de api.js :
                $ pm2 start api.js -i 4

                Surveillez en production :
                $ pm2 monitor

                Faites en sorte que pm2 se lance automatiquement au redémarrage du serveur :
                $ pm2 startup

                Pour aller plus loin, consultez :
                http://pm2.io/


                        -------------

[PM2] Spawning PM2 daemon with pm2_home=/home/navjot/.pm2
[PM2] PM2 Successfully daemonized
[PM2][WARN] Applications strapi not running, starting...
[PM2] App [strapi] launched (1 instances)
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? id  ? name      ? namespace   ? version ? mode    ? pid      ? uptime ? ?    ? status    ? cpu      ? mem      ? user
    ? watching ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? 0   ? strapi    ? default     ? N/A     ? fork    ? 4824     ? 0s     ? 0    ? online    ? 0%       ? 31.9mb   ? navjot   ? disabled ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

Les applications exécutées sous PM2 redémarrent automatiquement si elles plantent ou sont tuées.

Créez un script de démarrage systemd en utilisant la commande suivante.

$ pm2 startup

Vous obtiendrez la sortie suivante.

[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot

Copiez la commande de la sortie ci-dessus et exécutez-la.

$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot

Enregistrez la liste des processus PM2.

$ pm2 save

Votre service Strapi fonctionne maintenant en arrière-plan en mode production.

Étape 6 - Installer Nginx

Ubuntu 22.04 est livré avec une version plus ancienne de Nginx. Pour installer la dernière version, vous devez télécharger le dépôt officiel de Nginx.

Importez la clé de signature de Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Ajoutez le dépôt pour la version stable de Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Mettez à jour les dépôts système.

$ sudo apt update

Installez Nginx.

$ sudo apt install nginx

Vérifiez l’installation.

$ nginx -v
nginx version: nginx/1.22.1

Démarrez le serveur Nginx.

$ sudo systemctl start nginx

Étape 7 - Installer SSL

Nous devons installer Certbot pour générer le certificat SSL. Vous pouvez soit installer Certbot en utilisant le dépôt d’Ubuntu, soit obtenir la dernière version en utilisant l’outil Snapd. Nous allons utiliser la version Snapd.

Ubuntu 22.04 est livré avec Snapd installé par défaut. Exécutez les commandes suivantes pour vous assurer que votre version de Snapd est à jour. Assurez-vous que votre version de Snapd est à jour.

$ sudo snap install core
$ sudo snap refresh core

Installez Certbot.

$ sudo snap install --classic certbot

Utilisez la commande suivante pour vous assurer que la commande Certbot s’exécute en créant un lien symbolique vers le répertoire /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Exécutez la commande suivante pour générer un certificat SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d strapi.example.com

La commande ci-dessus téléchargera un certificat dans le répertoire /etc/letsencrypt/live/strapi.example.com sur votre serveur.

Générez un certificat de groupe Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Faites un essai du processus pour vérifier si le renouvellement SSL fonctionne correctement.

$ sudo certbot renew --dry-run

Si vous ne voyez pas d’erreurs, vous êtes prêt. Votre certificat se renouvellera automatiquement.

Étape 8 - Configurer Nginx

Ouvrez le fichier /etc/nginx/nginx.conf pour l’édition.

$ sudo nano /etc/nginx/nginx.conf

Ajoutez la ligne suivante avant la ligne include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Créez et ouvrez le fichier /etc/nginx/conf.d/strapi.conf pour l’édition.

$ sudo nano /etc/nginx/conf.d/strapi.conf

Collez le code suivant dedans.

server {
  # Redirigez toutes les requêtes http vers https
  listen         80;
  listen         [::]:80;
  server_name    strapi.example.com;
  return 301     https://$host$request_uri;
}

server {
  listen                    443 ssl http2;
  listen                    [::]:443 ssl http2;
  server_name               strapi.example.com;

  access_log                /var/log/nginx/strapi.access.log;
  error_log                 /var/log/nginx/strapi.error.log;

  # Configuration TLS
  ssl_certificate           /etc/letsencrypt/live/strapi.example.com/fullchain.pem;
  ssl_certificate_key       /etc/letsencrypt/live/strapi.example.com/privkey.pem;
  ssl_trusted_certificate   /etc/letsencrypt/live/strapi.example.com/chain.pem;
  ssl_protocols             TLSv1.2 TLSv1.3;

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
  ssl_prefer_server_ciphers on;
  ssl_session_cache         shared:SSL:50m;
  ssl_session_timeout       1d;

  # OCSP Stapling ---
  # récupérez les enregistrements OCSP à partir de l'URL dans ssl_certificate et mettez-les en cache
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  location / {
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-Proto $scheme;
    proxy_set_header        X-Forwarded-Host $http_host;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass              http://127.0.0.1:1337;
  }
}

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité une fois terminé.

Vérifiez la syntaxe du fichier de configuration Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Redémarrez le service Nginx.

$ sudo systemctl restart nginx

Vous pouvez maintenant accéder à Strapi CMS via l’URL https://strapi.example.com. Vous verrez la page suivante qui montre que Strapi fonctionne en mode production.

Strapi Production Home

Visitez l’URL https://strapi.example.com/admin pour créer un utilisateur administrateur.

Strapi Admin User Create Page

Remplissez vos détails administratifs et cliquez sur le bouton Let’s start pour accéder à l’écran du tableau de bord administrateur.

Strapi Admin Dashboard

À partir de là, vous pouvez commencer à créer du contenu sur Strapi.

Étape 9 - Mettre à niveau Strapi

La première étape pour mettre à niveau Strapi est d’arrêter le serveur.

$ cd ~
$ pm2 stop ecosystem.config.js

Passez au répertoire du projet et ouvrez le fichier package.json pour l’édition.

$ cd howtoforge-project
$ nano package.json

Mettez à niveau tous les numéros de version des paquets Strapi vers la dernière version stable de Strapi. Vous pouvez obtenir la dernière version disponible sur la page des versions de Strapi sur GitHub.

"devDependencies": {},
  "dependencies": {
    "@strapi/strapi": "4.5.5",
    "@strapi/plugin-users-permissions": "4.5.5",
    "@strapi/plugin-i18n": "4.5.5",
    "pg": "8.6.0"
  },

Ici, vous devez changer 4.5.5 pour la dernière version stable. Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité une fois terminé.

Installez la version mise à niveau.

$ npm install

Reconstruisez le panneau d’administration.

$ NODE_ENV=production npm run build

Redémarrez le serveur.

$ cd ~
$ pm2 start ecosystem.config.js

Votre installation de Strapi est maintenant mise à niveau et en cours d’exécution.

Conclusion

Cela conclut notre tutoriel sur l’installation de Strapi CMS sur un serveur Ubuntu 22.04 et Nginx comme serveur proxy inverse. Si vous avez des questions, posez-les dans les commentaires ci-dessous.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.