Adding Discourse Service into Coolify: GUI Servers & Applications Mangament

I figured recently this remarkable server panel to manage the services running on the server. It’s called Coolify, I’ve successfully installed it and currently using it to manage 2 servers with installing and controlling n8n and other scripts.

The only missed service in coolify for me is discourse, if you guys can add the discourse into coolify service it will be something amazing, and we can from now tell anyone new to this world to just install coolify then enable discourse.

In their roadmap I already found requests to add discourse: Service: Discourse · Coolify But sadly, not too much people in their community know discourse.

3 Likes

Since Discourse is not using Docker Compose, but an own launcher, I wasn’t ready to integrate it deep to be installed via Web UI. What I wanted and achieved is Discourse running on Coolify master server, being routed through the in-built Traefik to the correct container.

Host is running GitHub - discourse/discourse_docker: A Docker image for Discourse and the latest Coolify v4.0.0-beta.360.

This required only a tiny Discourse re-configuration. To do it, in /var/discourse/containers/app.yml I disabled the socketed server and then used labels and docker_args to set up Traefik to find the Discourse, handle HTTP->HTTPS redirection, get certificates and proxy requests from FORUM-HOSTNAME.COM to Discourse container:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Uncomment the next line to enable the IPv6 listener
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Uncomment these two lines if you wish to add Lets Encrypt (https)
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"
#  - "templates/web.socketed.template.yml"

## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
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

Then ./launcher rebuild app, and after it finished running I was able to stop the nginx on host and run the coolify-proxy container to occupy ports 80/443 and it handled the rest: our community is up and running on Coolify host, where Coolify manages the rest of software.