Instala Discourse en un servidor CentOS 7 aislado

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 Me gusta

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 me gusta

Nuestro Discourse interno ha estado funcionando felizmente con la misma versión durante bastante tiempo, pero finalmente nos estamos despidiendo de IE9, por lo que una actualización estaba más que debida.
Puedo confirmar que esta guía sigue siendo válida con las últimas versiones de Discourse. Incluso con RHEL8 en lugar de 7 :slight_smile:

Mientras experimentaba, encontré una forma de hacer que los plugins discourse-prometheus y discourse-calendar funcionen también sin conexión, a pesar de las dependencias adicionales. El truco consistió en extraer las gemas de Ruby del directorio de plugins del servidor de compilación, así como las que se encuentran en /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"

Y luego, en /templates/web.template.yml:

  - exec:
      cd: $home
      hook: bundle_exec
      cmd:
        # copiar caché local de Ruby
        - 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'

Por cierto, parece que el tema sobre Active Directory IIS SSO se perdió en algún momento, pero el código sigue disponible en GitHub - laktak/discourse-sso: Single Sign On for Discourse with Active Directory · GitHub y sigue funcionando con el ahora renombrado DiscourseConnect SSO.

Intenté otra actualización y parece que en algún momento se agregó una nueva sección “yarn install” a web.template.yml que falla dentro del entorno aislado.

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

Al comparar el contenido del contenedor antiguo y el nuevo, parece que hay un montón de paquetes de yarn cacheados en el nuevo en /usr/local/share/.cache/yarn/v6 pero nada en el antiguo, supongo que todos los node.js requeridos solían incluirse en la imagen base pero ahora se actualizan durante una reconstrucción.

Experimentaré copiando la caché de yarn de la misma manera que la caché de ruby y veré si puedo hacer que yarn use los paquetes cacheados de la caja de compilación.