このガイドは、セルフホスト型の標準インストールを前提としています。ここでは標準のインストール方法のみをサポートしているため、これらの手順は標準インストールを想定しています。
このガイドはセルフホスト型のDiscourseインスタンスにのみ適用されます。マネージドホスティングサービスを使用している場合、利用可能なプラグインはホスティングプロバイダーによって制御されます。例えば、当社のホスティングでは、ホスティング階層によってこれらの特定のプラグインが利用可能です。
このチュートリアルでは、Discourse Solved プラグインをインストールします。
このチュートリアルを理解するには、GitHubリポジトリの使用方法、特にgit clone URLの取得またはコピー方法と、nanoを使用してYAML (*.yml) ファイルをターミナルで編集する方法、特にnanoでの保存と終了の方法についての理解が必要です。YAMLファイルはインデントに厳密に従うため、Discourseインスタンスに必要な*.ymlをコピー&ペーストして編集する際には、これらを尊重するようにしてください。.ymlファイルでは、タブではなく必ずスペースを使用してください。
-
プラグインのGitHub
git cloneURLをコピーします。 -
コンテナの
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.gitgit clone https://github.com/discourse/docker_manager.gitを含む行のすぐ下にプラグインのgit cloneURLを追加します)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キーによるプライベートインストール手順
-
プライベート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