Migrate a phpBB3 forum to Discourse

Hi, I have another idea.

I guess that import_id is equal to the phpbb post id?
Since I merged topics from category A and B in category C,

I could:

  1. Store all the phpbb topics id from topics that belong to my categories A and B in a json file, then
  2. Iterate the json, get the corresponding discourse topic on each iteration
  3. Update the discourse topic by changing their category from C to A or B (maybe via /topics/bulk) in each iteration

Would that do the trick on the paper?

edit : I post here since my message mentions a custom_field relative to the phpbb import, I hope Iā€™m not too much off topic!

1 Like

That part is definitely correct!

Something like your idea could definitely work if you have a mapping of the PHPbb post ID with the category you want.

Yeah, this is pretty far afield from anything to do with phpBB. :slight_smile:
@codinghorror will probably want to split this off into its own topic.

2 Likes

Thank you, Iā€™m going to work on this one.
And sorry about the off topic!

Edit : my script worked well, so hereā€™s how I did, in case it would interest some people whoā€™d like to ā€œunmergeā€ a category after reorganizing their phpbb topics into Discourse:

  1. Installed Data Explorer Plugin
  2. Get the Discourse imported posts from the category of your choice with this query and download the result as a json:
SELECT
topics.id as d_topic_id,
slug,
value as phpbb_topic_id
FROM topics
JOIN topic_custom_fields
ON topic_id = topics.id
AND name = 'import_topic_id'
AND category_id = 5

3.Get the phpbb topic list from the category(ies) of your choice from phpmyadmin and export the result as a json:

SELECT topic_id FROM phpbb_topics
JOIN phpbb_forums
ON phpbb_topics.forum_id = phpbb_forums.forum_id
AND phpbb_forums.forum_id = 20

Then you can loop iterate one of your json, and on each iteration if phpbb_topic_id is also present in the second array, then you can move it to a new category of your choice.
To do so I used https://github.com/communiteq/discourse-api-php and added a method to update the category of a topic.

2 Likes

Any update on phpbb 3.2 support? There are thousands of phpbb forums out there and weā€™d love to move to Discourse if we can save the community. We have 2000 users and tired of looking like it is 2002. PHPBB is a huge pile of old outdated forum principles, extensions that are obsolete and not supported, sprinkle it with a lot of pain in the UI, etc. Everytime we go into the admin control panel, God kills a cat. And the only thing that is stopping us from moving over to something better is exporting all the existing content.

Iā€™d love to work on it but I have no experience in Ruby and database.

2 Likes

If you can at least partially sponsor the work we can take it on.

2 Likes

Have you got a budget? If not, is your community interested in chief sourcing?

1 Like

Hi, quick question.

