This guide assumes that you have a self-hosted standard installation. We only support the standard method of install here, so these instructions assume you have a standard install.
This guide only applies to self-hosted Discourse instances. If you are using a managed hosting service, the available plugins are controlled by your hosting provider. For example, on our hosting these specific plugins are available by hosting tier.
In this tutorial, we’ll install the Discourse Solved plugin.
This tutorial requires an understanding of how to use GitHub repos, specifically, how to get or copy the git clone URL and how to edit YAML (*.yml) files via the terminal using nano, specifically how to save and exit on nano. YAML files strongly follow indentations, so be sure to respect these as you copy and paste and edit the necessary *.yml for your Discourse instance.
-
Copy the plugin’s GitHub
git cloneurl. -
Access your container’s
app.ymlfile (present in/var/discourse/containers/)cd /var/discourse nano containers/app.yml -
Add the plugin’s repository URL to your container’s
app.ymlfile: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.gitAdd the plugin’s
git cloneurl just below the line containinggit clone https://github.com/discourse/docker_manager.git)Follow the existing format of the
docker_manager.gitline; if it does not containsudo -E -u discoursethen insert- git clone https://github.com/discourse/discourse-solved.git. -
Rebuild the container:
cd /var/discourse ./launcher rebuild appThat’s it, you’ve successfully installed the Discourse Solved plugin on your Discourse instance!
If your plugin is hosted in a private repository
You must use an OAuth token:
With the OAuth token, you can install your plugin in the same way as a public repo, and you don’t need to create a SSH key.
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- sudo -E -u discourse git clone https://<token>@github.com/owner/repo.git
We strongly advise you to use OAuth tokens for plugins in private repositories. However, if you cannot, see below.
SSH Key Private Install Steps
-
Assuming that your private git repo is hosted on GitHub, you need to add your server’s user public SSH key to GitHub repo Deploy keys (https://github.com/SecretOrg/secret-plugin/settings/keys).
-
Modify
app.ymlfile as shown in below example:
run:
- exec: echo "Beginning of custom commands"
- 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
.... etc ....
-----END RSA PRIVATE KEY-----
- file:
path: /user/.ssh/id_rsa.pub
chmod: 600
contents: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tj .... etc .... 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 "End of custom commands"
- Rebuild the container:
cd /var/discourse
./launcher rebuild app
Your private plugin should be installed on your Discourse instance.
How to uninstall a plugin
To remove a plugin, simply remove the - git clone https://github.com/... line from your app.yml file and rebuild your site via
cd /var/discourse
./launcher rebuild app