Aggiunta del servizio Discourse in Coolify: gestione GUI di server e applicazioni

Recentemente ho scoperto questo straordinario pannello server per gestire i servizi in esecuzione sul server. Si chiama Coolify, l’ho installato con successo e lo sto attualmente utilizzando per gestire 2 server installando e controllando n8n e altri script.

L’unico servizio mancante in coolify per me è discourse, se poteste aggiungere discourse al servizio coolify sarebbe qualcosa di straordinario, e potremmo d’ora in poi dire a chiunque sia nuovo in questo mondo di installare semplicemente coolify e poi abilitare discourse.

Nella loro roadmap ho già trovato richieste per aggiungere discourse: https://feedback.coolify.io/posts/108/service-discourse Ma purtroppo, non troppe persone nella loro community conoscono discourse.

5 Mi Piace

Poiché Discourse non utilizza Docker Compose, ma un proprio launcher, non ero pronto a integrarlo in profondità per essere installato tramite l’interfaccia utente web. Quello che volevo e ho ottenuto è Discourse in esecuzione sul server master di Coolify, instradato attraverso il Traefik integrato al container corretto.

L’host esegue GitHub - discourse/discourse_docker: A Docker image for Discourse e l’ultima versione di Coolify v4.0.0-beta.360.

Ciò ha richiesto solo una piccola riconfigurazione di Discourse. Per farlo, in /var/discourse/containers/app.yml ho disabilitato il server socketed e poi ho usato etichette e docker_args per configurare Traefik in modo che trovasse Discourse, gestisse il reindirizzamento HTTP->HTTPS, ottenesse certificati e inoltrasse le richieste da FORUM-HOSTNAME.COM al container Discourse:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Commenta la riga seguente per abilitare l'ascoltatore IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Commenta queste due righe se desideri aggiungere Lets Encrypt (https)
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"
#  - "templates/web.socketed.template.yml"

## quali porte TCP/IP dovrebbe esporre questo container?
## Se vuoi che Discourse condivida una porta con un altro webserver come Apache o nginx,
## vedi https://meta.discourse.org/t/17247 per i dettagli
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

Quindi ./launcher rebuild app, e dopo che ha finito di essere eseguito ho potuto fermare nginx sull’host ed eseguire il container coolify-proxy per occupare le porte 80/443 e ha gestito il resto: la nostra community è attiva sull’host Coolify, dove Coolify gestisce il resto del software.

5 Mi Piace