Migrate a XenForo forum to Discourse

Just finished up a Xenforo → Discourse migration of a million post board on a Digital Ocean droplet. Here’s what worked for me command by command (very similar to what also just did on a different vbulletin board).

Recommend minimum 4 vCPU/8GB for import.

Thanks to everyone in this thread for helping me get through these migrations, definingly been a fun few days reading and rereading…

1 - Install Digital Ocean Discourse 1-click droplet

2 - Finish discourse install through SSH by following prompts

Open SSH console
root
(yourrootpassword)
(enter)
(yourdomain).com
etc

3 - Login to SFTP

sftp root@XXX.XXX.XX.XX
y (if asked for confirmation)
yes
(yourrootpassword)
put db.sql /var/discourse/shared/standalone/db.sql

4 - Login to Website to setup Admin account

5 - Login to SSH - Begin Process

ssh root@XXX.XXX.XX.XX
cd /var/discourse
./launcher start app
docker exec -it app bash
sudo apt-get update
sudo apt-get upgrade
y

6 - Install MariaDB (replacement for mysql)

apt-get update && apt-get install mariadb-server-10.3 libmariadbd-dev
y

7 - Mysql Database Setup

service mysql start
mysql -u root -p
password
create database import_db;
exit;

8 - Import Dump -> Mysql Database Transfer**

mysql -u root -p import_db < /shared/db.sql
password

9 - GEM File

echo "gem 'mysql2'" >>Gemfile
echo "gem 'mysql2', require: false" >> /var/www/discourse/Gemfile
echo "gem 'php_serialize', require: false" >> /var/www/discourse/Gemfile
cd /var/www/discourse
su discourse -c 'bundle install --no-deployment --without test --without development --path vendor/bundle'
(ignore red text result)

10 - Configure install script

vi /var/www/discourse/script/import_scripts/xenforo.rb

---Make edits to text file as needed for db name/password, prefix, etc---

(esc)
:wq

11 - Bundle Config

bundle config set path 'vendor/bundle'
bundle config set without 'development:test'
bundle config unset deployment
su discourse -c 'bundle install'

12 - Mysql config (may be possible to do this with previous)

mysql --version
sudo mysql -u root -p
password
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
exit

13 - Install Script

su discourse -c 'bundle exec ruby script/import_scripts/xenforo.rb'
4 Likes