Usa Nginx Proxy Manager per gestire più siti con Discourse

Ecco la mia versione di questo. Ho quasi rinunciato, ma @tophee ha linkato a un post che ho scritto io (!?) e che forniva la magia necessaria! Questo è ora un modo semplice per configurare Nginx Proxy Manager per Discourse. Penso che questo lo renda simile a Run other websites on the same machine as Discourse - #396.

Installa Nginx Proxy Manager seguendo le loro istruzioni su

Rimuovi i modelli SSL e Let’s Encrypt:

Assicurati che queste righe nel tuo file yml siano commentate o eliminate:

## Uncomment these two lines if you wish to add Lets Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"

Fai in modo che Discourse utilizzi la rete npm-default.

Se segui ciecamente le istruzioni di installazione di Nginx Proxy Manager, verrà creata una rete Docker chiamata npm_default.

Aggiungi questo blocco ai tuoi file yml. Se hai container separati web_only e data, dovrai aggiungerlo a ciascuno di essi (non ho testato il container mail-receiver). docker_args non è indentato.

docker_args: |
  --network npm_default

Non è necessario esporre alcuna porta

Commenta o rimuovi queste righe dal tuo file yml:

# expose:
#  - "80:80"   # http
#  - "443:443" # https

Puoi quindi ricostruire i tuoi container e configurare Nginx Proxy Manager in questo modo:

image

Un modo semplice (ma non necessariamente consigliato) per avviare un secondo sito Discourse sarebbe questo:

cd /var/discourse/containers
cp app.yml othersite.yml
# in qualche modo modifica, come minimo, il nome host in othersite.yml
./launcher rebuild othersite

Poi aggiungilo a NPM come sopra, usando othersite invece di app.

Ho testato questo con un app.yml più due container di tipo web_only e un singolo container data più un separato container othersite-redis che è una copia del container data contenente solo i modelli redis. (Ma una soluzione più semplice sarebbe mettere il redis extra nel container web_only).

2 Mi Piace