このガイドは、セルフホスト型の標準インストールを前提としています。ここでは標準のインストール方法のみをサポートしているため、これらの手順は標準インストールを想定しています。
このガイドはセルフホスト型の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 clone URLをコピーします。
-
コンテナの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 clone URLを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キーによるプライベートインストールの手順
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
「いいね!」 173
wal
339
くだらない質問ですみませんが、git clone ステートメントに sudo -E -u discourse を含める必要があるかどうかは、どのように判断すればよいですか?
「いいね!」 3
Moin
340
docker_manager の行はどのようになっていますか?
「いいね!」 4
wal
341
私のアプリの app.yml の他のエントリには sudo の部分はなかったので、それを省略しました。今のところうまくいっています。
「いいね!」 5
- exec: echo "Host github.com\n\tStrictHostKeyChecking no\n" >> /user/.ssh/config
この方法はもう機能していないようです。
sh: 1: /user/.ssh/config: ディレクトリが存在しません
セルフホストされたGITリポジトリで、SSHキーを本当に使用したいです。
「いいね!」 3
pfaffman
(Jay Pfaffman)
343
コンテナ内にsshキーは必要ありません。これを削除してください。
「いいね!」 1
すみません、よく理解できませんでした。
私のリポジトリはSSH経由でアクセスできます。SSHキーなしでプラグインをクローンするにはどうすればよいですか?
「いいね!」 1
pfaffman
(Jay Pfaffman)
345
ああ。もしかしたら私が間違っているのかもしれません。それなら、適切な権限でそのディレクトリを作成する必要があるのかもしれません。
「いいね!」 1
紛らわしいのは、例の中のコマンドの一部は root として実行され、一部はユーザー 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
実行中のコンテナのシェルで調べてみます。
nwnuyhs
(Yang Hongsheng)
347
このプラグインのインストールは少し複雑です。テーマのインストールと同じようにできれば素晴らしいのですが。
「いいね!」 2
pfaffman
(Jay Pfaffman)
348
Dashboard.literatecomputing.com は数回のクリックでプラグインをインストールできます。無料トライアルグループに参加することで、無料で利用できます。
「いいね!」 4
@Discourse, ガイドを更新したい場合は、こちらが動作するコードです。
プライベートリポジトリにアクセスするために独自のSSHキーを使用するには、次の手順に従ってください。
-
プライベートSSHキーを/var/discourse/shared/standalone/identity/id_rsa(またはコンテナからアクセス可能な別の場所)に配置します(別の場所を選択した場合は、以下のテンプレートのパスを適宜更新することを忘れないでください)。
-
次のテンプレートを使用してプラグインを追加します。
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
# プライベートリポジトリへのアクセスを設定
- chown $(whoami) /shared/identity/id_rsa && chmod 600 /shared/identity/id_rsa
- git config --global core.sshCommand "ssh -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -i /shared/identity/id_rsa"
# プライベートプラグイン
- git clone git@example.com:repo/private-discourse-plugin.git
# アクセスを解除
- git config --global --unset core.sshCommand
「いいね!」 5
Jagster
(Jakke Flemming)
351
必要ないものに感謝します。しかし、私はシンプルなオリジナルで暮らしています。
なぜ私たちの例を使用すべきなのか説明していただけますか?それはこれのせいですか?
プライベートリポジトリにアクセスするために、独自のSSHキーを使用する
「いいね!」 1
rrodrigueznt
(Ricardo Rodríguez)
355
こんにちは!素晴らしいですね!しかし、無料トライアルグループに参加した後、どのように進めばよいかわかりません!@pfaffmanさん、助けていただけますか?SAMLプラグインをインストールしたいのですが。Literate Computingをテストしてインストールし、実行できると素晴らしいです!
ありがとうございます!
「いいね!」 2
私のテンプレートスニペットは、SSHキー以外にGitリポジトリにアクセスする手段がない場合(たとえば、SSH経由でセルフホストされたGitリポジトリの場合)に使用します。
「いいね!」 5
TedJohnson
(Ted Johnson)
358
もし、「おい、バカ!git cloneコマンドをシェルから実行するな。例のようにコマンドをapp.ymlファイルに追加し、インデントが正しいことを確認して保存し、再構築コマンドを実行しろ」といった指示があれば、私には助けになっただろう。
また、-E -uが必要な場合とそうでない場合について、これらの指示はもっと明確にできる。
成功する前に、他にもいくつか愚かなことをした。今指示を見ると、ほぼ完璧に理解できる。しかし、私のような初心者でも従えるように指示が書かれていれば、回避できたかもしれないいくつかの落とし穴に陥った。
「いいね!」 6
私は専門家ではないので、我慢してください…
昨日、Discourseをインストールしましたが、今はプラグインをインストールしようとしています。
./launcher rebuild appを実行する必要がありますか?
それとも、./launcher destroy appを実行してから
./launcher start appを実行してもいいですか?
./launcher rebuild appを実行すると時間がかかり、私のウェブサイトが動かなくなったり、極端に遅くなることがあります。
Jagster
(Jakke Flemming)
360
再構築はプラグインをインストールする唯一の方法です。破壊してから古い設定を使って再起動します。
しかし、再構築前に何も破壊しないでください。再構築に失敗した場合は、startを使用して古いものをオンラインに戻すことができます。
あなたには1つのコンテナ設定があるですよね?その場合、そのフォーラムはオフラインになります。なぜなら、最初の再構築がコンテナを停止させるからです。そして、それには時間がかかります。
二つのコンテナ設定もありますが、その場合オフラインの時間は数分です。でも、これらの基本操作に慣れるまでは切り替えないでください。
「いいね!」 2