Migrar um fórum phpBB3 para Discourse

Eu os coloquei sem diferença.

Não tenho certeza se esses são erros de terem sido colados ou se é assim que eles realmente estão no seu arquivo yml, mas isso causaria problemas. (Quebras de linha no final de alguns comentários, causando a existência de uma segunda linha, não comentada)

Seus itens de lista não estão indentados corretamente.

O acima deveria ser

  new_categories: 
    - forum_id: general
      name: General

Recomendo usar https://www.yamllint.com/ para validar seu arquivo de configuração.

3 curtidas

Obrigado por todas as suas respostas. Percebi rapidamente que editar o settings.yml fora do container de importação não afetava o que estava em execução. Também descobri sobre o espaço em branco do yml e corrigi meu arquivo de configurações. De qualquer forma, a importação do fórum phpBB correu bem, exceto por…

Meu nome de usuário no phpBB era o mesmo que minha conta de administrador no Discourse. Não consigo fazer login e há uma mensagem que diz:

Todo o e-mail de saída foi desabilitado globalmente por um administrador. Nenhuma notificação por e-mail de qualquer tipo será enviada.

Como resultado, não consigo receber um e-mail de redefinição de senha. Isso é uma configuração de banco de dados? E se for, posso atualizar esse campo usando os recursos limitados do container? Alguma outra ideia?

Note que tenho o plugin migratepassword instalado, mas isso não parece funcionar (talvez porque minha senha tinha menos de 15 caracteres).

Você pode habilitar e-mails para usuários administradores do console do rails:

./launcher enter import
rails c

> SiteSetting.disable_emails = "non-staff"

Você também pode redefinir sua senha diretamente do contêiner, sem precisar usar e-mails, executando:

./launcher enter import
rake admin:create
3 curtidas

Posso sugerir algumas alterações nesta documentação (e código):

  • Isso não é mais necessário, pois a configuração disable_edit_notifications não existe mais. disable system edit notifications faz o trabalho mencionado e está ativado por padrão.
  • As duas linhas SSL não estão mais comentadas por padrão em app.yml, então remover esses dois # tornará o trecho mais preciso em relação a como ele deveria parecer.
  • Este template deve ser atualizado para que os usuários não experimentem este erro ao importar.

  • Também isto (a menos que eu tenha cometido um erro em algum lugar, também é algo que deveria ser corrigido):
    Executar IMPORT=1 bundle install retornou:

[!] Houve um erro ao analisar `Gemfile`: Você não pode especificar o mesmo gem duas vezes com requisitos de versão diferentes.
Você especificou: sqlite3 (~> 1.3, >= 1.3.13) e sqlite3 (>= 0). O Bundler não pode continuar.

  # do /home/root/discourse/Gemfile:249
  # -------------------------------------------
  # group :generic_import, optional: true do
    gem "sqlite3"
  #   gem "redcarpet"
  # -------------------------------------------

De fato, o sqlite3 já está especificado algumas linhas acima:

  # NOTA: no modo de importação, a versão do sqlite pode importar muito, então a fixamos em uma específica
  gem "sqlite3", "~> 1.3", ">= 1.3.13"
  gem "ruby-bbcode-to-md", git: "https://github.com/nlalonde/ruby-bbcode-to-md"
  gem "reverse_markdown"
  gem "tiny_tds"
  gem "csv"
end

group :generic_import, optional: true do
  gem "sqlite3"
  gem "redcarpet"
end

Usei uma instalação de desenvolvimento para minha importação, se isso importar.

5 curtidas

Essa informação deveria ser mencionada nas instruções ou o template deveria ser atualizado. Isso me levou algumas horas..

O que precisa dizer?

Excluir esta linha tornou a construção bem-sucedida do contêiner possível.

1 curtida

Então você removeu esta linha?

1 curtida

Sim, essa foi a solução.

1 curtida
4 curtidas

“Olá, migrei com sucesso meu fórum phpBB para o Discourse, tudo correu bem e o fórum está funcionando perfeitamente. Agora percebi que não ativei o modo binário durante o download FTP dos dados do phpBB, o que significa que todas as imagens estão corrompidas. Executei o script novamente, mas as imagens não estão sendo substituídas. Qual script, de preferência com o caminho, preciso modificar para que as imagens e anexos corrompidos sejam substituídos?”

Na sua segunda tentativa, o Discourse está pulando os uploads porque eles já existem na tabela uploads. O Discourse evita sobrescrever uploads existentes, a menos que seja explicitamente instruído.\n\nVocê pode tentar adicionar o trecho de código abaixo em attachment_importer.rb (discourse/script/import_scripts/phpbb3/importers/attachment_importer.rb at main · discourse/discourse · GitHub) antes de chamar @uploader.create_upload garantirá que qualquer upload existente com o mesmo nome de arquivo seja excluído primeiro, forçando o Discourse a fazer o upload novamente.\n\n\nexisting_upload = Upload.find_by(original_filename: filename)\nif existing_upload\n existing_upload.destroy\n puts \"Deleted existing upload: #{filename}\"\nend\n\nupload = @uploader.create_upload(user_id, path, filename)\n

4 curtidas

“Obrigado pela sua resposta. Infelizmente, a alteração não surtiu efeito. O script é executado em apenas um minuto, mas os anexos não estão sendo substituídos…”

1 curtida

Você provavelmente precisará limpar o banco de dados e executá-lo novamente.

1 curtida

Como faço isso?

Passo 1: Conecte-se ao servidor via SSH:

ssh username@server-address

Passo 2: Acesse o contêiner da aplicação:

./launcher enter import

Dica: Execute docker ps para encontrar o nome do contêiner. Por padrão, ele geralmente é chamado de app.

Passo 3: Reinicie o banco de dados:

RAILS_ENV=production rake db:reset
3 curtidas

Olá Canapin,

Atualizei esta parte no guia.

Depende. Ainda está comentado ao configurar o contêiner para localhost. O guia assume que um contêiner separado é usado para importações, que não é acessível pela internet, portanto, obter certificados não é necessário neste caso.

Um PR para isso foi mesclado ao core.

Estamos trabalhando em uma correção para isso, mas atualizei o guia e adicionei um FAQ sobre como resolver este problema.

4 curtidas

Quando o Discourse é executado em um subdiretório, como domain.org/forum, os permalinks não se aplicam, pois eles são como viewtopic.php?p=XXXX, mas deveriam ser forum/viewtopic.php?p=XXXX para funcionar.

Já se passaram anos, mas me deparei com os permalinks nunca funcionais ainda configurados em nosso caso. Existe uma maneira GUI/CLI de prefixar todos os permalinks com um elemento de caminho de URL, ou alguém pode adicionar uma consulta PostgreSQL para fazer isso? Pode ajudar também outros, se esta informação for adicionada ao primeiro post.