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 -yCertains 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://. 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.

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.

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

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

À 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.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.