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 clone
url. -
Access your container’s
app.yml
file (present in/var/discourse/containers/
)cd /var/discourse nano containers/app.yml
-
Add the plugin’s repository URL to your container’s
app.yml
file: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
Add the plugin’s
git clone
url just below the line containinggit clone https://github.com/discourse/docker_manager.git
)Follow the existing format of the
docker_manager.git
line; if it does not containsudo -E -u discourse
then insert- git clone https://github.com/discourse/discourse-solved.git
. -
Rebuild the container:
cd /var/discourse ./launcher rebuild app
That’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.yml
file 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