Installer Discourse sur un serveur CentOS 7 isolé

Most plugins carry all the code they need and have a simple install. Those two you tried to use need to fetch gems (libraries) from the internet to able to function.

3 « J'aime »

do you know where in the code those ruby gem fetches for plugins happen? I tried looking for it but haven’t found the right place yet.

I’m thinking maybe instead of using cached gems maybe it would be more elegant to run a rubygems mirror on the isolated host, i found a tutorial here and it looks like you can configure extra system-wide gem sources

https://guides.rubygems.org/run-your-own-gem-server/

1 « J'aime »

Notre Discourse interne tourne heureusement depuis longtemps sur la même ancienne version, mais nous nous débarrassons enfin d’IE9, ce qui rend une mise à jour plus que nécessaire.
Je peux confirmer que ce guide fonctionne toujours avec les dernières versions de Discourse, même avec RHEL 8 au lieu de 7 :slight_smile:

Lors de mes expérimentations, j’ai trouvé un moyen de faire fonctionner les plugins discourse-prometheus et discourse-calendar hors ligne également, malgré les dépendances supplémentaires. L’astuce consistait à extraire les gems Ruby du répertoire des plugins du serveur de build, ainsi que celles situées dans /var/www/discourse/vendor/bundle/ruby.

docker run -it -v ~/local/rubygems.org:/local-rubygems local_discourse/app /bin/bash -c "cp -rv /var/www/discourse/vendor/bundle/ruby /local-rubygems"
docker run -it -v ~/local/rubygems.org/plugin-gems/discourse-calendar:/local-rubygems local_discourse/app /bin/bash -c "cp -rv /var/www/discourse/plugins/discourse-calendar/gems /local-rubygems"
docker run -it -v ~/local/rubygems.org/plugin-gems/discourse-prometheus:/local-rubygems local_discourse/app /bin/bash -c "cp -rv /var/www/discourse/plugins/discourse-prometheus/gems /local-rubygems"

Ensuite, dans /templates/web.template.yml :

  - exec:
      cd: $home
      hook: bundle_exec
      cmd:
        # copier le cache Ruby local
        - cp -rv /local-rubygems.org/ruby/* $home/vendor/bundle/ruby/
        - cp -rv /local-rubygems.org/plugin-gems/* $home/plugins/
        - su discourse -c 'bundle install --local --deployment --retry 3 --jobs 4 --verbose --without test development'

D’ailleurs, il semble que le sujet concernant l’authentification unique (SSO) Active Directory IIS ait été perdu à un moment donné, mais le code est toujours disponible sur GitHub - laktak/discourse-sso: Single Sign On for Discourse with Active Directory · GitHub et fonctionne toujours avec DiscourseConnect SSO, désormais renommé.

J’ai essayé une autre mise à niveau et il semble qu’à un moment donné, une nouvelle section « yarn install » ait été ajoutée à web.template.yml, ce qui pose problème dans l’environnement isolé.

- exec:
      cd: $home
      cmd:
        - "[ ! -d 'node_modules' ] || su discourse -c 'yarn install --production && yarn cache list'"

En comparant le contenu de l’ancien et du nouveau conteneur, il semble qu’il y ait un tas de paquets yarn mis en cache dans le nouveau, dans /usr/local/share/.cache/yarn/v6, mais rien dans l’ancien. Je suppose que tous les node.js requis étaient inclus dans l’image de base, mais qu’ils sont maintenant mis à jour lors d’une reconstruction ?

Je vais expérimenter en copiant le cache yarn de la même manière que le cache ruby et voir si je peux amener yarn à utiliser les paquets mis en cache depuis la boîte de build.