After Iā€™ve imported my phpbb topics, the messages containing a youtube link donā€™t embed the video.
It appears that they uses the following syntax:
[youtube.com/watch?v=HT7fbRvx4Sk](http://www.youtube.com/watch?v=HT7fbRvx4Sk)

How can I batch convert all these links to embed videos? The links which are not on a single line shouldnā€™t be embedded also, obviously.

1 Like

Hi,

also wanting to convert from phpbb3.2 to discourse

had a look at my DB, post_text still has HTML format (with t, br, i ā€¦ tags - no idea what t is ?). Also re-ran reparser:reparse multiple time, but nothing changed in the DB. Does somebody have an example of the xml format ?

also could the few devs here give an order of magnitude for the costs for developing a phpbb3.2 converter ? 1k? 5k ? Maybe we could try to get the money together through some kind of kickstarter ?

finally : should we continue (technical) discussion here or start a new thread ?

2 Likes

If you check out Discourse Migration ā€“ Literate Computing, LLC you can get some idea what a migration would cost.

Since Gerhard is apparently part-way through his work, it rather complicates giving you a good price since there are many unknowns (I dontā€™ know about your data or the code the Gerhard hasnā€™t produced).

If you contact me directly with answers the questions on my above link I could start to give you a ballpark figure if I knew more about your situation. Knowing what I know now, would say that somewhere between $1000 and $5K is probably right. :wink:

1 Like

@gerhard is there anything we can do to help? I have a 3.2 community thatā€™s just aching to be moved to Discourse. Iā€™d love to contribute if I can in any way.

Thanks.

2 Likes

Did the phpbb 3.2 importer ever get released ?

2 Likes

ho, I got this error at this step

/var/discourse/launcher enter import
import_phpbb3.sh # inside the Docker container

/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:inconnectā€™: Access denied for user ā€˜phpbbā€™@ā€˜localhostā€™ (using password: YES) ( Mysql2::Error::ConnectionError )`

my mysql server is running and accessible from the outside (I can connect from my desktop computer)
any idea ?

1 Like

localhost inside the Docker container is different from localhost on your desktop. You should configure the database host inside settings.yml accordingly if you want to use a remote database. Either use the MySQL serverā€™s IP address or itā€™s hostname if it can be resolved via DNS.

3 Likes

The error is access denied. Have you set the username and password to whatā€™s in the config?

1 Like

thanks
changing localhost to the server ip in import/settings.yml worked

also for some reason I couldnā€™t make the import work on test-passed discourse (I had to settle to stable discourse)

2 Likes

Hi There! I know this is an old reply, but I am having the exact same error.

Any idea how you fixed it ? Thanks

Edit: It seems that something goes wrong at the step:

1 Like

using passwords: true

any idea why the hash imported is not the same as the one in phpbb3 ?

phpBB3 :
$2y$10$Ajp2T5vo.Eh0CG3xW8.gā€¦VzCKSIhtguYO2crP1kH/pDgsYeLtLa.

on discourse : user.custom_fields[ā€˜import_passā€™]
$CP$$H$95erUzAMWdt/myFvDN8Rqn12TnIGfU1

I canā€™t login unless I put the phpbb3 one manually

Sorry, I donā€™t really remember how I fixed it. I know I struggled a little and then it worked, but I made changes until it worked.

2 Likes

No prob, thanks for your answer anyways :+1:

1 Like

UPDATE: It worked

I went through the same process and it worked this time :smiley:

The only thing I did differently is not to install cloudflare template.

And scp path/to/phpbb_mysql.sql root@[IP Address of your droplet]:/var/discourse/shared/standalone/import/data works fine!


Hi there,

Sorry me again but Iā€™m really struggling to import phpBB. I am following the guide above, but somehow it breaks my installation of Discourse.

I not able to import the database, and I am getting the errors below:

When I try to run the importer

Loading database dump into MySQL...

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")

When I try to Rebuild

FAILED

--------------------

Pups::ExecError: socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1 failed with return #<Process::Status: pid 45 exit 1>

Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec failed with the params "socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1"

69b09f1906a3aaf8bcd31201b13ae4dba64568ab8c38a0261d0b4390279848ea

** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one

Fortunately itā€™s a fresh install of Discourse :rofl:


My server is: Ubuntu 16, Last Version of Discourse, failtoban installed
And I am trying to import phpBB version 3.1.6

Cloudflare template installed too ( not sure if this affect the whole process )


So I guess something goes wrong at step 1.2 :thinking:

Just to make sure:

1 - I create the import.yml like that:

cd /var/discourse
cp containers/app.yml containers/import.yml

Then add the template - ā€œtemplates/import/phpbb3.template.ymlā€ to it.

nano containers/import.yml

Then run :

/var/discourse/launcher stop app
/var/discourse/launcher rebuild import

Thatā€™s it ? Am I missing something ?
Should I remove the cloudflare template fro that file ?

Step 1.3

There is where I completely lost.

Question aside, can I run this command from localhost in order to upload the sql dump ?

scp path/to/phpbb_mysql.sql root@[IP Address of your droplet]:/var/discourse/shared/standalone/import/data

But it doesnā€™t seem to be working.

Letā€™s say I want to use the remote connection instead, and edit settings.yml

database:
type: MySQL # currently only MySQL is supported
host: localhost ( to be changed with the ip ? )
port: 3306
username: root ( should I use the ssh login or database username ? )
password: ( same here, it is for the ssh access ) ?
schema: phpbb ( is this the database name ? )
table_prefix: phpbb_ # Change this, if your forum is using a different prefix. Usually all table names start with phpbb_
batch_size: 1000 # Donā€™t change this unless you know what youā€™re doing. The default (1000) should work just fine.

And after editing settings.yml, I only have to run ?

/var/discourse/launcher enter import
import_phpbb3.sh # inside the Docker container

Really sorry about all this questions, and thanks if you have the courage to read all this

1 Like