このガイドは、セルフホスト型の標準インストールを前提としています。ここでは標準のインストール方法のみをサポートしているため、これらの手順は標準インストールを想定しています。
このガイドはセルフホスト型のDiscourseインスタンスにのみ適用されます。マネージドホスティングサービスを利用している場合、利用可能なプラグインはホスティングプロバイダーによって制御されます。例えば、当社のホスティングでは、ホスティングティアに応じて特定のプラグインが利用可能です。
2025年半ばの時点で、多くの人気のある公式プラグインがDiscourseコアにバンドルされるようになりました。これらのプラグイン(Solved、Data Explorer、AI、Assign、Reactionsなど多数)は個別にインストールする必要がなくなり、Discourseに同梱されており、サイト設定から有効化できます。バンドルされているプラグインがまだ
app.ymlに含まれている状態でリビルドしようとすると、それを削除するように指示するHINTメッセージが表示されます。このガイドは、コアにバンドルされていないプラグインに関するものです。
このチュートリアルでは、Discourse Shared Edits プラグインをインストールします。
このチュートリアルを理解するには、GitHubリポジトリの使用方法、特にgit clone URLの取得またはコピー方法と、nanoを使用してYAML (*.yml) ファイルをターミナルで編集する方法、特にnanoでの保存と終了の方法を理解している必要があります。YAMLファイルはインデントに厳密に従うため、コピー&ペーストや必要な*.ymlファイルの編集を行う際は、インデントを尊重するようにしてください。.ymlファイルでは、タブではなく常にスペースを使用してください。
-
プラグインのGitHub
git cloneURLをコピーします。 -
コンテナの
app.ymlファイルにアクセスします(/var/discourse/containers/にあります)cd /var/discourse nano containers/app.yml -
プラグインのリポジトリURLをコンテナの
app.ymlファイルに追加します。hooks: after_code: - exec: cd: $home/plugins cmd: - git clone https://github.com/discourse/docker_manager.git - git clone https://github.com/discourse/discourse-shared-edits.gitプラグインの
git cloneURLをgit clone https://github.com/discourse/docker_manager.gitを含む行のすぐ下に追加します)docker_manager.git行の既存のフォーマットに従ってください。もしsudo -E -u discourseが含まれている場合は、新しい行にもそのプレフィックスを含めてください。 -
コンテナをリビルドします。
cd /var/discourse ./launcher rebuild appこれで、DiscourseインスタンスへのDiscourse Shared Editsプラグインのインストールが成功しました!
プライベートリポジトリにホストされているプラグインの場合
OAuthトークンを使用する必要があります。
OAuthトークンを使用すると、公開リポジトリと同じ方法でプラグインをインストールでき、SSHキーを作成する必要はありません。
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://<token>@github.com/owner/repo.git
プライベートリポジトリのプラグインにはOAuthトークンの使用を強く推奨します。ただし、使用できない場合は以下を参照してください。
SSHキーによるプライベートインストールの手順
-
プライベートgitリポジトリがGitHubでホストされていると仮定すると、サーバーのユーザー公開SSHキーをGitHubリポジトリのデプロイキー(https://github.com/SecretOrg/secret-plugin/settings/keys)に追加する必要があります。
-
app.ymlファイルを以下の例のように変更します。
run:
- exec: echo "カスタムコマンドの開始"
- exec: cd /var/www/discourse && sudo -u discourse bundle install --deployment --without test --without development
- exec: echo "Host github.com\n\tStrictHostKeyChecking no\n" >> /user/.ssh/config
- file:
path: /user/.ssh/id_rsa
chmod: 600
contents: |
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEArCQG213utzqE5YVjTVF5exGRCkE9OuM7LCp/FOuPdoHrFUXk
.... その他 ....
-----END RSA PRIVATE KEY-----
- file:
path: /user/.ssh/id_rsa.pub
chmod: 600
contents: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tj .... その他 .... user@discourse
- exec: cd $home/plugins && git clone git@github.com:SecretOrg/secret-plugin.git
- exec: cd $home && sudo -E -u discourse bundle exec rake db:migrate
- exec: cd $home && rm -fr tmp/cache
- exec: cd $home && sudo -E -u discourse bundle exec rake assets:precompile
- exec: rm /user/.ssh/id_rsa
- exec: rm /user/.ssh/id_rsa.pub
- exec: echo "カスタムコマンドの終了"
- コンテナをリビルドします。
cd /var/discourse
./launcher rebuild app
プライベートプラグインがDiscourseインスタンスにインストールされるはずです。
プラグインのアンインストール方法
プラグインを削除するには、app.ymlファイルから- git clone https://github.com/...の行を削除し、以下のコマンドでサイトをリビルドするだけです。
cd /var/discourse
./launcher rebuild app