Grazie per il feedback, apprezzo davvero il tempo dedicato. Non voglio fare lo smargiasso, ma:
[2/5] Preparazione configurazione
✓ Le porte 80 e 443 sono libere per l'uso
Infatti, inizialmente dice proprio «libere per l’uso». Detto questo, ora ho la mia istanza attiva e funzionante, con l’aiuto di Gemini (principalmente per quanto riguarda l’uso di Docker, roba del genere lol). Vorrei offrire il mio «runbook» per qualsiasi altro utente Virtualmin, perché: «liberare la porta 443» non è la soluzione qui. Il resto del mio post sarà proprio questo; se dovessi pubblicarlo altrove, ad esempio in una nuova discussione, per favore indicami dove andare; credo di non essere l’unico con questa configurazione e potrebbe essere utile per altri. Grazie ancora!
Se si utilizza un VPS gestito da Webmin/Virtualmin e si impiega un sottodominio:
Il Runbook Definitivo per Virtualmin + Discourse *
-
(1) Pulizia dei residui (se si sta riprovando, come ho fatto io):
rm -rf /var/discourse/shared/standalone/ssl/*rm -rf /var/discourse/shared/standalone/letsencryptrm -rf /var/discourse/shared/standalone/state -
(2) Eliminazione dei template:
Devi eliminare completamente le righe
templates/web.ssl.template.ymletemplates/web.letsencrypt.ssl.template.ymldaapp.yml. Il parser personalizzato del launcher le valuterà anche se precedute da#. -
(3) Configurazione email e variabili:
Modifica
DISCOURSE_SKIP_EMAIL_SETUPda'1'a'0', altrimenti Discourse non potrà connettersi e verificare il DiscordID;Aggiungi
DISCOURSE_FORCE_HTTPS: truein modo che il backend generi URL sicuri.Promemoria amichevole: Assicurati che
DISCOURSE_SMTP_USER_NAMEsia impostato sul nome dell’account mailbox grezzo (ad esempio'logophilia'), non sull’indirizzo email completo (ad esempio'logophilia@logophilia.eu'), e avvolgi le credenziali tra virgolette singole (') per bypassare eventuali bug di analisi dei caratteri YAML. -
(4) Configurazione del blocco expose:
Assicurati che il blocco
expose:inapp.ymlcontenga un mapping HTTP; mappare443=>8443è opzionale/ridondante, poiché Virtualmin termina la logica SSL prima di inoltrarla:expose: - 8080:80ora puoi ricominciare a ricostruire:
cd /var/discourse ./launcher rebuild app -
(5) Configurazione del sottodominio e del percorso proxy:
- Crea il tuo sottodominio in Virtualmin come al solito e proteggilo con un certificato SSL Let’s Encrypt (viene fatto automaticamente, dico solo: assicurati che non generi errori per motivi non correlati).
- Vai su Proxy Paths (Virtualmin → il tuo sottodominio → Configurazione Web → Proxy Paths), crea un nuovo mapping
/versohttp://localhost:8080/, lascia «serve locally» deselezionato, ma attiva Proxy WebSocket su Sì per consentire aggiornamenti in tempo reale e flussi di notifiche.
-
(6) Direttive per l’header CSRF:
- In Webmin ➔ Servers ➔ Apache Webserver ➔ [trova qui la configurazione del tuo sottodominio e clicca sulla configurazione per 443] ➔ Edit Directives, inserisci le seguenti righe proprio sopra il blocco proxy di Virtualmin per Let’s Encrypt (di solito «ProxyPass /.well-known !») per facilitare l’inoltro del token CSRF:
ProxyPreserveHost On RequestHeader set X-Forwarded-Proto "https" RequestHeader set X-Forwarded-For %{REMOTE_ADDR}sProxyPreserveHost On: Dice a Discourse il nome del tuo dominio effettivo invece di «localhost».
RequestHeader set X-Forwarded-Proto "https": Dice esplicitamente a Discourse che l’utente sta utilizzando una connessione sicura, in linea con l’impostazioneDISCOURSE_FORCE_HTTPS: true.
RequestHeader set X-Forwarded-For: Passa il vero IP del visitatore al contenitore in modo che i log di sicurezza funzionino. -
(7) Handshake pulito del contenitore:
Mentre il lungo (scusa… ma è vero;-) processo di ricostruzione finisce, assicurati che eventuali blueprint di contenitori bloccati vengano rimossi con
docker rm -f appin modo che l’esecuzione di./launcher start appavvii un’istanza completamente nuova legata alla porta8080. Controlla chedocker psmostri qualcosa sotto «ports» simile a:# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d21772a21e36 local_discourse/app "/sbin/boot" 45 minutes ago Up 45 minutes 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp, 0.0.0.0:8443->443/tcp, [::]:8443->443/tcp app(Come puoi vedere, ho lasciato la direttiva 443=>8443 nel mio app.yml, funziona in entrambi i modi.)
-
(8) Monitoraggio e avvio:
Segui il flusso di avvio con
docker logs -f appfino al completamento delle migrazioni del database e all’avvio dei worker per l’elaborazione delle richieste. Fondamentalmente, una serie di righe «INFO» in rapida successione. -
(9) Finalizzazione:
Apri il tuo sottodominio in un browser, clicca su Register e lascia che il sistema invii un’email di convalida alla tua casella di posta.
*) fino a prova contraria ![]()