Migrar um fórum Phorum para Discourse

Obrigado pelos scripts!

No entanto, acho que o manual está bastante cru e pouco claro. Tive que consultar, por exemplo, o guia de migração do XenForo para realmente entender o que vocês sugerem aqui. Deixe-me adicionar algumas etapas que faltam:

  • Ter o Discourse instalado e funcionando
  • Criar o mysqldump do Phorum original - tudo claro, tudo bem.
  • Copiar o dump do banco de dados para a pasta do Discourse docker cp /path/to/backup/phorum_db.sql.gz app:/shared/phorum_db.sql.gz (assumindo app como nome padrão do contêiner)
    E aqui as partes que faltam:
  • Entrar no contêiner Docker do Discourse e instalar o MySQL lá:
docker exec -it app bash
apt-get update && apt-get upgrade
# pv apenas para conveniência para exibir o progresso, lsb-release é necessário por algo
apt-get install -y lsb-release pv mariadb-server mariadb-client libmariadb-dev
service mariadb start

Note que a instalação do MySQL é um pouco mais complicada, mas o Mariadb deve funcionar bem.

Em seguida, crie um banco de dados: mysqlCREATE database phorum.

Em seguida, preencha-o a partir do backup: pv phorum_db.sql.gz | gunzip | mysql phorum (não é necessário gunzip se o seu dump for sql puro).

Adicione suporte MySql ao Ruby:

cd /var/www/discourse/
echo "gem 'mysql2'" >>Gemfile
bundle config unset deployment
bundle install --no-deployment

Modifique os dados no script de migração (credenciais do banco de dados, prefixo, permalinks):

nano /var/www/discourse/script/import_scripts/phorum.rb

E então de volta ao guia do post original, tudo bem lá:

Execute o importador com uma instância limpa do Discourse:

git config --global --add safe.directory /var/www/discourse
bundle exec ruby script/import_scripts/phorum.rb

Se o seu banco de dados Discourse não estiver realmente limpo, é melhor limpá-lo com bundle exec rake db:drop db:create db:migrate antes.

Se falhar com “PG::ConnectionBad: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "discourse" (PG::ConnectionBad)”:

  1. Se você receber o erro 'Peer authentication failed for user "discourse"':
  2. Edite o arquivo /etc/postgresql/13/main/pg_hba.conf
  3. Mude todos os ‘peer’ para ‘trust’ e salve o arquivo
  4. Recarregue o servidor postgres: /etc/init.d/postgresql reload (ou talvez psql -U postgres -c "SELECT pg_reload_conf();", mas isso falhava para mim às vezes)

Primeiro, ele executa as migrações de usuários, que podem ser relativamente lentas (~1.2k usuários/minuto de acordo com a saída do script. Eu tinha 100k usuários, então…). Em seguida, ele cria categorias e começa a migrar mensagens e tópicos (mesma velocidade, ~1.2k/minuto), mas a essa altura você já pode acessar o site e ver como está.

Parece bem mais suave do que eu esperaria para um motor tão antigo quanto o Phorum. Parece que não há migração de Mensagens Privadas (PM), mas isso não deve ser um bloqueador para mim, pelo menos.

Obrigado novamente pelo script e pelos esforços!