51 06/04/2026 07/04/2026 7 min

Scaricare TYPO3 con Composer

Oggi il modo corretto per installare TYPO3 è usare Composer, non copiare file a mano dentro la document root. Composer ti permette di gestire dipendenze, aggiornamenti e versioni in modo più pulito. Crea una directory dedicata, poi scarica la base dell’installazione.

sudo mkdir -p /var/www/typo3
sudo chown -R $USER:$USER /var/www/typo3
cd /var/www/typo3
composer create-project typo3/cms-base-distribution .

Se vuoi separare ancora di più il codice dalla document root, puoi usare una struttura con una cartella pubblica dedicata. La distribuzione base di TYPO3 è già pensata per questo approccio.

Controlla che i file siano presenti:

ls -la /var/www/typo3
ls -la /var/www/typo3/public

Dovresti vedere directory come public, vendor, config e file di Composer. Se composer create-project fallisce, il problema più comune è la versione PHP non compatibile o una mancanza di estensioni PHP.

Permessi corretti per il web server

Un errore molto comune con TYPO3 è sbagliare i permessi. Il web server deve poter leggere i file e scrivere solo nelle directory necessarie, non su tutto il progetto. In una configurazione minima, il proprietario dei file può essere l’utente con cui lavori in SSH, mentre Nginx usa il gruppo o i permessi di lettura.

Una soluzione pulita è assegnare il progetto a un utente dedicato e usare il gruppo del web server. Se vuoi un setup semplice per iniziare, puoi mantenere i file leggibili da Nginx e scrivibili solo dove serve.

sudo chown -R www-data:www-data /var/www/typo3
sudo find /var/www/typo3 -type d -exec chmod 755 {} \;
sudo find /var/www/typo3 -type f -exec chmod 644 {} \;

Se preferisci un approccio più conservativo, lascia il codice leggibile dal server web e limita le directory scrivibili alle sole aree richieste da TYPO3, come var e alcune cartelle in public. L’importante è non dare scrittura indiscriminata all’intero tree.

Configurare Nginx per TYPO3

TYPO3 su Nginx funziona bene se punti la document root alla directory public. Il virtual host deve inoltrare le richieste PHP a PHP-FPM e gestire correttamente gli URL “parlanti”.

Crea un file di configurazione, per esempio /etc/nginx/sites-available/typo3:

