Hinzufügen des Discourse-Dienstes in Coolify: GUI-Server & Anwendungsmanagement

Ich habe kürzlich dieses bemerkenswerte Server-Panel entdeckt, um die auf dem Server laufenden Dienste zu verwalten. Es heißt Coolify. Ich habe es erfolgreich installiert und verwende es derzeit, um 2 Server zu verwalten, indem ich n8n und andere Skripte installiere und steuere.

Der einzige Dienst, der mir in Coolify fehlt, ist Discourse. Wenn ihr Discourse zu den Coolify-Diensten hinzufügen könntet, wäre das etwas Erstaunliches, und wir könnten von nun an jedem Neuling in dieser Welt sagen, er solle einfach Coolify installieren und dann Discourse aktivieren.

In ihrer Roadmap habe ich bereits Anfragen gefunden, Discourse hinzuzufügen: https://feedback.coolify.io/posts/108/service-discourse Aber leider kennen nicht allzu viele Leute in ihrer Community Discourse.

5 „Gefällt mir“

Da Discourse nicht Docker Compose verwendet, sondern einen eigenen Launcher, war ich nicht bereit, es tief in die Web-UI-Installation zu integrieren. Was ich wollte und erreicht habe, ist, dass Discourse auf dem Coolify-Masterserver läuft und über den integrierten Traefik zum richtigen Container geleitet wird.

Der Host verwendet GitHub - discourse/discourse_docker: A Docker image for Discourse und die neueste Coolify v4.0.0-beta.360.

Dies erforderte nur eine geringfügige Neukonfiguration von Discourse. Um dies zu tun, habe ich in /var/discourse/containers/app.yml den Socket-Server deaktiviert und dann Labels und docker_args verwendet, um Traefik so einzurichten, dass es Discourse findet, die HTTP->HTTPS-Umleitung handhabt, Zertifikate abruft und Anfragen von FORUM-HOSTNAME.COM an den Discourse-Container weiterleitet:

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

Dann ./launcher rebuild app, und nachdem es fertig war, konnte ich nginx auf dem Host stoppen und den coolify-proxy-Container starten, um die Ports 80/443 zu belegen, und er erledigte den Rest: Unsere Community ist auf dem Coolify-Host am Laufen, wo Coolify die restliche Software verwaltet.

5 „Gefällt mir“