Discourse su Ubuntu 22.04 LTS si installa in modo pulito solo se prima metti in ordine tre cose: dominio, posta e risorse. Il software gira bene in container, ma non perdona configurazioni improvvisate su DNS, SMTP o storage. Se parti con un server piccolo, considera almeno 2 vCPU, 4 GB di RAM e SSD: sotto queste soglie l’installazione può riuscire, ma l’esperienza d’uso degrada appena arrivano indicizzazione, allegati e job di background.
Qui assumo un’installazione standard con un singolo host Ubuntu 22.04 LTS, accesso root o sudo, dominio già delegato e nessun pannello che sovrascriva automaticamente Apache, Nginx o firewall. L’obiettivo è arrivare a un Discourse funzionante, con HTTPS, mail in uscita e una base solida per manutenzione e backup.
Prima di installare: requisiti che evitano il 90% dei problemi
Discourse non è un’app PHP da copiare in una directory. È una piattaforma applicativa che dipende da container, PostgreSQL, Redis, job asincroni e posta affidabile. La fase di preparazione conta più della procedura in sé.
- Hostname dedicato: scegli un FQDN preciso, ad esempio
discourse.example.com. Evita di usare il dominio root se lo tieni per il sito principale. - DNS corretto: record
AoAAAAche puntano al server. Verifica anche il TTL se prevedi migrazioni o rollback rapidi. - SMTP pronto: meglio un relay esterno affidabile che un server locale appena installato. Discourse invia molte notifiche e l’email è parte del flusso applicativo, non un optional.
- Spazio disco: almeno 20–30 GB liberi iniziali, ma se prevedi allegati e immagini conviene stare più larghi.
- Accesso alla porta 80 e 443: il container di Discourse termina di solito con il proprio reverse proxy e certificato Let’s Encrypt, quindi quelle porte devono essere libere.
Prima di toccare il server, controlla il DNS dal tuo client e dal server stesso. Una verifica rapida evita di scoprire a metà installazione che il nome non risolve o che l’IP è ancora quello vecchio.
dig +short discourse.example.com
curl -I http://discourse.example.com
Se il dominio non risponde ancora come previsto, fermati qui. Installare Discourse con DNS incoerente produce errori poco leggibili, soprattutto quando entra in gioco il certificato TLS.
Preparazione di Ubuntu 22.04 LTS
Parti da un sistema aggiornato e con i pacchetti base necessari. Non serve un ambiente “tirato a lucido”, ma conviene evitare di ereditare configurazioni vecchie o servizi che occupano le porte web.
- Aggiorna l’indice dei pacchetti e il sistema.
sudo apt update
sudo apt -y upgrade
sudo reboot
Dopo il riavvio, verifica che il sistema sia effettivamente su 22.04 e che il kernel sia coerente con il ciclo LTS. Non è un requisito specifico di Discourse, ma riduce sorprese quando si lavora con Docker e filesystem moderni.
lsb_release -a
uname -r
- Installa i pacchetti utili per il bootstrap e il debug.
sudo apt -y install git curl wget ca-certificates gnupg lsb-release ufw
Se UFW è attivo, apri solo ciò che serve. In uno scenario standard bastano SSH, HTTP e HTTPS.
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
Installazione del container Discourse
Il modo supportato e più lineare è usare l’installer ufficiale che prepara il container e la configurazione iniziale. Il punto delicato è che non stai installando un servizio “nativo” in stile apt install, ma stai predisponendo un host che esegue Discourse in container Docker gestiti dallo script di setup.
- Clona il repository di installazione in una directory dedicata.
sudo -i
mkdir -p /var/discourse
cd /var/discourse
git clone https://github.com/discourse/discourse_docker.git .
- Lancia l’installer e rispondi ai parametri iniziali.
./discourse-setup
Durante il setup ti verranno chiesti almeno hostname, email di amministrazione e parametri SMTP. Qui è importante non andare a memoria: se inserisci valori errati, Discourse può installarsi comunque ma poi fallire sulle notifiche o sul bootstrap del certificato.
Se preferisci partire da un template manuale, puoi creare il file di configurazione prima del setup. Il percorso classico è /var/discourse/containers/app.yml. È il file che determina gran parte del comportamento del container: URL, email, volumi, plugin e variabili di ambiente.
templates: - "templates/web.template.yml" - "templates/web.socketed.template.yml" expose: - "80:80" - "443:443" env: LANG: it_IT.UTF-8 UNICORN_WORKERS: 3 DISCOURSE_HOSTNAME: discourse.example.com
Non copiare questo blocco alla cieca: è un esempio minimale, non un file completo. Il setup ufficiale genera una base più articolata che va adattata al tuo contesto. Se modifichi il file, conserva sempre una copia di backup o un commit locale prima di ricostruire il container.
SMTP: la parte che fa fallire gli ambienti “quasi pronti”
Discourse senza posta funzionante è un’installazione monca. Registrazione utenti, reset password, notifiche e digest dipendono dall’SMTP. In produzione conviene usare un relay esterno con autenticazione e TLS, non un MTA improvvisato sullo stesso host, a meno che tu non abbia già una piattaforma mail ben governata.
- Raccogli i parametri del provider SMTP: host, porta, username, password, crittografia e indirizzo mittente.
- Inseriscili nel wizard di setup o nelle variabili previste dal container.
- Verifica che il dominio del mittente abbia SPF, DKIM e DMARC coerenti con il relay scelto.
Un errore tipico è usare una casella personale come mittente e poi stupirsi dei filtri antispam. Meglio un indirizzo dedicato del tipo noreply@example.com, con record DNS allineati al provider di invio. Se il relay richiede una password, trattala come un segreto operativo: non inserirla in documenti condivisi in chiaro e ruotala se l’hai già esposta.
Per una verifica rapida, controlla i log del container dopo il primo avvio. Se l’SMTP non è corretto, il problema emerge quasi subito nelle code di posta o negli errori di autenticazione.
cd /var/discourse
./launcher logs app
HTTPS, certificato e reverse proxy
Il setup di Discourse su Ubuntu 22.04 tende a gestire da solo il certificato Let’s Encrypt, a patto che il dominio sia raggiungibile dall’esterno sulla porta 80 e che nessun altro servizio occupi quella porta. Se hai già un reverse proxy davanti, devi decidere chi termina TLS: il proxy esterno o Discourse. Fare entrambe le cose senza criterio porta a loop, redirect sbagliati e certificati duplicati.
- Se Discourse espone direttamente 80 e 443, lascia che gestisca il certificato iniziale.
- Se hai un proxy esterno, imposta Discourse dietro al proxy e configura correttamente gli header
X-Forwarded-ForeX-Forwarded-Proto. - Verifica che il redirect da HTTP a HTTPS non generi catene infinite.
Una verifica semplice è controllare gli header e il certificato presentato dal server.
curl -I https://discourse.example.com
openssl s_client -connect discourse.example.com:443 -servername discourse.example.com
Se il certificato non corrisponde al dominio o il chain non è completo, il problema non è “Discourse lento”: è un errore di terminazione TLS o di DNS. Prima di cambiare configurazioni applicative, correggi il layer di trasporto.
Avvio, bootstrap e primo accesso
Quando il container è pronto, il primo accesso al sito dovrebbe mostrare la procedura iniziale di creazione dell’account amministratore o il login, se il bootstrap è già stato completato. In questa fase è utile controllare i log e lo stato del container piuttosto che intervenire di impulso sulla configurazione.
- Verifica che il container sia in esecuzione.
cd /var/discourse
./launcher ps
- Controlla i log in tempo reale durante il bootstrap.
./launcher logs app
- Apri il sito e osserva il comportamento lato browser: redirect, pagina iniziale, eventuali errori 500 o timeout.
Se la pagina resta bianca, il problema non va interpretato subito come “frontend rotto”. Su Discourse può dipendere da asset non serviti, database non disponibile, job di inizializzazione bloccati o memoria insufficiente. Il primo indizio utile resta quasi sempre nel log applicativo.
Parametri di base da rifinire subito dopo l’installazione
Una volta online, vale la pena sistemare subito alcune impostazioni che in ambienti piccoli vengono trascurate e poi diventano problemi operativi.
- Nome sito e branding: titolo, logo, favicon e descrizione. Non è solo estetica; aiuta anche nella fiducia degli utenti e nelle email.
- Limiti di upload: se il forum prevede allegati, imposta dimensioni coerenti con il disco disponibile.
- Lingua e localizzazione: scegli la lingua principale del sito e verifica la formattazione di date e fusi orari.
- Registrazione utenti: decidi se aprire, moderare o chiudere la creazione account.
- Backup: pianifica subito una strategia, non quando il primo problema ha già colpito.
Dal pannello amministrativo di Discourse puoi gestire molte di queste voci senza toccare i file del container. È la strada migliore quando il cambiamento è funzionale e non infrastrutturale.
Backup e ripristino: la parte che ti salva il tempo
Un’installazione corretta non è completa finché non hai un backup verificato. Discourse memorizza dati applicativi, allegati e configurazioni che devono essere recuperabili in caso di errore umano, aggiornamento fallito o disco guasto.
- Definisci dove finiscono i backup: storage locale, NAS, object storage o server remoto.
- Controlla la retention: almeno più di una copia, con rotazione ragionata.
- Testa il ripristino in un ambiente separato, non solo la generazione del file di backup.
Il backup “fatto ma mai ripristinato” è un’illusione operativa. Se non hai verificato il restore, hai solo generato un archivio che speri sia leggibile. Per Discourse, il ripristino va trattato come procedura standard, non come eccezione rara.
Aggiornamenti e manutenzione ordinaria
Discourse si aggiorna spesso e gli aggiornamenti non vanno gestiti come patch secondarie qualunque. Prima di aggiornare, controlla spazio disco, stato del container, salute del database e finestra di manutenzione. Se il server è già al limite di RAM, un upgrade può degradare temporaneamente le prestazioni o fallire durante la ricostruzione delle immagini.
- Verifica spazio e salute del sistema.
df -h
free -h
docker ps
- Esegui il pull dell’aggiornamento e ricostruisci il container solo in una finestra controllata.
cd /var/discourse
./launcher rebuild app
Questo comando può richiedere tempo e CPU. Il raggio d’impatto è l’intero servizio Discourse, quindi va considerato un change controllato. Tieni a portata di mano il rollback: snapshot VM, backup precedente o possibilità di tornare all’immagine/container precedente, a seconda della tua architettura.
Errori tipici e come leggerli senza perdere tempo
Nel mondo reale i problemi più frequenti non sono “Discourse non si installa”, ma una combinazione di prerequisiti mancanti. Il trucco è mappare il sintomo al layer giusto.
- Errore 502/504: spesso reverse proxy, container non pronto o backend che non risponde.
- Pagina bianca: asset mancanti, JS non caricato, problemi di database o cache.
- Mail non inviate: SMTP errato, credenziali sbagliate, blocchi di rete in uscita.
- Certificato non valido: DNS sbagliato, porta 80 chiusa, proxy che intercetta il traffico.
- Prestazioni scarse: RAM insufficiente, disco lento, job in coda o container sottodimensionato.
Quando un’installazione sembra “quasi pronta”, di solito il problema è uno solo e si trova fuori dall’applicazione: DNS, mail, porte o risorse. La tentazione di rifare il setup da zero spesso peggiora la diagnosi. Prima osserva, poi correggi.
Schema operativo minimo consigliato
Se vuoi ridurre il rischio operativo, questa è la sequenza più razionale: prepara DNS e SMTP, aggiorna Ubuntu, installa il repository di Discourse, esegui il setup, verifica HTTPS, controlla i log, quindi crea un backup subito dopo il primo avvio stabile. È una sequenza semplice, ma evita il classico scenario in cui il forum è online e nessuno riesce a ricevere la mail di conferma o a ripristinare un errore di configurazione.
In sintesi, Discourse su Ubuntu 22.04 LTS funziona bene quando gli dai un host pulito, un dominio corretto, un SMTP affidabile e abbastanza risorse. Il resto è manutenzione ordinaria: verifiche sui log, aggiornamenti controllati e backup testati. Se costruisci bene il primo impianto, la gestione quotidiana resta prevedibile e poco rumorosa.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.