Adicionando o Serviço Discourse no Coolify: Gerenciamento de Servidores GUI  Aplicações

Recentemente descobri este notável painel de servidor para gerenciar os serviços em execução no servidor. Chama-se Coolify, instalei-o com sucesso e atualmente o utilizo para gerenciar 2 servidores com a instalação e controle do n8n e outros scripts.

O único serviço que falta no Coolify para mim é o Discourse. Se vocês puderem adicionar o Discourse ao serviço Coolify, será algo incrível, e poderemos, a partir de agora, dizer a qualquer novato neste mundo para apenas instalar o Coolify e depois habilitar o Discourse.

No roadmap deles, já encontrei solicitações para adicionar o Discourse: https://feedback.coolify.io/posts/108/service-discourse Mas, infelizmente, não muitas pessoas na comunidade deles conhecem o Discourse.

5 curtidas

Como o Discourse não usa Docker Compose, mas sim um lançador próprio, eu não estava pronto para integrá-lo profundamente para ser instalado via Interface do Usuário Web. O que eu queria e consegui foi o Discourse rodando no servidor mestre do Coolify, sendo roteado através do Traefik embutido para o contêiner correto.

O host está executando o https://github.com/discourse/discourse_docker e o Coolify v4.0.0-beta.360 mais recente.

Isso exigiu apenas uma pequena reconfiguração do Discourse. Para fazer isso, em /var/discourse/containers/app.yml, desabilitei o servidor com socket e então usei rótulos e docker_args para configurar o Traefik para encontrar o Discourse, lidar com o redirecionamento HTTP->HTTPS, obter certificados e encaminhar requisições de FORUM-HOSTNAME.COM para o contêiner do Discourse:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Descomente a linha a seguir para habilitar o listener IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Descomente estas duas linhas se desejar adicionar o Let's Encrypt (https)
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"
#  - "templates/web.socketed.template.yml"

## quais portas TCP/IP este contêiner deve expor?
## Se você quiser que o Discourse compartilhe uma porta com outro servidor web como Apache ou nginx,
## veja https://meta.discourse.org/t/17247 para detalhes
expose:
#  - "80:80"   # http
#  - "443:443" # https

docker_args:
  - "--network=coolify"

labels:
  app_name: discourse
  traefik.enable: true

  traefik.http.middlewares.discourse_redirect2https.redirectscheme.scheme: https
  traefik.http.middlewares.gzip.compress: true

  traefik.http.routers.discourse.rule: Host(`FORUM-HOSTNAME.COM`)
  traefik.http.routers.discourse.entrypoints: http
  traefik.http.routers.discourse.middlewares: discourse_redirect2https

  traefik.http.routers.discourse_secure.rule: Host(`FORUM-HOSTNAME.COM`)
  traefik.http.routers.discourse_secure.entrypoints: https
  traefik.http.routers.discourse_secure.tls: true
  traefik.http.routers.discourse_secure.tls.certresolver: letsencrypt
  traefik.http.routers.discourse_secure.middlewares: gzip
  traefik.http.services.discourse_secure.loadbalancer.server.port: 80

Em seguida, ./launcher rebuild app, e depois que ele terminou de rodar, pude parar o nginx no host e executar o contêiner coolify-proxy para ocupar as portas 80/443 e ele cuidou do resto: nossa comunidade está ativa no host do Coolify, onde o Coolify gerencia o restante do software.

5 curtidas