Instala Discourse en un servidor CentOS 7 aislado

La mayoría de los plugins incluyen todo el código que necesitan y tienen una instalación sencilla. Esos dos que intentaste usar necesitan descargar gemas (bibliotecas) de internet para poder funcionar.

3 Me gusta

¿Sabes dónde en el código se realizan las búsquedas de gems de Ruby para los plugins? Intenté buscarlo, pero aún no he encontrado el lugar correcto.

Estoy pensando que, en lugar de usar gems en caché, podría ser más elegante ejecutar un espejo de RubyGems en el host aislado. Encontré un tutorial aquí y parece que puedes configurar fuentes de gems adicionales a nivel de sistema.

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.