Migrar um fórum phpBB3 para Discourse

Depois de ter usado com sucesso o importador no meu primeiro ambiente de teste, agora queria importar novamente o fórum antigo / de forma fresca para um novo ambiente que deveria se tornar o real, mas agora falhou.

Recebo um erro:
/var/www/discourse/plugins/discourse-migratepassword/plugin.rb:71:in `crypt’: codificações de caracteres incompatíveis: ASCII-8BIT e UTF-8 (Encoding::CompatibilityError).

Aparentemente, isso ocorre no terceiro usuário, e este tem um umlaut.

Agora, o que mudei desde que funcionou?

  • nova VM com Ubuntu 18.04.3 LTS (a antiga era 16)
  • Discourse atualizado (mais recente)
  • definido “nomes de usuário unicode” com [äöüßÄÖÜẞ], já que muitos dos meus usuários têm umlauts nos nomes de usuário (a primeira importação foi sem essa configuração e os usuários foram importados perdendo os pontos dos umlauts)
  • migratepassword pré-instalado (na última vez, instalei depois).

Alguma ideia do que está falhando? Gostaria muito de migrar meus usuários sem ter que alterar os nomes de usuário.

1 curtida

Parece que está disparando um bug no plugin migratepassword. Funciona nos meus testes, então não tenho certeza do que está acontecendo aqui. Sugiro que desative o plugin durante a migração. De qualquer forma, ele não é necessário durante o processo.

6 curtidas

Obrigado — funcionou :slight_smile:

2 curtidas

Olá, estou tentando fazer uma execução de teste no meu ambiente local para ver se consigo migrar meu fórum para o Discourse.

Usei este guia de instalação para instalar o Discourse.

Tenho uma exportação de banco de dados do phpBB3 localmente.
Instalei um Discourse local no meu Mac com o Docker for Desktop.

Agora estou tentando seguir as instruções neste tópico, mas estou travado porque uso Docker, mas não o Ubuntu, e é um ambiente local. Então não sei como prosseguir :frowning:
Não há nenhum arquivo app.yml no meu diretório do Discourse.

Alguém poderia me ajudar com quais passos tomar?

Muito obrigado antecipadamente!

1 curtida

Sinto muito, não tenho experiência com Mac, Docker e sua configuração. Você pode ser capaz de seguir aproximadamente Importando usando o ambiente de desenvolvimento… mas não posso realmente oferecer suporte para isso.

1 curtida

Acho que você pode se dar melhor seguindo o “guia oficial de instalação” (mesmo no seu Mac local) e executando o instalador dessa forma.

4 curtidas

Uhuu, consegui importar com sucesso!
No final, decidi apenas pegar um droplet DO e seguir em frente. E funcionou!

Uma pergunta sobre o Sidekiq, @gerhard você diz:

O que isso faz exatamente? Preciso esperar até que termine antes de poder fazer qualquer coisa no fórum?

2 curtidas

A menos que você precise fazer um backup para restaurar em um servidor diferente, você está bem. Pode prosseguir e usá-lo, e o Sidekiq processará os itens.

4 curtidas

Olá, atualmente estou tentando importar dados de um fórum phpBB 3.1 para o Discourse. Mas a importação de enquetes não está funcionando para mim:

Se o dono do tópico (criador da enquete) foi excluído, recebo a seguinte mensagem de erro durante a importação:

Erro ao criar a postagem 70978. Ignorando. [“Você não tem permissão para criar enquetes.”]

Em relação às seguintes opções de enquete
<12
12

12
recebo a seguinte mensagem de erro:
Erro ao criar a postagem 345655. Ignorando. [“A enquete deve ter opções diferentes.”]

Então, como resolvo isso?

Obrigado antecipadamente

Atenciosamente

1 curtida

Você tem as enquetes ativadas?

1 curtida

Sim, algumas enquetes foram importadas, mas não todas.

1 curtida

Você precisará criar esse usuário ou modificar o script para, por exemplo, usar o sistema se o proprietário não existir.

1 curtida

Threads normais de usuários excluídos são importados corretamente. Como posso modificar o script de importação para que as enquetes de usuários excluídos também sejam importadas?

1 curtida

Estou tentando fazer uma migração do phpBB pela primeira vez e me pergunto se, ao transferir um backup do Discourse posteriormente, ele conterá todas as informações de metadados da importação (como o ID original da postagem do phpBB). O motivo é que estou pensando em fazer a importação em uma máquina mais potente para uma importação mais rápida e depois rodar o fórum em uma VPS, mas talvez faça outra importação incremental após mover tudo para a VPS. Gostaria de saber se basta fazer um backup e reimportar no Discourse ou se é melhor exportar o banco de dados de outra forma (qual?).

E mais uma pergunta: as reescritas de URL no importador são seguras para uma mudança de domínio posteriormente? Eu planejava usar um domínio ou subdomínio diferente para a migração inicial e depois mudar para o domínio real.

3 curtidas

Sim, o backup contém o ID da postagem original em um campo personalizado. Executar a importação final na nuvem deve ser seguro.

Alterar o nome do host requer um pouco de trabalho. Change the domain name or rename your Discourse

4 curtidas

Acabei de concluir a primeira migração de teste e, antes de mais nada, quero agradecer ao @gerhard e a todos os demais que contribuíram para isso. É incrível o quanto isso funcionou bem na primeira tentativa. Levei cerca de 24 horas para importar pouco menos de 900 mil posts, incluindo usuários, mensagens privadas e afins, e os resultados estão muito bons para um primeiro teste. É simplesmente fantástico ter um importador tão eficiente para realizar esse trabalho.

No entanto, há alguns pontos a considerar. O mais importante, que estou tentando investigar agora, é que alguns links internos parecem ter sido alterados completamente de forma errada, enquanto outros funcionaram muito bem. Para ser mais preciso, a grande maioria parece estar correta, e apenas uma minoria está incorreta. Estou tentando identificar um padrão para saber quais não funcionaram. Alguém pode dar alguma dica sobre como funciona a alteração desses links internos? Existem provavelmente algumas armadilhas onde isso pode falhar?

Observação lateral: Logo após a importação, vi que todas as avatares estavam ausentes nas citações, mas depois descobri que elas são geradas automaticamente, e parece que, após 20 minutos, tudo já estava lá. Fascinante :wink:

Quanto ao tempo de importação: Isso foi feito em um VPS Hetzner de 4 núcleos com núcleos de CPU exclusivos. Acho que vou tentar novamente em um servidor bare metal apenas para a importação, a fim de melhorar o tempo de migração. Preciso primeiro ver como funciona a movimentação do backup do Discourse.

5 curtidas

O código para substituir links internos está aqui: discourse/script/import_scripts/phpbb3/support/text_processor.rb at 43ddf60cdf27a865b7b1aa0d54a144a3e46c74cf · discourse/discourse · GitHub

A reescrita de links internos falhará quando um post contiver um link para outro post que ainda não foi importado. Os posts são importados na ordem de sua criação original.

6 curtidas

Essa é uma dica interessante. Não consigo ver por que isso teria acontecido em alguns dos casos que verifiquei, mas com certeza vou seguir por esse caminho. O estranho é que, no meu caso, ele vincula as postagens erradas. Em caso de falha, eu esperaria que ele não fizesse nada ou deixasse o link intacto. Infelizmente, meu conhecimento em Ruby é quase zero, mas vou dar uma olhada no código mesmo assim.

Existe alguma maneira de contornar esse problema? Acredito que isso possa acontecer com frequência em postagens no estilo de tutorial que são editadas e atualizadas repetidamente, com links sendo adicionados. Há alguma chance de resolver isso sem precisar alterar essas postagens manualmente?

Obrigado pela ajuda! :+1:

1 curtida

Hmm, acabei de perceber que os grupos de usuários não foram importados e também notei que eles não estão listados na postagem inicial aqui, embora sejam, de fato, uma das primeiras coisas listadas no importador. Me pergunto se há uma maneira de importá-los, incluindo a associação de usuários a esses grupos, ou se isso simplesmente ainda não está funcionando? No segundo caso, provavelmente precisaremos encontrar uma solução alternativa.

1 curtida

Sim, isso é estranho. Isso sugere que alguns dos seus links locais estão em um formato diferente do que o script de importação espera, fazendo com que a expressão regular procure o post errado. Se alguém editou um post posteriormente para apontar para um post que não existia quando o post original foi escrito (você confirmou que esse é o caso?), então eles podem ter usado algum outro método para criar o link, o que confundiu o script.

É surpreendente o grau em que cada importação (especialmente de fóruns maduros) é única. É bastante raro que uma importação seja apenas uma questão de executar o script (mas, suponho, as pessoas têm mais chances de me contratar se a importação deles tiver complicações).

1 curtida