このガイドは、セルフホスト型の標準インストール を前提としています。ここでは標準のインストール方法のみをサポートしているため、これらの手順は標準インストールを想定しています。
このガイドはセルフホスト型のDiscourseインスタンス にのみ適用されます。マネージドホスティングサービスを使用している場合、利用可能なプラグインはホスティングプロバイダーによって制御されます。例えば、当社のホスティングでは、ホスティング階層によってこれらの特定のプラグイン が利用可能です。
このチュートリアルでは、Discourse Solved プラグインをインストールします。
このチュートリアルを理解するには、GitHubリポジトリの使用方法、特にgit clone URLの取得またはコピー方法 と、nanoを使用してYAML (*.yml) ファイルをターミナルで編集する方法、特にnanoでの保存と終了の方法 についての理解が必要です。YAMLファイルはインデントに厳密に従うため、Discourseインスタンスに必要な*.ymlをコピー&ペーストして編集する際には、これらを尊重するようにしてください。.ymlファイルでは、タブではなく必ずスペースを使用してください。
プラグインのGitHub git clone URLをコピーします。
コンテナのapp.ymlファイルにアクセスします(/var/discourse/にあります)
cd /var/discourse
nano containers/app.yml
プラグインのリポジトリURLをコンテナのapp.ymlファイルに追加します。
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git
- sudo -E -u discourse git clone https://github.com/discourse/discourse-solved.git
git clone https://github.com/discourse/docker_manager.gitを含む行のすぐ下にプラグインのgit clone URLを追加します)
docker_manager.git行の既存の形式に従ってください。もし- sudo -E -u discourseが含まれていない場合は、- git clone https://github.com/discourse/discourse-solved.gitを挿入してください。
コンテナを再構築します。
cd /var/discourse
./launcher rebuild app
これで、DiscourseインスタンスへのDiscourse Solved プラグインのインストールが正常に完了しました!
プライベートリポジトリにプラグインがホストされている場合
OAuthトークンを使用する必要があります。
OAuthトークンを使用すると、パブリックリポジトリと同じ方法でプラグインをインストールでき、SSHキーを作成する必要はありません。
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- sudo -E -u discourse 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
ガイドを更新し、Discourse Spoiler Alert の代わりに別のプラグインを使用するようにしました。これはコアにバンドルされています。
Discourse Solved を使用しましたが、別のものが良い場合はお知らせください。
「いいね!」 9
Digital OceanでDiscourseをホストしていましたが、そのフォーマットを使用した際にこのエラーが表示されました。
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse/plugins && sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git - sudo -E -u discourse git clone https://github.com/discourse/discourse-solved.git failed with return #<Process::Status: pid 252 exit 129>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home/plugins", "cmd"=>["sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git - sudo -E -u discourse git clone https://github.com/discourse/discourse-solved.git"]}
bootstrap failed with exit code 129
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
2a49220a4ff35feac3c1a9a4a9c1cad1094bde4c9ba321975ebc9ae7ead2bbee
その後、このフォーマットを使用しました。
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git && sudo -E -u discourse git clone https://github.com/discourse/discourse-solved.git
代わりに
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git
- sudo -E -u discourse git clone https://github.com/discourse/discourse-solved.git
「いいね!」 4
wal
2024 年 8 月 13 日午前 4:21
339
くだらない質問ですみませんが、git clone ステートメントに sudo -E -u discourse を含める必要があるかどうかは、どのように判断すればよいですか?
「いいね!」 3
Moin
2024 年 8 月 18 日午前 5:59
340
docker_manager の行はどのようになっていますか?
Discourse:
docker_manager.git の既存のフォーマットに従ってください。sudo -E -u discourse が含まれていない場合は、- git clone https://github.com/discourse/discourse-solved.git を挿入してください。
「いいね!」 4
wal
2024 年 8 月 19 日午後 12:40
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)
2024 年 8 月 27 日午後 10:20
343
コンテナ内にsshキーは必要ありません。これを削除してください。
「いいね!」 1
すみません、よく理解できませんでした。
私のリポジトリはSSH経由でアクセスできます。SSHキーなしでプラグインをクローンするにはどうすればよいですか?
「いいね!」 1
pfaffman
(Jay Pfaffman)
2024 年 8 月 27 日午後 10:35
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)
2024 年 9 月 2 日午前 7:40
347
このプラグインのインストールは少し複雑です。テーマのインストールと同じようにできれば素晴らしいのですが。
「いいね!」 2
pfaffman
(Jay Pfaffman)
2024 年 9 月 2 日午前 10:34
348
Dashboard.literatecomputing.com は数回のクリックでプラグインをインストールできます。無料トライアルグループに参加することで、無料で利用できます。
「いいね!」 4
Discourse:
SSHキーのプライベートインストール手順
@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)
2024 年 9 月 2 日午後 5:36
351
必要ないものに感謝します。しかし、私はシンプルなオリジナルで暮らしています。
なぜ私たちの例を使用すべきなのか説明していただけますか?それはこれのせいですか?
プライベートリポジトリにアクセスするために、独自のSSHキーを使用する
「いいね!」 1
rrodrigueznt
(Ricardo Rodríguez)
2024 年 10 月 15 日午後 6:28
355
Jay Pfaffman:
数回のクリックでプラグインをインストールできます
こんにちは!素晴らしいですね!しかし、無料トライアルグループに参加した後、どのように進めばよいかわかりません!@pfaffmanさん 、助けていただけますか?SAMLプラグインをインストールしたいのですが。Literate Computing をテストしてインストールし、実行できると素晴らしいです!
ありがとうございます!
「いいね!」 2
Robert:
URLにトークンを使用するのはなぜですか?
私のテンプレートスニペットは、SSHキー以外にGitリポジトリにアクセスする手段がない場合(たとえば、SSH経由でセルフホストされたGitリポジトリの場合)に使用します。
「いいね!」 5