server {
listen 80;
server_name esempio.it www.esempio.it;

root /var/www/typo3/public;
index index.php index.html;

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

location / {
try_files $uri /index.php$is_args$args;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location ~* /(typo3conf|fileadmin|uploads)/ {
deny all;
}

location ~ /\. {
deny all;
}
}

Abilita il sito e ricarica Nginx:

sudo ln -s /etc/nginx/sites-available/typo3 /etc/nginx/sites-enabled/typo3
sudo nginx -t
sudo systemctl reload nginx

Il comando nginx -t deve restituire syntax is ok e test is successful. Se fallisce, controlla il path del socket PHP-FPM, che può cambiare con la versione installata.

Verificare e regolare PHP-FPM

TYPO3 è sensibile alla configurazione PHP. Con i valori di default spesso parte, ma per un ambiente serio conviene allineare upload, memoria e limiti di esecuzione. Le impostazioni esatte dipendono dal carico, ma come base iniziale puoi aumentare i limiti rispetto ai default di Ubuntu.

Modifica il file php.ini del pool FPM, in genere:

/etc/php/8.1/fpm/php.ini

Valori utili di partenza:

memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 240
max_input_vars = 1500

Dopo la modifica riavvia PHP-FPM:

sudo systemctl restart php8.1-fpm

Verifica che il servizio sia attivo e senza errori:

systemctl status php8.1-fpm --no-pager

Se TYPO3 dovesse mostrare pagina bianca o errori 502, i primi log da controllare sono /var/log/nginx/typo3.error.log e il journal di PHP-FPM:

sudo journalctl -u php8.1-fpm -n 50 --no-pager

Completare l’installazione dal browser

A questo punto apri il dominio nel browser. Se la configurazione è corretta, TYPO3 avvia il wizard di installazione. L’installer ti chiederà:

  • connessione al database;
  • creazione dell’utente amministratore;
  • nome del sito e configurazione iniziale;
  • eventuale scelta del sito di partenza o pacchetto dimostrativo.

Inserisci i dati del database creato prima:

  • database: typo3db
  • utente: typo3user
  • password: quella impostata nel database
  • host: localhost

Se il wizard non parte e vedi una pagina vuota o un errore 500, il problema di solito è uno dei seguenti: estensione PHP mancante, permessi sbagliati, document root errata o configurazione Nginx incompleta.

Abilitare HTTPS con Let’s Encrypt

Su un sito pubblico, HTTPS non è opzionale. Su Ubuntu 22.04 il modo più semplice è usare Certbot. Prima assicurati che il dominio punti correttamente al server e che la porta 80 sia raggiungibile dall’esterno.

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d esempio.it -d www.esempio.it

Certbot modifica automaticamente il virtual host Nginx e configura il redirect verso HTTPS, se lo accetti. Dopo l’emissione del certificato verifica il rinnovo automatico:

sudo certbot renew --dry-run

Se il test fallisce, controlla che non ci siano blocchi firewall, DNS errato o un proxy/CDN che non consente la validazione.

Controlli post-installazione da non saltare

Dopo il primo accesso, esegui almeno questi controlli:

  1. verifica che il front-end si carichi in HTTPS senza warning del browser;
  2. accedi al backend TYPO3 e controlla che l’utente amministratore funzioni;
  3. apri il backend e verifica che non ci siano errori di estensione o compatibilità;
  4. controlla i log Nginx e PHP-FPM per eventuali warning ricorrenti;
  5. imposta subito backup e aggiornamenti programmati.

Per un controllo veloce dei log:

sudo tail -n 100 /var/log/nginx/typo3.error.log
sudo journalctl -u php8.1-fpm -n 100 --no-pager

Se vuoi un test applicativo minimale, apri la home e una pagina backend; in caso di errore, annota status HTTP e momento preciso. Questo ti aiuta a capire se il problema è nel web server, nel PHP o nel database.

Hardening minimo per un’installazione pulita

Una volta online, riduci la superficie d’attacco. TYPO3 è un CMS potente, ma proprio per questo va tenuto aggiornato e con permessi coerenti.

  • aggiorna regolarmente sistema, PHP e TYPO3;
  • non esporre directory sensibili;
  • usa password robuste per database e backend;
  • limita l’accesso al backend, se possibile, con IP allowlist o VPN;
  • abilita backup giornalieri di file e database;
  • monitora spazio disco e saturazione CPU/RAM.

Controlla anche il consumo di risorse, perché un’installazione TYPO3 con editori e media può crescere rapidamente:

df -h
free -h
top

Se il disco si riempie, TYPO3 e MariaDB iniziano a degradare in modo poco elegante. Tenere margine libero è una misura semplice ma spesso trascurata.

Aggiornamenti e manutenzione

Con TYPO3 installato tramite Composer, gli aggiornamenti seguono una logica ordinata. Prima fai backup, poi aggiorni le dipendenze e infine verifichi il sito. Non aggiornare mai “alla cieca” in produzione.

Flusso base:

cd /var/www/typo3
composer update

Dopo l’update, controlla il backend, le estensioni e i log. Se hai un ambiente staging, fai prima lì il test. In caso di problemi, il rollback più semplice è ripristinare il backup del codice e del database, non improvvisare con patch manuali sparse.

Per una manutenzione sicura, tieni sempre versionati almeno:

  • configurazione Nginx;
  • configurazione PHP-FPM se modificata;
  • dump del database;
  • directory public e file di configurazione TYPO3;
  • lista delle estensioni installate.

Errore comuni e come riconoscerli subito

Se qualcosa non va, la diagnosi iniziale si fa per layer:

  • DNS: il dominio non risolve o punta all’IP sbagliato;
  • Nginx: 502, 403 o 500 nei log di errori;
  • PHP-FPM: socket errato, servizio fermo, errori nel journal;
  • Database: credenziali errate, DB non raggiungibile;
  • Filesystem: permessi sbagliati o disco pieno.

Comandi rapidi utili:

curl -I http://esempio.it
curl -I https://esempio.it
sudo nginx -t
systemctl status php8.1-fpm --no-pager
sudo journalctl -u mariadb -n 50 --no-pager

Se il sito risponde ma il backend no, spesso il problema è nei permessi di scrittura o in una estensione che rompe il caricamento. Se invece non si carica nulla, il primo sospetto resta la configurazione del virtual host o il socket PHP-FPM.

Scelta consigliata per partire senza complicazioni

Se stai installando TYPO3 su Ubuntu 22.04 per un nuovo progetto, la combinazione che consiglio è questa: Nginx, PHP-FPM, MariaDB, Composer, HTTPS con Let’s Encrypt. È una base prevedibile, documentata e facile da mantenere. Se il sito crescerà, potrai poi introdurre caching dedicata, tuning PHP-FPM, Redis e strategie di deploy più avanzate.

La parte importante non è solo far partire TYPO3, ma partire con una struttura che permetta aggiornamenti, backup e troubleshooting senza dover rifare tutto dopo pochi mesi.

Assunzione: i comandi sono pensati per Ubuntu 22.04 con PHP 8.1, Nginx e MariaDB installati localmente; se usi Apache o una versione PHP diversa, adatta i path del servizio e del socket FPM.