J’ai récemment découvert ce remarquable panneau de serveur pour gérer les services en cours d’exécution sur le serveur. Il s’appelle Coolify, je l’ai installé avec succès et je l’utilise actuellement pour gérer 2 serveurs en installant et en contrôlant n8n et d’autres scripts.
Le seul service manquant dans Coolify pour moi est Discourse. Si vous pouviez ajouter Discourse aux services de Coolify, ce serait quelque chose d’incroyable, et nous pourrions désormais dire à toute nouvelle personne dans ce monde d’installer simplement Coolify puis d’activer Discourse.
Dans leur feuille de route, j’ai déjà trouvé des demandes pour ajouter Discourse : https://feedback.coolify.io/posts/108/service-discourse Mais malheureusement, trop peu de personnes dans leur communauté connaissent Discourse.
Étant donné que Discourse n’utilise pas Docker Compose, mais son propre lanceur, je n’étais pas prêt à l’intégrer en profondeur pour qu’il soit installé via l’interface utilisateur Web. Ce que je voulais et ce que j’ai réalisé, c’est que Discourse s’exécute sur le serveur maître Coolify, en étant routé via le Traefik intégré vers le conteneur correct.
Cela n’a nécessité qu’une petite reconfiguration de Discourse. Pour ce faire, dans /var/discourse/containers/app.yml, j’ai désactivé le serveur socketé, puis j’ai utilisé des labels et des docker_args pour configurer Traefik afin qu’il trouve Discourse, gère la redirection HTTP vers HTTPS, obtienne des certificats et proxy les requêtes de FORUM-HOSTNAME.COM vers le conteneur Discourse :
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
## Décommentez la ligne suivante pour activer l'écoute IPv6
#- "templates/web.ipv6.template.yml"
- "templates/web.ratelimited.template.yml"
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
# - "templates/web.socketed.template.yml"
## quels ports TCP/IP ce conteneur doit-il exposer ?
## Si vous souhaitez que Discourse partage un port avec un autre serveur Web comme Apache ou nginx,
## consultez https://meta.discourse.org/t/17247 pour plus de détails
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
Ensuite, ./launcher rebuild app, et après qu’il ait fini de s’exécuter, j’ai pu arrêter nginx sur l’hôte et exécuter le conteneur coolify-proxy pour occuper les ports 80/443, et il s’est chargé du reste : notre communauté est opérationnelle sur l’hôte Coolify, où Coolify gère le reste du logiciel.