Installazione Strapi · 11 min read · Oct 19, 2025

Come installare Strapi CMS su Ubuntu 22.04

Strapi è un sistema di gestione dei contenuti (CMS) headless open-source costruito con JavaScript. Come altri CMS headless, Strapi non viene fornito con un frontend predefinito. Utilizza un’API per il suo frontend, consentendoti di costruire il sito web utilizzando framework popolari come React e Next.js. Basato su un sistema di plugin, Strapi è un CMS flessibile il cui pannello di amministrazione e API sono estensibili - e ogni parte è personalizzabile per adattarsi a qualsiasi caso d’uso. Strapi ha anche un sistema utente integrato per gestire in dettaglio a cosa hanno accesso gli amministratori e gli utenti finali.

In questo tutorial, imparerai come installare la versione community di Strapi CMS su un server Ubuntu 22.04, insieme a Nginx come server proxy inverso.

Prerequisiti

  • Un server che esegue Ubuntu 22.04.
  • Un utente non root con privilegi sudo.
  • Un nome di dominio completamente qualificato (FQDN) come strapi.example.com.
  • Assicurati che tutto sia aggiornato. $ sudo apt update $ sudo apt upgrade
  • Alcuni pacchetti di cui il tuo sistema ha bisogno. $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y Alcuni di questi pacchetti potrebbero già essere installati sul tuo sistema.

Passo 1 - Configurare il Firewall

Il primo passo è configurare il firewall. Ubuntu viene fornito di default con ufw (Uncomplicated Firewall).

Controlla se il firewall è attivo.

$ sudo ufw status

Dovresti ottenere il seguente output.

Status: inactive

Consenti la porta SSH affinché il firewall non interrompa la connessione attuale quando viene abilitato.

$ sudo ufw allow OpenSSH

Consenti anche le porte HTTP e HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Abilita il Firewall

$ sudo ufw enable
Il comando potrebbe interrompere le connessioni ssh esistenti. Procedere con l'operazione (y|n)? y
Il firewall è attivo e abilitato all'avvio del sistema

Controlla di nuovo lo stato del firewall.

$ sudo ufw status

Dovresti vedere un output simile.

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)

Passo 2 - Installare e Configurare PostgreSQL

Strapi funziona con PostgreSQL 11 e versioni superiori. Ubuntu 22.04 viene fornito di default con PostgreSQL 14. Utilizzeremo PostgreSQL 15 per il nostro tutorial.

Esegui il seguente comando per aggiungere la chiave GPG di PostgreSQL.

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

Aggiungi il repository APT alla tua lista di sorgenti.

$ 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'

Aggiorna il repository di sistema.

$ sudo apt update

Ora puoi installare PostgreSQL utilizzando il comando qui sotto.

$ sudo apt install postgresql postgresql-contrib

Il pacchetto postgresql-contrib contiene alcune utilità extra.

Controlla lo stato del servizio 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.

Puoi vedere che il servizio è abilitato e in esecuzione per impostazione predefinita.

Avvia la shell di PostgreSQL.

$ sudo -i -u postgres psql

Crea il database Strapi.

postgres=# CREATE DATABASE strapidb;

Crea l’utente Strapi e scegli una password sicura.

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

Cambia il proprietario del database in utente Strapi.

postgres-# ALTER DATABASE strapidb OWNER TO strapiuser;

Esci dalla shell.

postgres-# \q

Verifica che le tue credenziali funzionino.

$ 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=>

Esci dalla shell digitando \q.

Passo 3 - Installare Node.js

Ubuntu 22.04 viene fornito con Node v12 che è obsoleto. Installeremo l’ultima versione LTS di Node che è v18 al momento della scrittura di questo tutorial.

Scarica l’installer di Node v18 da Nodesource.

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

Esegui lo script di installazione.

$ sudo bash nodesource_setup.sh

Installa Node.js.

$ sudo apt install nodejs

Verifica la versione di Node.js.

$ node -v
v18.12.1

Elimina il file di installazione.

$ rm nodesource_setup.sh

Passo 4 - Installare Strapi

Esegui il seguente comando per installare Strapi.

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

Inserisci y per procedere con l’installazione. Successivamente, ti verrà chiesto di scegliere il tipo di installazione. Scegli Personalizzato per procedere e rispondi alle domande come segue.

? 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

A seconda delle tue esigenze, puoi scegliere Typescript o JavaScript come linguaggio per Strapi.

Una volta completata l’installazione, sei pronto per costruire il tuo progetto Strapi.

Passa alla directory del progetto.

$ cd howtoforge-project

Esegui il seguente comando per costruire il progetto, inclusa l’interfaccia utente di amministrazione di Strapi.

$ NODE_ENV=production npm run build

Avvia il server Strapi utilizzando il seguente comando.

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

La tua applicazione dovrebbe essere visibile all’URL http://:1337. Ma prima, apri la porta nel firewall.

$ sudo ufw allow 1337

Una volta aperto l’URL, dovresti ottenere la seguente schermata.

Strapi CMS Home

Premi Ctrl + C nel terminale per fermare il server. Dovresti eliminare la regola del firewall perché non ne avremo bisogno.

$ sudo ufw delete allow 1337

Passo 5 - Installare e Configurare PM2

Invece di avviare manualmente il server, possiamo utilizzare PM2 (Process Manager 2) per gestire il processo e creare un servizio systemd per lo stesso.

Passa alla directory home.

$ cd ~

Installa PM2.

$ sudo npm install pm2@latest -g

Crea e apri il file di configurazione PM2 per la modifica.

$ sudo nano ecosystem.config.js

