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 -yAlcuni 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://. Ma prima, apri la porta nel firewall.
$ sudo ufw allow 1337
Una volta aperto l’URL, dovresti ottenere la seguente schermata.

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.

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

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

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.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.