Questa è una guida how-to per la configurazione delle variabili dâambiente in unâinstallazione Discourse self-hosted.
Livello utente richiesto: Amministratore
Le variabili dâambiente svolgono un ruolo cruciale nella configurazione della tua istanza Discourse. Possono memorizzare dati sensibili come chiavi API e password del database, rendendo la tua installazione piĂš sicura e flessibile. In Discourse, le variabili dâambiente sono impostate nel file app.yml allâinterno della configurazione del tuo container Docker.
Lâaggiunta di variabili dâambiente a un file .yml (YAML) è semplice. Ecco un esempio di base:
# Questo è un file YAML con variabili d'ambiente
env:
NOME_VARIABILE: "Valore Variabile"
ALTRA_VARIABILE: "Altro Valore"
Nel contesto di un container Docker Discourse, le variabili dâambiente sono memorizzate nella sezione env del tuo file app.yml.
Ecco un esempio di file app.yml:
## questo è il template del container Docker Discourse all-in-one, standalone
##
## Dopo aver apportato modifiche a questo file, devi ricostruire
## /var/discourse/launcher rebuild app
##
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Decommenta queste due righe se desideri aggiungere Lets Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
## quali porte TCP/IP deve esporre questo container?
## Se vuoi che Discourse condivida una porta con un altro webserver come Apache o nginx,
## vedi https://meta.discourse.org/t/17247 per i dettagli
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Imposta db_shared_buffers al massimo del 25% della memoria totale.
## verrĂ impostato automaticamente da bootstrap in base alla RAM rilevata, oppure puoi sovrascriverlo
db_shared_buffers: "256MB"
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Quante richieste web concorrenti sono supportate? Dipende dalla memoria e dai core della CPU.
## verrĂ impostato automaticamente da bootstrap in base alle CPU rilevate, oppure puoi sovrascriverlo
UNICORN_WORKERS: 3
## TODO: Il nome del dominio a cui risponderĂ questa istanza Discourse
DISCOURSE_HOSTNAME: 'discourse.example.com'
## Decommenta se vuoi che il container venga avviato con lo stesso
## hostname (-h opzione) specificato sopra (default "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Elenco di email separate da virgola che diventeranno amministratori e sviluppatori
## alla prima registrazione esempio 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'user@example.com'
## TODO: Il server di posta SMTP utilizzato per convalidare i nuovi account e inviare notifiche
DISCOURSE_SMTP_ADDRESS: smtp.example.com # (obbligatorio)
DISCOURSE_SMTP_PORT: 587 # (opzionale)
DISCOURSE_SMTP_USER_NAME: user@example.com # (opzionale)
DISCOURSE_SMTP_PASSWORD: a_s3cr3t_p@ssword # (opzionale)
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (opzionale, default true)
## Se hai aggiunto il template Lets Encrypt, decommenta sotto per ottenere un certificato SSL gratuito
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## L'indirizzo CDN per questa istanza Discourse (configurato per il pull)
#DISCOURSE_CDN_URL: //discourse-cdn.example.com
## Il container Docker è stateless; tutti i dati sono memorizzati in /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## I plugin vanno qui
## vedi https://meta.discourse.org/t/19157 per i dettagli
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## Qualsiasi comando personalizzato da eseguire dopo la build
run:
- exec: echo "Inizio comandi personalizzati"
## Se vuoi impostare l'indirizzo email 'Da' per la tua prima registrazione, decommenta e modifica:
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
## Dopo aver ricevuto la prima email di registrazione, ri-commenta la riga. Deve essere eseguita solo una volta.
- exec: echo "Fine comandi personalizzati"
Iniziamo ad aggiungere le variabili dâambiente al tuo sito! ![]()
Le seguenti istruzioni sono scritte per un Standard Discourse Installation
Accedi al tuo Server
Utilizza uno strumento come PuTTY o il terminale sui sistemi basati su Unix per connetterti via SSH al tuo server.
ssh username@your-server-ip
Naviga nella Directory Discourse
Una volta ottenuto lâaccesso al tuo server, naviga nella directory che contiene la tua configurazione Docker di Discourse, solitamente situata in /var/discourse.
cd /var/discourse
Apri il File app.yml
Dovrai aprire il file app.yml in un editor di testo. Per questo esempio utilizzeremo nano.
nano containers/app.yml
Aggiungi le tue Variabili dâAmbiente
Nel file app.yml, troverai una sezione env. Ă qui che puoi aggiungere le tue variabili dâambiente.
env:
DISCOURSE_HOSTNAME: 'discourse.example.com'
DISCOURSE_SMTP_ADDRESS: smtp.example.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: user@example.com
DISCOURSE_SMTP_PASSWORD: a_s3cr3t_p@ssword
Ad esempio, se volessi impostare la variabile dâambiente DISCOURSE_ENABLE_CORS su true per abilitare Cross-Origin Resource Sharing (CORS), aggiungeresti la seguente riga alla sezione env:
env:
DISCOURSE_ENABLE_CORS: "true"
...
Lo spazio bianco e la formattazione sono importanti qui, quindi assicurati di mantenere la corretta indentazione (due spazi) per la nuova riga.
Una volta modificate le tue variabili, salva e chiudi il file.
Ricostruisci il Container Discourse
Infine, dovrai ricostruire il tuo container Docker Discourse affinchĂŠ le modifiche abbiano effetto. Puoi farlo con il seguente comando:
./launcher rebuild app
In alternativa, per aggiornare le variabili dâambiente per un container in esecuzione senza ricostruire, puoi anche utilizzare:
./launcher destroy app
./launcher start app
Dopo il completamento del processo di ricostruzione, le tue variabili dâambiente aggiornate saranno disponibili per la tua applicazione Discourse! ![]()