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