Instale Discourse em um servidor CentOS 7 isolado

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 curtidas

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 curtida

Nosso Discourse interno vem rodando felizmente na mesma versão antiga há bastante tempo, mas finalmente estamos nos livrando do IE9, então uma atualização estava mais do que atrasada.
Posso informar que este guia ainda funciona bem com as versões mais recentes do Discourse. Mesmo com RHEL8 em vez do 7 :slight_smile:

Durante os testes, descobri uma maneira de fazer os plugins discourse-prometheus e discourse-calendar funcionarem offline também, mesmo com as dependências extras. O truque foi extrair as gems do Ruby do diretório de plugins do servidor de build, bem como as que estão em /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"

e, em seguida, em /templates/web.template.yml:

  - exec:
      cd: $home
      hook: bundle_exec
      cmd:
        # copiar cache local do 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'

Aliás, parece que o tópico sobre SSO do Active Directory via IIS se perdeu em algum momento, mas o código ainda está disponível em GitHub - laktak/discourse-sso: Single Sign On for Discourse with Active Directory · GitHub e continua funcionando com o agora renomeado DiscourseConnect SSO.

Tentei outra atualização e parece que em algum momento uma nova seção “yarn install” foi adicionada ao web.template.yml, o que quebra dentro do ambiente isolado.

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

Ao comparar os conteúdos do contêiner antigo e do novo, parece que há um monte de pacotes yarn em cache em /usr/local/share/.cache/yarn/v6 no novo, mas nada no antigo. Imagino que todos os node.js necessários costumavam ser incluídos na imagem base, mas agora eles são atualizados durante uma reconstrução?

Vou experimentar copiar o cache do yarn da mesma forma que o cache do ruby e ver se consigo fazer o yarn usar os pacotes em cache da caixa de compilação.