Migrate a phpBB3 forum to Discourse

違いはありませんでした。

これらが貼り付けた際のエラーなのか、それとも実際のymlファイルでの記述方法なのか分かりませんが、これらの記述があると問題が発生する可能性があります。(一部のコメントの末尾にある改行により、コメントされていない2行目が存在しています)

リストのインデントが正しくありません。

上記は以下のようにするべきです。

  new_categories: 
    - forum_id: general
      name: General

設定ファイルを検証するために https://www.yamllint.com/ を使用することをお勧めします。

「いいね!」 3

ご返信ありがとうございます。コンテナ外でsettings.ymlを編集しても、実行中のものには影響しないことにすぐに気づきました。また、ymlの空白についても理解し、設定ファイルを修正しました。いずれにせよ、phpBBフォーラムのインポートはうまくいきましたが、一つ問題が発生しました。

phpBBでの私のユーザー名は、Discourseの管理者アカウントと同じでした。ログインできず、次のようなメッセージが表示されます。

すべての送信メールは管理者がグローバルに無効にしました。いかなる種類のメール通知も送信されません。

その結果、パスワードリセットメールを送信することができません。これはデータベースの設定でしょうか?もしそうであれば、コンテナの限られたリソースを使用してそのフィールドを更新できますか?他に何かアイデアはありますか?

migratepasswordプラグインがインストールされていますが、機能していないようです(おそらくパスワードが15文字未満だったため)。

レールコンソールから管理者ユーザーのメールを有効にできます。

./launcher enter import
rails c

> SiteSetting.disable_emails = "non-staff"

メールを使用せずに、コンテナから直接パスワードをリセットすることもできます。次を実行します。

./launcher enter import
rake admin:create
「いいね!」 3

このドキュメント(およびコード)にいくつか変更を提案してもよろしいでしょうか。

  • disable_edit_notifications 設定はもう存在しないため、これは不要になりました。disable system edit notifications が、言及されたジョブを実行し、デフォルトで有効になっています。
  • SSL の 2 行は app.yml でデフォルトでコメントアウトされていないため、これらの # を削除すると、抜粋が本来あるべき姿により正確になります。
  • このテンプレートは更新されるべきであり、そうしないとインポート時にユーザーはこのエラーに遭遇します。

  • また、これも(どこかで間違いを犯していない限り、これも修正されるべきことです):

IMPORT=1 bundle install を実行したところ、次のエラーが返されました:

[!] `Gemfile` の解析中にエラーが発生しました: 同じ gem を異なるバージョン要件で 2 回指定することはできません。
指定された gem: sqlite3 (~> 1.3, >= 1.3.13) および sqlite3 (>= 0)。Bundler は続行できません。

   # /home/root/discourse/Gemfile から
   # -------------------------------------------
   # group :generic_import, optional: true do
   >    gem "sqlite3"
   #    gem "redcarpet"
   #  -------------------------------------------

実際、sqlite3 は数行上で既に指定されています:

    # NOTE: in import mode the version of sqlite can matter a lot, so we stick it to a specific one
    gem "sqlite3", "~> 1.3", ">= 1.3.13"
    gem "ruby-bbcode-to-md", git: "https://github.com/nlalonde/ruby-bbcode-to-md"
    gem "reverse_markdown"
    gem "tiny_tds"
    gem "csv"
  end

  group :generic_import, optional: true do
    gem "sqlite3"
    gem "redcarpet"
  end

インポートには開発環境を使用しました。関係があるかもしれません。

「いいね!」 5

その情報は指示に記載されているか、テンプレートが更新されるべきです。これには数時間かかりました。

何と書く必要がありますか?

この行を削除したことで、コンテナの構築が成功しました。

「いいね!」 1

この行を削除したのですか?

「いいね!」 1

はい、それが解決策でした。

「いいね!」 1
「いいね!」 4

「こんにちは。phpBBフォーラムをDiscourseに正常に移行しました。すべてがスムーズに進み、フォーラムは正常に動作しています。しかし、phpBBデータをFTPでダウンロードする際にバイナリモードを有効にしなかったことに気づきました。そのため、すべての画像が破損しています。スクリプトを再度実行しましたが、画像は上書きされていません。破損した画像や添付ファイルを上書きするには、どのスクリプト(パスを含めて)を変更する必要がありますか?」

2回目の試行では、uploads テーブルに既に存在するアップロードがあるため、Discourse はアップロードをスキップします。Discourse は、明示的に指示されない限り、既存のアップロードを上書きすることを避けます。

attachment_importer.rb (discourse/script/import_scripts/phpbb3/importers/attachment_importer.rb at main · discourse/discourse · GitHub) の @uploader.create_upload を呼び出す前に、以下のコードスニペットを追加すると、同じファイル名の既存のアップロードが最初に削除され、Discourse が再アップロードすることを強制できます。

existing_upload = Upload.find_by(original_filename: filename)
if existing_upload
  existing_upload.destroy
  puts "Deleted existing upload: #{filename}"
end

upload = @uploader.create_upload(user_id, path, filename)
「いいね!」 4

「ご返信ありがとうございます。残念ながら、変更は効果がありませんでした。スクリプトはわずか1分で実行されますが、添付ファイルは上書きされていません…」

「いいね!」 1

データベースをワイプして、もう一度実行する必要があるでしょう。

「いいね!」 1

どうすればいいですか?

ステップ 1: SSHでサーバーに接続します。

ssh username@server-address

ステップ 2: アプリケーションコンテナにアクセスします。

./launcher enter import

ヒント: docker ps を実行してコンテナ名を見つけます。デフォルトでは、通常 app という名前です。

ステップ 3: データベースをリセットします。

RAILS_ENV=production rake db:reset
「いいね!」 3

Hey Canapin,

I’ve updated this part in the guide.

It depends. It’s still commented out when setting up the container for localhost. The guide assumes that a separate container is used for imports, which isn’t accessible over the internet, so obtaining certificates isn’t necessary in this case.

A PR for this has now been merged into core.

We are working on a fix for this, but I’ve updated the guide and added an FAQ on how to resolve this issue.

「いいね!」 4

Discourse がサブディレクトリ(例:domain.org/forum)で実行される場合、パーマリンクは viewtopic.php?p=XXXX のようになっているため適用されません。機能するためには forum/viewtopic.php?p=XXXX である必要があります。

長年経ちますが、当社のケースで設定されたまま機能しないパーマリンクにつまずきました。URLパス要素で全てのパーマリンクにプレフィックスを付ける GUI/CLI 方法はありますか、または誰かが PostgreSQL クエリを追加できますか?この情報が最初の投稿に追加されれば、他の人も助かるかもしれません。