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 containing git clone https://github.com/discourse/docker_manager.git)
Follow the existing format of the docker_manager.git line; if it does not contain sudo -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
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"
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