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.
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
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 ![]()
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.