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.
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.