Use Nginx Proxy Manager para gerenciar múltiplos sites com Discourse

Aqui está a minha versão disso. Quase desisti, mas @tophee linkou para uma postagem que eu (!?) escrevi e que forneceu a mágica necessária! Agora, esta é uma maneira direta de configurar o Nginx Proxy Manager para o Discourse. Acho que isso torna o processo semelhante ao descrito em Run other websites on the same machine as Discourse - #396.

Instale o Nginx Proxy Manager seguindo as instruções deles em

Remova os modelos de SSL e Let’s Encrypt:

Verifique se essas linhas no seu arquivo yml estão comentadas ou excluídas:

## Descomente estas duas linhas se desejar adicionar o Lets Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"

Faça o Discourse usar a rede npm-default.

Se você seguir cegamente as instruções de instalação do Nginx Proxy Manager, ele criará uma rede Docker chamada npm_default.

Adicione este bloco aos seus arquivo(s) yml. Se você tiver contêineres web_only e data separados, precisará adicionar isso a cada um deles (eu não testei o contêiner mail-receiver). O docker_args não deve ser recuado.

docker_args: |
  --network npm_default

Não há necessidade de expor nenhuma porta

Comente ou remova estas linhas do seu arquivo yml:

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

Em seguida, você pode reconstruir seus contêineres e configurar o Nginx Proxy Manager assim:

image

Uma maneira simples (mas não necessariamente recomendada) de iniciar um segundo site do Discourse seria esta:

cd /var/discourse/containers
cp app.yml othersite.yml
# de alguma forma edite, no mínimo, o nome do host em othersite.yml
./launcher rebuild othersite

Em seguida, adicione-o ao NPM como descrito acima, usando othersite no lugar de app.

Testei isso com um app.yml mais dois contêineres do tipo web_only e um único contêiner data, além de um contêiner othersite-redis separado que é uma cópia do contêiner data contendo apenas os modelos do Redis. (Mas uma solução mais fácil seria colocar o Redis extra no contêiner web_only).

2 curtidas