Añadiendo servicio Discourse a Coolify: gestión de servidores GUI y aplicaciones

Recientemente descubrí este notable panel de servidor para administrar los servicios que se ejecutan en el servidor. Se llama Coolify, lo he instalado con éxito y actualmente lo estoy utilizando para administrar 2 servidores instalando y controlando n8n y otros scripts.

El único servicio que falta en Coolify para mí es Discourse. Si ustedes pudieran agregar Discourse a los servicios de Coolify, sería algo increíble, y a partir de ahora podríamos decirle a cualquier persona nueva en este mundo que simplemente instale Coolify y luego habilite Discourse.

En su hoja de ruta, ya encontré solicitudes para agregar Discourse: https://feedback.coolify.io/posts/108/service-discourse, pero lamentablemente, no mucha gente en su comunidad conoce Discourse.

5 Me gusta

Dado que Discourse no utiliza Docker Compose, sino un lanzador propio, no estaba preparado para integrarlo profundamente para que se instalara a través de la interfaz de usuario web. Lo que quería y logré es que Discourse se ejecutara en el servidor maestro de Coolify, siendo enrutado a través del Traefik incorporado al contenedor correcto.

El host está ejecutando GitHub - discourse/discourse_docker: A Docker image for Discourse y la última versión de Coolify v4.0.0-beta.360.

Esto requirió solo una pequeña reconfiguración de Discourse. Para hacerlo, en /var/discourse/containers/app.yml deshabilité el servidor con socket y luego usé etiquetas y docker_args para configurar Traefik para que encontrara Discourse, manejara la redirección de HTTP a HTTPS, obtuviera certificados y reenviara las solicitudes de FORUM-HOSTNAME.COM al contenedor de Discourse:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Descomenta la siguiente línea para habilitar el oyente IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Descomenta estas dos líneas si deseas agregar Let's Encrypt (https)
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"
#  - "templates/web.socketed.template.yml"

## ¿qué puertos TCP/IP debe exponer este contenedor?
## Si deseas que Discourse comparta un puerto con otro servidor web como Apache o nginx,
## consulta https://meta.discourse.org/t/17247 para obtener detalles
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

Luego ./launcher rebuild app, y después de que terminara de ejecutarse, pude detener nginx en el host y ejecutar el contenedor coolify-proxy para ocupar los puertos 80/443 y se encargó del resto: nuestra comunidad está en funcionamiento en el host de Coolify, donde Coolify administra el resto del software.

5 Me gusta