diff --git a/source/administration-guide/configure/manage-plugins.rst b/source/administration-guide/configure/manage-plugins.rst new file mode 100644 index 00000000000..ef14ef9836f --- /dev/null +++ b/source/administration-guide/configure/manage-plugins.rst @@ -0,0 +1,177 @@ +.. _manage-plugins: + +Install and manage plugins +========================== + +Plugins extend Mattermost with new features and integrations, from pre-built integrations such as GitHub, Jira, and Zoom to custom plugins your team builds in-house. As a system admin, you can install, enable, configure, update, and remove plugins using either the System Console or the :doc:`mmctl command line tool `. + +This page describes how to manage the plugin lifecycle. For a conceptual overview of pre-built and custom plugins, see the :doc:`plugins ` documentation. For the complete list of plugin configuration options, see the :doc:`plugins configuration settings ` documentation. To build your own plugin, see the `Mattermost plugin developer `__ documentation. + +.. note:: + + You must be a system admin to install and manage plugins. Plugins are managed at the server level and apply to your entire Mattermost deployment. + +Before you begin +---------------- + +Plugin availability and the actions you can take depend on a few configuration settings found in the System Console under **Plugins > Plugin Management**. Review these settings before installing or updating plugins: + +- **Enable plugins** must be set to **true** (the default) for the plugin system to work. When disabled, all plugins are turned off. +- **Enable Marketplace** must be set to **true** (the default) to install plugins from the in-product Marketplace. +- **Enable remote Marketplace** must be set to **true** (the default) for the Marketplace to connect to the remote endpoint and list community and Mattermost-provided plugins. Set this to **false** for servers that can't reach the internet; the Marketplace then shows only pre-packaged and installed plugins. +- **Upload Plugin** (``PluginSettings.EnableUploads``) must be set to **true** to upload plugin bundles from your local computer. This setting applies to self-hosted deployments only. +- **Require plugin signature**, when enabled, validates plugin signatures and **disables plugin file uploads** in the System Console. With this setting enabled, install plugins from the Marketplace or as pre-packaged plugins instead. + +.. note:: + + If you receive a ``Received invalid response from the server`` error when uploading a plugin, the :ref:`maximum file size ` configuration setting is likely too small for the plugin bundle. Increase it, and update any proxy settings as needed. + +See the :doc:`plugins configuration settings ` documentation for details on each of these settings, including their ``config.json`` paths and environment variables. + +Install a plugin +---------------- + +You can install a plugin from the in-product Marketplace, by uploading a plugin bundle, or by using mmctl. Pre-packaged plugins that ship with the Mattermost Server are installed and upgraded automatically when **Automatic prepackaged plugins** is enabled (the default). + +From the Marketplace +~~~~~~~~~~~~~~~~~~~~~ + +Installing from the Marketplace is the recommended method for pre-built plugins. The Marketplace always installs the latest compatible version, and plugins downloaded from the Marketplace are signature-validated. + +1. In Mattermost, from the Product menu |product-list|, select **App Marketplace**. +2. Search for or scroll to the plugin you want, and then select **Install**. +3. Once the plugin is installed, select **Configure** to open its settings in the System Console, or **Enable** to turn it on with the default configuration. + +.. tip:: + + The `Mattermost Marketplace `__ website offers an expanded selection of community-supported integrations. + +By uploading a plugin bundle +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Upload a plugin bundle when you're installing a custom or third-party plugin that isn't in the Marketplace, or when your server runs in an air-gapped or restricted environment. Uploading requires the **Upload Plugin** setting to be enabled and the **Require plugin signature** setting to be disabled. + +1. Download the plugin bundle. Mattermost plugins are distributed as ``.tar.gz`` files, typically from the plugin's GitHub releases page. +2. Log in to your Mattermost System Console as a system admin. +3. Go to **Plugins > Plugin Management**. +4. In the **Upload Plugin** section, select **Choose File**, select the plugin bundle you downloaded, and then select **Upload**. +5. The plugin appears in the **Installed Plugins** list. Select **Enable** to turn it on. + +Using mmctl +~~~~~~~~~~~ + +The :doc:`mmctl command line tool ` is useful for scripted or remote plugin management. Plugins must be enabled in the server configuration first. + +- Install the latest version from the Marketplace by plugin ID: + + .. code-block:: sh + + mmctl plugin marketplace install + +- Install a plugin bundle from your local computer: + + .. code-block:: sh + + mmctl plugin add myplugin.tar.gz + +- Install a plugin bundle from a URL: + + .. code-block:: sh + + mmctl plugin install-url https://example.com/myplugin.tar.gz + +After installing, enable the plugin by its ID: + +.. code-block:: sh + + mmctl plugin enable + +Enable or disable a plugin +-------------------------- + +Installing a plugin doesn't turn it on automatically. Enable a plugin to make it available to users, and disable it to remove it from the user interface without uninstalling it. + +To enable or disable a plugin in the System Console: + +1. Go to **Plugins > Plugin Management**. +2. In the **Installed Plugins** list, locate the plugin. +3. Select **Enable** or **Disable**. + +To enable or disable a plugin with mmctl: + +.. code-block:: sh + + mmctl plugin enable + mmctl plugin disable + +.. note:: + + Disabling a plugin immediately removes it from the user interface and stops the plugin from running. The plugin remains installed and can be re-enabled at any time. + +Configure a plugin +------------------ + +Most plugins have their own settings page. After a plugin is installed, go to **Plugins** in the System Console and select the plugin by name to configure it, then select **Save**. Refer to the documentation for each plugin for details on its available settings. + +Update a plugin +--------------- + +We recommend keeping plugins up to date as new versions are released. Updates are generally seamless and don't interrupt the user experience, but you should review each plugin's release notes for compatibility considerations, and test updates in a staging environment before applying them in production. + +You can update a plugin using any of the following methods: + +- **Pre-packaged plugins** are upgraded automatically when the **Automatic prepackaged plugins** setting is enabled (the default). If a newer version is already installed, no change is made. +- **Marketplace plugins** show an **Update** option in the App Marketplace when a newer version is available. Select it to install the latest version. +- **Uploaded plugins** are updated by uploading a newer bundle with the same plugin ID through **Plugins > Plugin Management**. The new version overwrites the existing one. +- **mmctl** updates an installed plugin when you add a bundle that has the same plugin ID. Use the ``--force`` (``-f``) flag to overwrite the existing version: + + .. code-block:: sh + + mmctl plugin add myplugin.tar.gz --force + mmctl plugin install-url https://example.com/myplugin.tar.gz --force + + You can also reinstall the latest Marketplace version with ``mmctl plugin marketplace install ``. + +.. tip:: + + To confirm the version currently installed, go to **Plugins > Plugin Management** and review the **Installed Plugins** list, or run ``mmctl plugin list``. + +Remove a plugin +--------------- + +Removing a plugin disables it and uninstalls it from the server. + +To remove a plugin in the System Console: + +1. Go to **Plugins > Plugin Management**. +2. In the **Installed Plugins** list, locate the plugin. +3. Select **Remove**. + +To remove a plugin with mmctl: + +.. code-block:: sh + + mmctl plugin delete + +.. note:: + + Removing a plugin uninstalls it from the server and stops it from running, but Mattermost preserves the plugin's associated data: + + - **Configuration**: The plugin's configuration is retained and marked as disabled rather than deleted. Reinstalling the same plugin restores its previous settings. + - **Key-value store data**: Data the plugin saved to the key-value (KV) store is preserved. It's cleared only by the plugin itself through the plugin API, not by removing the plugin. + - **Bot accounts**: Bot accounts the plugin created remain on the server and stay active. To remove them, deactivate the bot accounts manually in **System Console > Integrations > Bot Accounts**. + + Because the configuration and KV store data persist, removal is effectively reversible: reinstalling the plugin restores its prior configuration and data. + +Air-gapped and restricted environments +--------------------------------------- + +For deployments without internet access, set **Enable remote Marketplace** to **false** so the Marketplace shows only pre-packaged and installed plugins, and install plugins by uploading the bundle directly through the System Console. See the :doc:`air-gapped deployment ` documentation for details. + +Related documentation +---------------------- + +- :doc:`Plugins overview ` - Learn about pre-built and custom plugins. +- :doc:`Popular pre-built integrations ` - Browse available pre-built plugins and how to get them. +- :doc:`Plugins configuration settings ` - Review every plugin configuration setting. +- :doc:`mmctl command line tool ` - Manage plugins from the command line. diff --git a/source/administration-guide/manage/admin/server-configuration.rst b/source/administration-guide/manage/admin/server-configuration.rst index 852ac2b16cf..acf5e1fc744 100644 --- a/source/administration-guide/manage/admin/server-configuration.rst +++ b/source/administration-guide/manage/admin/server-configuration.rst @@ -16,6 +16,7 @@ Whether you’re setting up email notifications, optimizing search capabilities, Set up Mattermost Agents Set up auto-translation Install Mattermost Boards + Install and manage plugins Manage user attributes Enable content flagging Environment variables @@ -33,6 +34,7 @@ Whether you’re setting up email notifications, optimizing search capabilities, * :doc:`Set up Mattermost Agents` - Learn how to enable AI-powered Agents for your Mattermost instance. * :doc:`Set up auto-translation ` - Learn how to enable and configure automatic message translation for your Mattermost instance. * :doc:`Install Mattermost Boards ` - Learn how to install and configure the Boards plugin for your Mattermost instance. +* :doc:`Install and manage plugins ` - Learn how to install, enable, configure, update, and remove plugins for your Mattermost instance. * :doc:`Manage custom user attributes ` - Learn how to manage custom user attributes in user profiles in Mattermost. * :doc:`Environment variables ` - Learn how to use environment variables for Mattermost configuration. * :doc:`Customize the server ` - Learn about customizing branding for Mattermost server. diff --git a/source/integrations-guide/plugins.rst b/source/integrations-guide/plugins.rst index 0d8ab98995b..33e2e8d480b 100644 --- a/source/integrations-guide/plugins.rst +++ b/source/integrations-guide/plugins.rst @@ -17,6 +17,8 @@ Mattermost's pre-built plugins make it simple for teams to extend Mattermost wit Learn more about what popular :doc:`pre-built integrations are available and how to install them `. +As a system admin, see the :doc:`install and manage plugins ` documentation for step-by-step instructions on installing, enabling, configuring, updating, and removing plugins. + .. tip:: The `Mattermost Marketplace `_ offers an expanded selection of community supported integrations.