Install Plugins in Discourse

:warning: 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.

:warning: 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 Spoiler Alert plugin.

  • Copy the plugin’s GitHub or Bitbucket 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-spoiler-alert.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-spoiler-alert.git.

  • Rebuild the container:

    cd /var/discourse
    ./launcher rebuild app
    

    That’s it, you’ve successfully installed the Discourse Spoiler Alert plugin on your Discourse instance!


My plugin is hosted in a private repository

You must use an OAuth token to install your plugin:

https://github.com/blog/1270-easier-builds-and-deployments-using-git-over-https-and-oauth

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"
  • Rebuild the container:
cd /var/discourse
./launcher rebuild app

Your private plugin should be installed on your Discourse instance.

How to remove/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
128 Likes
Discourse Slackdoor Plugin
Site maintenance mode during rebuilds?
Discourse Version 1.2
How to create a new plugins?
Embed Etherpad Lite pads into Discourse
Data Explorer Plugin
Chatroom Integration Plugin (discourse-chat-integration)
LDAP Setup for Discourse
About the Plugin category
How do I stop human spammers?
Solved Button Plugin
Formatting toolbar
Can Plugins Be Added To Basic Docker Install
Discourse Zendesk Plugin
Generating lots of Invite Tokens
Quick Messages Plugin
Wild Apricot login plugin
Checklist Plugin - Interactive Checkboxes made Simple
Does this software allow admin to put Adsense ads in?
Watching Categories based on on group in discourse
ReplyGif: Adding reaction GIF easily
How do i install plugins after doing a fork?
Discourse Mark Plugin
Bump Reset plugin - Annotated to help new devs
User feedback plugin
Retort - a reaction-style plugin for Discourse
Babble - A Chat Plugin
Update private plugin without rebuilding the application
Discourse Akismet Anti-Spam
OpenID Connect Authentication Plugin
Daemonite Material Theme
Discourse Push Notifications for Desktop
Admin Statistics Report
Graphviz Plugin
News Plugin :newspaper:
Installing Plugins with Git
Should all plugins be cloned as the `discourse` user?
Beginner’s Guide to Creating Discourse Plugins Part 6: Acceptance Tests
Favorites - select your favorite categories
Why do I need a block storage?
Projects management plugin
Plugin for Preventing Malicious Linking
Custom Wizard Plugin :mage:
Login with Amazon Plugin
Discourse Fingerprint - Browser Fingerprinting Plugin
Plugin installation went wrong
Sidebar with categories
Topic Ratings Plugin
Merge Users Plugin
Discourse-docs: Documentation Management Plugin
Steam Login / Authentication Plugin
Events Plugin :calendar:
Application Files after Digital Ocean Setup
Unable to find /plugins dir
Pwned Passwords Validator
Launcher rebuild app does nothing
Private repo on Github
Mingle - An Introductions Plugin
Category Page Plugin
Checklist Plugin - Interactive Checkboxes made Simple
Stop Forum Spam Plugin (auto silence known spammers)
Any options for over-riding the username restrictions?
Collude - a collaborative text editor for Discourse
Features of the open source
Discourse Reactions - Beyond Likes
Can't able to install plugins, whats the problem?
Google Perspective API Plugin
Can I access Discourse forum Database to use for PowerBI reporting?
Discourse Code Review
Who's Online Plugin (discourse-whos-online)
Discourse GitHub
Discourse Policy
Vk.com login (vkontakte)
Advanced Discourse Intercom
Custom Trust Level
Fatal: Not a git repository (or any parent up to mount point /discourse)
Fatal: Not a git repository (or any parent up to mount point /discourse)
I need someone who can install a voting plugin
Custom Wizard Plugin :mage:
Introducing Font Awesome 5 and SVG icons
Topic List Previews
Option in category setting not found
Discourse Spoiler Alert
Discourse Cookie Consent Banner
:spiral_calendar: Discourse Event
Community Network Visualisation
Follow Plugin 👨
Discourse-a2a-bbcode
Error using discourse-oauth2-basic plugin with NeonCRM
Discourse Assign
Question Answer Plugin
Discourse Math Editor - user friendly equations!
Discourse Subscriptions
How might we better structure #howto?
Landing Pages Plugin :small_airplane:
How might we better structure #howto?
Cannot install new plugins: structure needs cleaning
Slow Discourse Rebuild on a VM with slow disks
Discourse Notifier
Discourse CommonMark text highlighting?
Mumble -- VOIP Plugin for Discourse
Advice on Installing Plugins
Smallcaps formatting
Cannot install plugin - nothing happens
Configure the Discourse RSS Polling Plugin
What else do I need to take care of when self hosting?
Topic Ratings Plugin
Discourse Shared Edits
Official Advertising / Ad Plugin for Discourse
Beginners Guide to Install Discourse for Development using Docker
Installing discourse-math.git
Discourse Image Filter
Discourse Linkify Google Sheets
LDAP Auth Missing from Plugins
Beginner's Guide to Creating Discourse Plugins Part 1: Creating a basic plugin
Discourse Solved (Accepted answer plugin)
LinkedIn OAuth2 Plugin
Discourse Canned Replies
Add Algolia search to your Discourse
Discourse BBCode
Discourse Voting missing table on postgresql
Discourse Math Plugin
Discourse Voting
OAuth2 Basic Support
Discourse Signatures
Discourse Calendar
Discourse footnote
Cakeday! Celebrating birthdays and anniversaries
Discourse Sitemap
Discourse Spoiler Alert
Discourse-bcc: send individual PMs to users
Discourse Yearly Review Plugin
FontAwesome Pro icons
Discourse-teambuild: Run your own team building activity!
Discourse-tooltips - preview topic contents on hover
Restricted Replies - only allow certain groups to reply in a category
Add a button at the bottom of a topic, visible to a specific group: discourse-topic-group-button
Saved Searches Plugin
Add a button at the bottom of a topic, visible to everyone: discourse-custom-topic-button
Characters Required
Discourse BBCode color
Suppress updating of URL during topic navigation
User Notes Plugin
Discourse Post Sorting Customizer
Unikname Connect plugin
Discourse Video Upload Plugin with YouTube and Vimeo
Quoting not working
Sign in with Apple Plugin
User profile by ID instead of username
What could cause a user to have another user's session?
"Onebox Assistant", crawl for those previews reliably!
"Onebox Assistant", crawl for those previews reliably!
Microsoft Identity Platform Plugin
Votes don't Merge when we combine posts
LDAP Setup for Discourse
I need someone who can install a voting plugin
How to make a discourse forum look like forum.glamour.de
Availability of OpenID Connect in hosted plans
[Solved] Admin-upgrade page not showing up
Synchronizer-base for any backup provider
"Your Docker installation is not using a supported storage driver."
Solution icon does not show in posts
Fixing problems with rebuild app
Auto Bookmarks plugin
Vk.com login (vkontakte)
Force specific users through moderation
Importing from phpBB3
Importing from phpBB3
Zoom Webinars Plugin
Discourse Affiliate Plugin
Voice recording plugin
How to hook up JWT Single Sign On to Discourse
Should all plugins be cloned as the `discourse` user?
Tickets Plugin :tickets:
Discourse Patreon Integration
OAuth2 integration with Drupal
Discord Sync: sync a Discourse forum with a Discord server
Discourse Narrative Bot Beta Feedback
Discourse Translator
No option appears to choose better answer
How to block all crawlers but Google's
Discourse Avatar name_first_letter
Auto-suspend inactive users
How to ad banners?
Algolia plugin indexation
Telegram Notifications Plugin (discourse-telegram-notifications)
Configuring OneLogin's SAML for Discourse
Trying to install plugin (But not working)
How to break 99k char limit?
How to edit plugins code?
I want to install a plugin for development, what should I do?
Discourse Encrypt (for Private Messages)
Azure Blob Storage Plugin
Beginner's Guide to Creating Discourse Plugins Part 1: Creating a basic plugin
./launcher rebuild app error './launcher: No such file or directory'
SSO for College Account

Hello everyone. And how to remove the plugin?
I can delete the plugin’s repository URL to your container’s app.yml file?
After then I rebuild the container?

cd /var/discourse
./launcher rebuild app
4 Likes

I have added this to the OP to make it easier to find

4 Likes