マルチサイトから単一サイトへの復元

こんにちは、私はマルチサイト化のために Multisite configuration with Docker を参照しました。現在、単一のサイトに戻したいと考えています。app.yml ファイルを復元すること以外に、何を行うべきでしょうか?

ここで何を達成しようとしているのか、正直よくわかりませんが、マルチサイト構成から特定のサイトを切り出したい場合は、マルチサイトからバックアップをダウンロードし、スタンドアロンサイトに復元することで可能です。スタンドアロンサイトの設定状況に応じて、いくつかのマッピング変更が必要になるかもしれません。

最初のサイトは残して、2 番目のサイトを削除したいだけです。

はい、最も簡単な方法は、最初のサイトのバックアップを取得し、マルチサイト設定時に使用した 2 つのコンテナ(web_only と data)をシャットダウンし、./discourse-setup を実行して新しいサイトをセットアップした上で、バックアップを復元することです。より高度な解決策としては、yml ファイルから 2 番目のサイトの設定を削除し、データコンテナにアクセスして 2 番目のデータベースを削除し、共有フォルダから 2 番目のサイトのアセットを削除などが含まれます。

ありがとうございます!最初の方法を試してみます。

こんにちは、2 番目の方法を試しています。2 番目のサイトのデータベースを削除し、app.yml 設定ファイルを復元しました。しかし、共有フォルダから 2 番目のサイトのアセットを削除する方法がわかりません。ご協力いただけますか?

Discourse をアップグレードした際、プラグインページが空のページになり、コンソールに以下のエラーが表示されました。

Uncaught TypeError: Cannot read property 'extend' of undefined
    at _discourse-rss-poster-422da9e50d576ad45cb7287315e7a35550af3708eb68422bee05813edc01521d.js:188
    at t.module.exports.u.<computed> (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74640)
    at t.module.exports.u.<computed> (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74470)
    at require (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74637)
    at t.customResolve (_application-572c27eef10b724b244ce26553c6fe92b75f44172387b25ef144f338da4faa1e.js:1015)
    at t.resolveRoute (_application-572c27eef10b724b244ce26553c6fe92b75f44172387b25ef144f338da4faa1e.js:1051)
    at t.e [as resolveRoute] (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:43433)
    at t.n.resolve (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:46378)
    at _ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:12420
    at e.t.resolve (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:11959)

これは 2 番目のサイトが原因だと思われますが、修正方法がわかりません。よろしくお願いいたします。

お手伝いいただけますか?@sam

パスワードを伏せて app.yml ファイルを共有する必要があります。これは、app.yml ファイル内の何らかの抜けやエラーが原因で発生しているものと思われます。

## これはオールインワン、スタンドアロンの Discourse Docker コンテナテンプレートです
##
## このファイルを変更した後、必ず再ビルドしてください
## /var/discourse/launcher rebuild app
##
## 編集時には *非常に* 注意してください!
## YAML ファイルは空白やアライメントのミスに非常に非常に敏感です!
## 必要に応じて http://www.yamllint.com/ にアクセスしてこのファイルを検証してください

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Lets Encrypt (https) を追加したい場合は、以下の 2 行のコメントを外してください
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/web.socketed.template.yml"

## このコンテナが公開する TCP/IP ポートはどれですか?
## Discourse を Apache や nginx などの他の Web サーバーとポートを共有させたい場合は、
## https://meta.discourse.org/t/17247 を参照してください
expose:
        #  - "80:80"   # http
        #  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## db_shared_buffers を総メモリの最大 25% に設定します。
  ## 検出された RAM に基づいてブートストラップによって自動的に設定されますが、上書きすることも可能です
  db_shared_buffers: "128MB"

  ## ソートパフォーマンスを向上させることができますが、接続ごとのメモリ使用量が増加します
  #db_work_mem: "40MB"

  ## このコンテナが使用する Git リビジョンはどれですか?(デフォルト:tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## 同時にサポートされる Web リクエストの数は何ですか?メモリと CPU コア数に依存します。
  ## 検出された CPU に基づいてブートストラップによって自動的に設定されますが、上書きすることも可能です
  UNICORN_WORKERS: 2

  ## TODO: この Discourse インスタンスが応答するドメイン名
  ## 必須です。Discourse は IP アドレスのみでは動作しません。
  DISCOURSE_HOSTNAME: at4am.io

  ## コンテナを上記で指定したホスト名(-h オプション)と同じホスト名で起動したい場合は、コメントを外してください
  #DOCKER_USE_HOSTNAME: true

  ## TODO: 初期登録時に管理者および開発者として設定されるカンマ区切りのメールアドレスのリスト
  ## 例:'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'a@gmail.com'

  ## TODO: 新しいアカウントの検証と通知の送信に使用する SMTP メールサーバー
  # SMTP アドレス、ユーザー名、パスワードは必須です
  # 警告:SMTP パスワード内の '#' 文字は問題を引き起こす可能性があります!
  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: a@outlook.com
  DISCOURSE_SMTP_PASSWORD: "a"
  DISCOURSE_SMTP_AUTHENTICATION: login
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (オプション、デフォルトは true)

  ## Lets Encrypt テンプレートを追加した場合は、以下をコメント外して無料の SSL 証明書を取得してください
  LETSENCRYPT_ACCOUNT_EMAIL: a@gmail.com

  ## この Discourse インスタンスの CDN アドレス(取得用に設定済み)
  ## 詳細については https://meta.discourse.org/t/14857 を参照してください
  #DISCOURSE_CDN_URL: //discourse-cdn.example.com

## Docker コンテナはステートレスです。すべてのデータは /shared に保存されます
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## プラグインはここに配置します
## 詳細については https://meta.discourse.org/t/19157 を参照してください
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/livc/discourse-rss-poster
            #- git clone https://github.com/paviliondev/discourse-ratings
          - git clone https://github.com/discourse/discourse-data-explorer
          - git clone https://github.com/discourse/discourse-solved

## ビルド後に実行する任意のカスタムコマンド
run:
  - exec: echo "Beginning of custom commands"
  ## 最初の登録の 'From' メールアドレスを設定したい場合は、コメントを外して変更してください:
  ## 最初の登録メールが届いたら、再度その行をコメントアウトしてください。一度だけ実行すれば十分です。
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

これが私の app.yml です。お手伝いいただきありがとうございます。

以前のエラーと app.yml を確認すると、おそらく使用している RSS プラグインのフォークが原因と思われます。その中に何らかの破損があり、問題を引き起こしている可能性があります。プラグインを無効にした後、ビルドし直してみませんか?

@itsbhanusharma

このプラグインをコメントアウトすると、プラグインページは正常に動作します。しかし、Discourse を最新バージョンにアップグレードする前は、このプラグインは問題なく動作していました。

そのため、これが Discourse のアップグレードによるものか、マルチサイトによるものか判断に迷っています。

特に、以下のリンクでマルチサイト環境で同じエラーが発生していることがわかりました。
https://meta.discourse.org/t/discourse-subscriptions/140818/77?u=livc

このプラグインは私のサイトにとって非常に重要ですが、今どうすればいいか分かりません。:pensive:

そのプラグインを自作した場合は、修正を試みてください。誰かに作成してもらった場合は、修正してもらうために作成者に連絡してみてください。