Incolla il seguente contenuto nel file. Assicurati di inserire il nome della directory corretto insieme alle credenziali di 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',
      },
    },
  ],
};

Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.

Esegui la tua istanza Strapi in background utilizzando PM2.

$ pm2 start ecosystem.config.js

Otterrai il seguente output.

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

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

                          Runtime Edition

        PM2 è un gestore di processi di produzione per applicazioni Node.js
                     con un bilanciatore di carico integrato.

                Avvia e daemonizza qualsiasi applicazione:
                $ pm2 start app.js

                Bilancia 4 istanze di api.js:
                $ pm2 start api.js -i 4

                Monitora in produzione:
                $ pm2 monitor

                Fai in modo che pm2 si avvii automaticamente al riavvio del server:
                $ pm2 startup

                Per andare oltre controlla:
                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 ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

Le applicazioni in esecuzione sotto PM2 si riavviano automaticamente se si bloccano o vengono terminate.

Crea uno script di avvio systemd utilizzando il seguente comando.

$ pm2 startup

Otterrai il seguente output.

[PM2] Init System found: systemd
[PM2] Per impostare lo script di avvio, copia/incolla il seguente comando:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot

Copia il comando dall’output sopra e eseguilo.

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

Salva l’elenco dei processi PM2.

$ pm2 save

Il tuo servizio Strapi è ora in esecuzione in background in modalità produzione.

Passo 6 - Installare Nginx

Ubuntu 22.04 viene fornito con una versione più vecchia di Nginx. Per installare l’ultima versione, devi scaricare il repository ufficiale di Nginx.

Importa la chiave di firma di Nginx.

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

Aggiungi il repository per la versione stabile di 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

Aggiorna i repository di sistema.

$ sudo apt update

Installa Nginx.

$ sudo apt install nginx

Verifica l’installazione.

$ nginx -v
nginx version: nginx/1.22.1

Avvia il server Nginx.

$ sudo systemctl start nginx

Passo 7 - Installare SSL

Dobbiamo installare Certbot per generare il certificato SSL. Puoi installare Certbot utilizzando il repository di Ubuntu o scaricare l’ultima versione utilizzando lo strumento Snapd. Utilizzeremo la versione Snapd.

Ubuntu 22.04 viene fornito con Snapd installato di default. Esegui i seguenti comandi per assicurarti che la tua versione di Snapd sia aggiornata. Assicurati che la tua versione di Snapd sia aggiornata.

$ sudo snap install core
$ sudo snap refresh core

Installa Certbot.

$ sudo snap install --classic certbot

Usa il seguente comando per assicurarti che il comando Certbot venga eseguito creando un collegamento simbolico alla directory /usr/bin.

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

Esegui il seguente comando per generare un certificato SSL.

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

Il comando sopra scaricherà un certificato nella directory /etc/letsencrypt/live/strapi.example.com sul tuo server.

Genera un certificato di gruppo Diffie-Hellman.

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

Fai una prova del processo per controllare se il rinnovo SSL funziona correttamente.

$ sudo certbot renew --dry-run

Se non vedi errori, sei a posto. Il tuo certificato si rinnoverà automaticamente.

Passo 8 - Configurare Nginx

Apri il file /etc/nginx/nginx.conf per la modifica.

$ sudo nano /etc/nginx/nginx.conf

Aggiungi la seguente riga prima della riga include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Crea e apri il file /etc/nginx/conf.d/strapi.conf per la modifica.

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

Incolla il seguente codice in esso.

server {
  # Reindirizza tutte le richieste http a 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;

  # Configurazione 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 ---
  # recupera i record OCSP dall'URL nel ssl_certificate e memorizzali nella 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;
  }
}

Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.

Verifica la sintassi del file di configurazione di Nginx.

$ sudo nginx -t
nginx: il file di configurazione /etc/nginx/nginx.conf ha una sintassi corretta
nginx: il test del file di configurazione /etc/nginx/nginx.conf è riuscito

Riavvia il servizio Nginx.

$ sudo systemctl restart nginx

Ora puoi accedere a Strapi CMS tramite l’URL https://strapi.example.com. Vedrai la seguente pagina che mostra che Strapi è in esecuzione in modalità produzione.

Strapi Production Home

Visita l’URL https://strapi.example.com/admin per creare un utente amministratore.

Strapi Admin User Create Page

Compila i tuoi dettagli da amministratore e fai clic sul pulsante Iniziamo per procedere alla schermata del dashboard dell’amministratore.

Strapi Admin Dashboard

Da qui in poi, puoi iniziare a creare contenuti su Strapi.

Passo 9 - Aggiornare Strapi

Il primo passo per aggiornare Strapi è fermare il server.

$ cd ~
$ pm2 stop ecosystem.config.js

Passa alla directory del progetto e apri il file package.json per la modifica.

$ cd howtoforge-project
$ nano package.json

Aggiorna tutti i numeri di versione dei pacchetti Strapi all’ultima versione stabile di Strapi. Puoi ottenere l’ultima versione disponibile dalla pagina delle release di Strapi su 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"
  },

Qui devi cambiare 4.5.5 con l’ultima versione stabile. Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.

Installa la versione aggiornata.

$ npm install

Ricostruisci il pannello di amministrazione.

$ NODE_ENV=production npm run build

Avvia di nuovo il server.

$ cd ~
$ pm2 start ecosystem.config.js

La tua installazione di Strapi è ora aggiornata e in esecuzione.

Conclusione

Questo conclude il nostro tutorial su come installare Strapi CMS su un server Ubuntu 22.04 e Nginx come server proxy inverso. Se hai domande, pubblicale nei commenti qui sotto.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.