# Migrate a XenForo forum to Discourse

**URL:** <https://meta.discourse.org/t/migrate-a-xenforo-forum-to-discourse/45232>\
**Category:** Sysadmins\
**Tags:** how-to\
**Created:** [2016 年 6 月 4 日午前 1:38 UTC](https://meta.discourse.org/t/migrate-a-xenforo-forum-to-discourse/45232 "2016-06-04T01:38:22Z")\
**Posts on this page:** 1\
**Showing post:** 86

<div class="post-metadata">

**Author:** ![moshbit](https://avatars.discourse-cdn.com/v4/letter/m/ac8455/32.png) [@moshbit](https://meta.discourse.org/u/moshbit)\
**Post date:** [2022 年 4 月 27 日午前 1:13 UTC](https://meta.discourse.org/t/migrate-a-xenforo-forum-to-discourse/45232/86 "2022-04-27T01:13:48Z")

</div>

既存のXenForoコミュニティをなんとかDiscourseに移行できたので、同じことを試みている人のために経験を共有したいと思います。私は何もわかっていないので、私の推測は間違っている可能性があることに注意してください。添付ファイルの約20％を失ってDiscourseへのインポートを完了することができました。その理由は本当によくわかりませんが、問題はフォーラムの過去2〜3年間の投稿にのみ影響しているようです。それ以前のものは約95％以上の成功率でインポートされました。私の唯一の推測は、XF 1.xからXF 2.xへの移行と関係があるということです。

これを試みる人は誰でも、このスクリプトはXF 2.xで動作するように多くの更新が必要であることを知っておくべきです。具体的には、375〜378行目には、XenForo Media Galleryから添付ファイルをインポートするための正しいデータベーステーブルがありません。私はXFMGをフォーラムから切断し、アンインストールすることでこれを回避しました。なぜなら、私はフォーラムの添付ファイルをミラーリングするためにXFMGを使用していただけだったからです。

興味があれば、376行目はテーブル`xengallery_media`を参照しています。これは明らかにXFMG 1.xへの参照です。このテーブルはXFMG 2.xでは`xf_mg_media_item`に変更されています。残りの部分は一致させることができず、添付ファイルのIDと投稿を一致させるために追加のコードが必要だと疑っています。

私は314行目をコメントアウトしました：`s = process_xf_attachments(:gallery, s)`

これにより、スクリプトが欠落しているSQLテーブルでエラーを発生させないようにしました。

その後、このスレッドの@Jack51さんの投稿に従いました。

> [@Migrate a XenForo forum to Discourse](https://meta.discourse.org/t/importing-migrating-xenforo-to-discourse/45232/49?u=moshbit):
>
> 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 p…

以下の編集を行いました。

ステップ6では、mariadbのバージョンを更新する必要があります。`mariadb-server-10.3`を`mariadb-server-10.5`に変更してください。

ステップ7は、`service mysql start`ではなく`service mariadb start`であるべきです。

私は変更しました

`frozen_string_literal: true`

を

`frozen_string_literal: false`

このスレッドで他の人が言及していたのと同じエラーが発生したためです。

このスレッドでは、スクリプトが添付ファイルを見つけられるようにどこに配置すべきかについて、かなりの混乱があったようです。私もそれに苦労したことを認めざるを得ません。Dockerに完全に慣れていない人（私のような）にとっては、Dockerはサーバー上で実行される仮想マシン（つまり、2つの異なるOS/ファイルシステムを扱っていることになります）ですが、ファイルを転送するための共有スペースがあることを指摘するのは非常に役立ちます。

`/var/discourse/shared/standalone/tmp`

このディレクトリはホストマシンにあり、そこに入れたファイルは次の場所に表示されます。

`/shared/tmp`

Dockerコンテナに入ったとき。したがって、XenForoから同じファイル/フォルダ構造を維持していると仮定すると、フォルダをコピーします。

`internal_data/attachments`

ホストマシンの

`/var/discourse/shared/standalone/tmp`

にコピーすると、Dockerコンテナに入ったときにそのフォルダが`/shared/tmp`に表示されます。

次に、xenforo.rbスクリプトを編集するときは、次のように変更します。

`ATTACHMENT_DIR = '/tmp/attachments'`

を

`ATTACHMENT_DIR = '/shared/tmp/internal_data/attachments'`

とすると、添付ファイルは正しい場所に配置されます。XenForoには`data/attachments`フォルダもありますが、探している`.data`ファイルではなく`.jpg`ファイルでいっぱいであることに注意してください。以前にこのスレッドで誰かがこの間違いを犯したのを見たので、指摘する価値があると思いました。

また、スクリプトから権限エラーが発生したので、ディレクトリにchmodする必要があるかもしれません。

`sudo chmod a+rw -R /shared/tmp/internal_data/`

スクリプトが添付ファイルを認識していない最大の兆候は、奇妙に静かになることですが、実際には時折エラーを出すはずです。

 ![2022-04-24 21_00_04-Window](https://global.discourse-cdn.com/meta/original/4X/6/7/0/6706befde6e4290eb223ee17f4908b87b344a416.png)

したがって、インポートがエラーなしで数時間続く場合は、添付ファイルが認識されていない可能性が高いです。

以上です。誤解しないでください。このスクリプトが存在すること自体に感謝しています。80％の成功率は何もないよりましです（2009年にvBulletinからXenForoに移行したときも同様の成功率でした）。Discourseプラットフォームで作業できることを楽しみにしています。この投稿が多くの人を助け、いつか私よりもスキルのある人がこのスクリプトをより良く動作するように更新してくれることを願っています。

---

_[View the full topic](https://meta.discourse.org/t/migrate-a-xenforo-forum-to-discourse/45232)._
