diff --git a/docs/main/administration-guide/administration-guide-index.mdx b/docs/main/administration-guide/administration-guide-index.mdx index 8f08ade4f927..0f5210b09e97 100644 --- a/docs/main/administration-guide/administration-guide-index.mdx +++ b/docs/main/administration-guide/administration-guide-index.mdx @@ -1,16 +1,14 @@ --- title: "Administration Guide" --- -Welcome to the Mattermost Administration Guide. This guide is organized into sections based on administrative tasks and scenarios to help you effectively manage and optimize your Mattermost workspace. +Welcome to the Mattermost Administration Guide. This guide is organized around what you're doing — setting the server up, getting users in, running it day to day, keeping it healthy, meeting your compliance obligations, upgrading it, and migrating data in and out. -Whether you’re configuring server settings, managing users, monitoring performance, or ensuring compliance, this guide provides all the information you need. Use the navigation below to access detailed instructions and best practices for each topic. +- [Configure](/administration-guide/configure/configure-index) - System Console settings, search, email, file storage, branding, agents, and plugins. +- [Onboard users](/administration-guide/onboard/onboard-index) - Single sign-on, AD/LDAP, provisioning, and guest accounts. +- [Manage](/administration-guide/manage/admin/server-maintenance) - Access control, server operations, licensing, Cloud workspaces, and notices. +- [Monitor and troubleshoot](/administration-guide/manage/admin/monitoring-and-performance) - Metrics and dashboards, logging, health checks, support packets, and error codes. +- [Comply](/administration-guide/comply/comply-index) - Compliance export and monitoring, eDiscovery, data retention, legal hold, and audit logs. +- [Upgrade](/administration-guide/upgrade/upgrade-index) - Upgrade notes, upgrade and downgrade procedures, and post-upgrade rollout tasks. +- [Migrate](/administration-guide/manage/admin/migration) - Bulk import and export, MySQL to PostgreSQL, FIPS migration, and moving from another platform. -- [Self-hosted billing](/administration-guide/manage/admin/self-hosted-billing) - Billing and payment options for Mattermost self-hosted deployments. -- [Cloud workspace management](/administration-guide/manage/cloud-workspace-management) - Learn how to manage cloud workspaces in Mattermost. -- [Server maintenance](/administration-guide/manage/admin/server-maintenance) - Learn about Mattermost server maintenance and best practices. -- [Server configuration](/administration-guide/manage/admin/server-configuration) - Learn about server configuration and settings. -- [User provisioning](/administration-guide/manage/admin/user-provisioning) - Learn about user provisioning and management. -- [User management](/administration-guide/manage/admin/user-management) - Learn about user management and best practices. -- [Monitoring and performance](/administration-guide/manage/admin/monitoring-and-performance) - Learn about monitoring and performance optimization. -- [Compliance](/administration-guide/comply/comply-index) - Learn about compliance and security best practices. -- [Migration](/administration-guide/manage/admin/migration) - Learn about migrating to Mattermost. +If you're deploying Mattermost for the first time, start with the [deployment guide](/deployment-guide/deployment-guide-index) instead. diff --git a/docs/main/administration-guide/comply/comply-index.mdx b/docs/main/administration-guide/comply/comply-index.mdx index f12188746903..b707be489a4e 100644 --- a/docs/main/administration-guide/comply/comply-index.mdx +++ b/docs/main/administration-guide/comply/comply-index.mdx @@ -9,5 +9,6 @@ Mattermost is purpose-built to help enterprises keep sensitive data safe and com - [Electronic discovery](/administration-guide/comply/electronic-discovery) - Extract data from Mattermost for eDiscovery. - [Data retention](/administration-guide/comply/data-retention-policy) - Control how long data is stored in Mattermost with global and custom retention policies to meet data retention compliance requirements. - [Export channel data](/administration-guide/comply/export-mattermost-channel-data) - Migrate data between systems and back data up for operational continuity. -- [Legal Hold](/administration-guide/comply/legal-hold) - Preserve relevant Mattermost information when litigation is anticipated. -- [JSON audit log schema](/administration-guide/comply/embedded-json-audit-log-schema) - Learn how to configure Mattermost audit logging using a JSON object. +- [Legal hold](/administration-guide/comply/legal-hold) - Preserve relevant Mattermost information when litigation is anticipated. +- [Custom terms of service](/administration-guide/comply/custom-terms-of-service) - Require users to accept your own terms before they can access Mattermost. +- [Audit log JSON schema](/administration-guide/comply/embedded-json-audit-log-schema) - Learn how to configure Mattermost audit logging using a JSON object. diff --git a/docs/main/administration-guide/comply/data-retention-policy.mdx b/docs/main/administration-guide/comply/data-retention-policy.mdx index 6524eb668957..afb097993b96 100644 --- a/docs/main/administration-guide/comply/data-retention-policy.mdx +++ b/docs/main/administration-guide/comply/data-retention-policy.mdx @@ -46,7 +46,7 @@ You can also run the deletion job manually at any time by selecting **Run Deleti -If using data retention with [ElasticSearch](/deployment-guide/reference-architecture/scale/elasticsearch-setup), ensure the [ElasticSearch aggregate search indexes](/administration-guide/configure/environment-configuration-settings#aggregate-search-indexes) setting is set to a value that is greater than your data retention policy in days. +If using data retention with [ElasticSearch](/deployment-guide/scale/elasticsearch-setup), ensure the [ElasticSearch aggregate search indexes](/administration-guide/configure/environment-configuration-settings#aggregate-search-indexes) setting is set to a value that is greater than your data retention policy in days. diff --git a/docs/main/administration-guide/comply/embedded-json-audit-log-schema.mdx b/docs/main/administration-guide/comply/embedded-json-audit-log-schema.mdx index 612529120c88..2d3f17d447df 100644 --- a/docs/main/administration-guide/comply/embedded-json-audit-log-schema.mdx +++ b/docs/main/administration-guide/comply/embedded-json-audit-log-schema.mdx @@ -1,5 +1,5 @@ --- -title: "Audit Log JSON Schema" +title: "Audit log JSON schema" --- diff --git a/docs/main/administration-guide/comply/legal-hold.mdx b/docs/main/administration-guide/comply/legal-hold.mdx index 7b01f3ae3912..f446b3d5de44 100644 --- a/docs/main/administration-guide/comply/legal-hold.mdx +++ b/docs/main/administration-guide/comply/legal-hold.mdx @@ -1,5 +1,5 @@ --- -title: "Legal Hold" +title: "Legal hold" --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/main/administration-guide/configure/authentication-configuration-settings.mdx b/docs/main/administration-guide/configure/authentication-configuration-settings.mdx index 2a2c940ccce3..4b8efd366db6 100644 --- a/docs/main/administration-guide/configure/authentication-configuration-settings.mdx +++ b/docs/main/administration-guide/configure/authentication-configuration-settings.mdx @@ -56,7 +56,9 @@ Access the following configuration settings in the System Console by going to ** -\- LDAP and SAML users can always create a Mattermost account by logging in using LDAP or SAML user credentials, regardless of whether this configuration setting is enabled. - From Mattermost v10.9, email addresses enclosed in angle brackets (e.g., `[billy@example.com](mailto:billy@example.com)`) will be rejected. To avoid issues, ensure all user emails comply with the plain address format (e.g., `billy@example.com`). In addition, we strongly recommend taking proactive steps to audit and update Mattermost user data to align with this product change, as impacted users may face issues accessing Mattermost or managing their user profile. You can update these user emails manually using [mmctl user email](/administration-guide/manage/mmctl-command-line-tool#mmctl-user-email). - See the encryption options documentation for details on what [encryption methods](/deployment-guide/encryption-options#saml-encryption-support) Mattermost supports for SAML. +- LDAP and SAML users can always create a Mattermost account by logging in using LDAP or SAML user credentials, regardless of whether this configuration setting is enabled. +- From Mattermost v10.9, email addresses enclosed in angle brackets (e.g., `[billy@example.com](mailto:billy@example.com)`) will be rejected. To avoid issues, ensure all user emails comply with the plain address format (e.g., `billy@example.com`). In addition, we strongly recommend taking proactive steps to audit and update Mattermost user data to align with this product change, as impacted users may face issues accessing Mattermost or managing their user profile. You can update these user emails manually using [mmctl user email](/administration-guide/manage/mmctl-command-line-tool#mmctl-user-email). +- See the [supported SAML encryption methods](#supported-saml-encryption-methods). @@ -994,7 +996,7 @@ The [mmctl ldap sync](/administration-guide/manage/mmctl-command-line-tool#mmctl Access the following configuration settings in the System Console by going to **Authentication \> SAML 2.0**. -See the encryption options documentation for details on what [encryption methods](/deployment-guide/encryption-options#saml-encryption-support) Mattermost supports for SAML. +See the [supported SAML encryption methods](#supported-saml-encryption-methods). @@ -1200,6 +1202,18 @@ For more information, see [AD/LDAP Setup](/administration-guide/onboard/ad-ldap) +#### Supported SAML encryption methods + +Mattermost supports the following encryption methods for SAML: + +- aes128-gcm +- aes192-gcm +- aes256-gcm +- aes128-cbc +- aes256-cbc + +AES-192-GCM and AES-256-GCM support was introduced in Mattermost v10.9. + ### Service provider private key diff --git a/docs/main/administration-guide/configure/bleve-search.mdx b/docs/main/administration-guide/configure/bleve-search.mdx index 7ca5c175075a..6e1dd2d6c82a 100644 --- a/docs/main/administration-guide/configure/bleve-search.mdx +++ b/docs/main/administration-guide/configure/bleve-search.mdx @@ -7,7 +7,7 @@ title: "Bleve search" **From Mattermost v11, Bleve search has been deprecated.** -- **For v11.0 and later**: Use [Elasticsearch](/deployment-guide/reference-architecture/scale/elasticsearch-setup) or [OpenSearch](/deployment-guide/reference-architecture/scale/opensearch-setup) for [enterprise search](/deployment-guide/reference-architecture/scale/enterprise-search) capabilities +- **For v11.0 and later**: Use [Elasticsearch](/deployment-guide/scale/elasticsearch-setup) or [OpenSearch](/deployment-guide/scale/opensearch-setup) for [enterprise search](/deployment-guide/scale/enterprise-search) capabilities - **For pre-v11.0 deployments**: This documentation remains relevant for existing installations that continue using Bleve. @@ -61,4 +61,4 @@ The following conditions are applied when using Bleve search: ## How does search work with Bleve disabled? -Mattermost performs full text searches against the database unless you have an [Enterprise license](/product-overview/editions-and-offerings#mattermost-enterprise) and [enterprise search](/deployment-guide/reference-architecture/scale/enterprise-search) configured. +Mattermost performs full text searches against the database unless you have an [Enterprise license](/product-overview/editions-and-offerings#mattermost-enterprise) and [enterprise search](/deployment-guide/scale/enterprise-search) configured. diff --git a/docs/main/administration-guide/configure/configuration-in-your-database.mdx b/docs/main/administration-guide/configure/configuration-in-your-database.mdx index 6e1423412ced..8bb246d309bb 100644 --- a/docs/main/administration-guide/configure/configuration-in-your-database.mdx +++ b/docs/main/administration-guide/configure/configuration-in-your-database.mdx @@ -3,7 +3,7 @@ title: "Store configuration in your database" --- -If you have a self-hosted Mattermost deployment, you can use your database as the single source of truth for the active configuration of your Mattermost installation. This changes the Mattermost binary from reading the default `config.json` file to reading the configuration settings stored within a configuration table in the database. Mattermost has been running our [community server](https://community.mattermost.com) on this option since the feature was released, and recommends its use for those on [High Availability deployments](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment). +If you have a self-hosted Mattermost deployment, you can use your database as the single source of truth for the active configuration of your Mattermost installation. This changes the Mattermost binary from reading the default `config.json` file to reading the configuration settings stored within a configuration table in the database. Mattermost has been running our [community server](https://community.mattermost.com) on this option since the feature was released, and recommends its use for those on [High Availability deployments](/deployment-guide/server/high-availability-cluster-based-deployment). Benefits to using this option: diff --git a/docs/main/administration-guide/configure/configuration-settings.mdx b/docs/main/administration-guide/configure/configuration-settings.mdx index eac614bdcf79..35ac2235ce5f 100644 --- a/docs/main/administration-guide/configure/configuration-settings.mdx +++ b/docs/main/administration-guide/configure/configuration-settings.mdx @@ -16,20 +16,21 @@ System admins for both self-hosted and Cloud Mattermost deployments can manage M Mattermost configuration settings are organized into the following categories within the System Console: -- [Self-hosted workspace edition and license settings](/administration-guide/configure/self-hosted-account-settings) -- [Cloud workspace subscription, billing, and account settings](/administration-guide/configure/cloud-billing-account-settings) -- [Reporting configuration settings](/administration-guide/configure/reporting-configuration-settings) +- [Site configuration settings](/administration-guide/configure/site-configuration-settings) +- [Authentication configuration settings](/administration-guide/configure/authentication-configuration-settings) - [User management configuration settings](/administration-guide/configure/user-management-configuration-settings) - [System attributes](/administration-guide/configure/system-attributes) - [Environment configuration settings](/administration-guide/configure/environment-configuration-settings) -- [Site configuration settings](/administration-guide/configure/site-configuration-settings) -- [Authentication configuration settings](/administration-guide/configure/authentication-configuration-settings) -- [Plugins configuration settings](/administration-guide/configure/plugins-configuration-settings) -- [Integrations configuration settings](/administration-guide/configure/integrations-configuration-settings) +- [Reporting configuration settings](/administration-guide/configure/reporting-configuration-settings) - [Compliance configuration settings](/administration-guide/configure/compliance-configuration-settings) +- [Integrations configuration settings](/administration-guide/configure/integrations-configuration-settings) +- [Plugins configuration settings](/administration-guide/configure/plugins-configuration-settings) +- [Self-hosted workspace edition and license settings](/administration-guide/configure/self-hosted-account-settings) +- [Cloud workspace subscription, billing, and account settings](/administration-guide/configure/cloud-billing-account-settings) - [Experimental configuration settings](/administration-guide/configure/experimental-configuration-settings) - [Deprecated configuration settings](/administration-guide/configure/deprecated-configuration-settings) -- [Bleve search](/administration-guide/configure/bleve-search) + +Search is configured outside the System Console settings pages above. See [Bleve search](/administration-guide/configure/bleve-search) for the built-in search engine, and the [deployment guide](/deployment-guide/scale/elasticsearch-setup) for Elasticsearch and OpenSearch. ## Configuration in database diff --git a/docs/main/administration-guide/configure/configure-index.mdx b/docs/main/administration-guide/configure/configure-index.mdx new file mode 100644 index 000000000000..37877282ab21 --- /dev/null +++ b/docs/main/administration-guide/configure/configure-index.mdx @@ -0,0 +1,29 @@ +--- +title: "Configure Mattermost" +sidebar_label: "Configure" +--- +Configuration covers everything you set before and after your server is running: the System Console settings themselves, the subsystems Mattermost connects to, and the capabilities you turn on for your users. + +## System Console settings reference + +- [System Console settings](/administration-guide/configure/configuration-settings) - Every System Console setting, one page per section, with its `config.json` key and environment variable. +- [Store configuration in your database](/administration-guide/configure/configuration-in-your-database) - Store configuration in your Mattermost database rather than as a JSON file. +- [Environment variables](/administration-guide/configure/environment-variables) - Override configuration settings using environment variables. + +## Subsystems + +- [Search](/administration-guide/configure/bleve-search) - Enable Bleve search, and Chinese, Japanese, and Korean search. +- [Email](/administration-guide/configure/smtp-email) - Set up SMTP email, and customize email templates. +- [Configure Azure Blob Storage as the Mattermost file store](/administration-guide/configure/azure-blob-storage) - Use Azure Blob Storage instead of local or S3-compatible storage. + +For enterprise search with Elasticsearch or OpenSearch, see the [deployment guide](/deployment-guide/scale/elasticsearch-setup). + +## Capabilities + +- [Branding and customization](/administration-guide/manage/admin/customize-branding) - Apply your organization's branding, and sign custom builds. +- [Mattermost Agents](/administration-guide/configure/agents-admin-guide) - Enable AI-powered Agents and connect an LLM provider. +- [Install and manage plugins](/administration-guide/configure/manage-plugins) - Install, enable, configure, update, and remove plugins. +- [Install Mattermost Boards](/administration-guide/configure/install-boards) - Install and configure the Boards plugin. +- [Set up auto-translation](/administration-guide/manage/admin/autotranslation) - Enable and configure automatic message translation. +- [Set up content flagging](/administration-guide/manage/admin/content-flagging) - Let users flag messages for review, and handle data spillage. +- [Connected workspaces](/administration-guide/onboard/connected-workspaces) - Connect your workspace to another Mattermost deployment. diff --git a/docs/main/administration-guide/configure/environment-configuration-settings.mdx b/docs/main/administration-guide/configure/environment-configuration-settings.mdx index 34850ac004de..a471b78ed7ca 100644 --- a/docs/main/administration-guide/configure/environment-configuration-settings.mdx +++ b/docs/main/administration-guide/configure/environment-configuration-settings.mdx @@ -390,7 +390,7 @@ When using the Mattermost Desktop App, additional configuration is required to o -Purging the caches may adversely impact performance. [high availability cluster-based deployments](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) will attempt to purge all the servers in the cluster. +Purging the caches may adversely impact performance. [high availability cluster-based deployments](/deployment-guide/server/high-availability-cluster-based-deployment) will attempt to purge all the servers in the cluster. @@ -754,7 +754,7 @@ Your database admin must configure the functionality according to supported valu #### AWS High Availablity RDS cluster deployments -For an AWS High Availability RDS cluster deployment, point this configuration setting to the write/read endpoint at the **cluster** level to benefit from the AWS failover handling. AWS takes care of promoting different database nodes to be the writer node. Mattermost doesn't need to manage this. See the [high availability database configuration](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment#database) documentation for details. +For an AWS High Availability RDS cluster deployment, point this configuration setting to the write/read endpoint at the **cluster** level to benefit from the AWS failover handling. AWS takes care of promoting different database nodes to be the writer node. Mattermost doesn't need to manage this. See the [high availability database configuration](/deployment-guide/server/high-availability-cluster-based-deployment#database) documentation for details. ### Maximum open connections @@ -911,7 +911,7 @@ MySQL databases must be configured to support searching strings shorter than thr Search behavior in Mattermost depends on which search engines are enabled: -- When [Elasticsearch](/deployment-guide/reference-architecture/scale/elasticsearch-setup) or [AWS OpenSearch](/deployment-guide/reference-architecture/scale/opensearch-setup) is enabled, Mattermost will try to use it first. +- When [Elasticsearch](/deployment-guide/scale/elasticsearch-setup) or [AWS OpenSearch](/deployment-guide/scale/opensearch-setup) is enabled, Mattermost will try to use it first. - If Elasticsearch fails or is disabled, Mattermost will attempt to use Bleve search, if enabled. Bleve search has been deprecated in Mattermost v11.0. We recommend using Elasticsearch or OpenSearch for enterprise search capabilities. - If these fail or are disabled, Mattermost tries to search the database directly, if this is enabled. - If all of the above methods fail or are disabled, the search results will be empty. @@ -963,7 +963,7 @@ Read-only display of the currently active backend used for search. Values can in #### AWS High Availability RDS cluster deployments -For an AWS High Availability RDS cluster deployment, point this configuration setting directly to the underlying read-only node endpoint within the RDS cluster to circumvent the failover/load balancing that AWS/RDS takes care of (except for the write traffic). Mattermost has its own method of balancing the read-only connections and can also balance those queries to the data source/write+read connection should those nodes fail. See the [high availability database configuration](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment#database) documentation for details. +For an AWS High Availability RDS cluster deployment, point this configuration setting directly to the underlying read-only node endpoint within the RDS cluster to circumvent the failover/load balancing that AWS/RDS takes care of (except for the write traffic). Mattermost has its own method of balancing the read-only connections and can also balance those queries to the data source/write+read connection should those nodes fail. See the [high availability database configuration](/deployment-guide/server/high-availability-cluster-based-deployment#database) documentation for details. ### Search replicas @@ -989,7 +989,7 @@ For an AWS High Availability RDS cluster deployment, point this configuration se #### AWS High Availability RDS cluster deployments -For an AWS High Availability RDS cluster deployment, point this configuration setting directly to the underlying read-only node endpoint within the RDS cluster to circumvent the failover/load balancing that AWS/RDS takes care of (except for the write traffic). Mattermost has its own method of balancing the read-only connections and can also balance those queries to the data source/write+read connection should those nodes fail. See the [high availability database configuration](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment#database) documentation for details. +For an AWS High Availability RDS cluster deployment, point this configuration setting directly to the underlying read-only node endpoint within the RDS cluster to circumvent the failover/load balancing that AWS/RDS takes care of (except for the write traffic). Mattermost has its own method of balancing the read-only connections and can also balance those queries to the data source/write+read connection should those nodes fail. See the [high availability database configuration](/deployment-guide/server/high-availability-cluster-based-deployment#database) documentation for details. ### Replica lag settings @@ -1167,7 +1167,7 @@ If indexing is disabled and then re-enabled after an index is created, purge and ### Backend type -Both [Elasticsearch](/deployment-guide/reference-architecture/scale/elasticsearch-setup) and [AWS OpenSearch](/deployment-guide/reference-architecture/scale/opensearch-setup) provide enterprise-scale deployments with optimized search performance and prevents performance degradation and timeouts. Learn more about [enterprise search](/deployment-guide/reference-architecture/scale/enterprise-search) in our product documentation. +Both [Elasticsearch](/deployment-guide/scale/elasticsearch-setup) and [AWS OpenSearch](/deployment-guide/scale/opensearch-setup) provide enterprise-scale deployments with optimized search performance and prevents performance degradation and timeouts. Learn more about [enterprise search](/deployment-guide/scale/enterprise-search) in our product documentation.
@@ -1182,7 +1182,7 @@ Both [Elasticsearch](/deployment-guide/reference-architecture/scale/elasticsearc
-Learn more about [enterprise search version support](/deployment-guide/reference-architecture/scale/enterprise-search#supported-paths). +Learn more about [enterprise search version support](/deployment-guide/scale/enterprise-search#supported-paths). ### Server connection address @@ -1578,7 +1578,7 @@ If there are `n` data nodes, the number of replicas per shard for each index sho -If you’re using [data retention](/administration-guide/comply/data-retention-policy) and [enterprise search](/deployment-guide/reference-architecture/scale/enterprise-search), configure this with a value greater than your data retention policy. +If you’re using [data retention](/administration-guide/comply/data-retention-policy) and [enterprise search](/deployment-guide/scale/enterprise-search), configure this with a value greater than your data retention policy. @@ -1769,9 +1769,9 @@ During busy periods, this delay will be faster as more traffic is occurring, cau -Available from Mattermost v11.6. The required analyzer plugins should be installed on the Elasticsearch or AWS OpenSearch server before enabling this setting for full analysis support. If no plugin is detected, a warning will be logged. See the [Elasticsearch setup](/deployment-guide/reference-architecture/scale/elasticsearch-setup) and [AWS OpenSearch setup](/deployment-guide/reference-architecture/scale/opensearch-setup) documentation for plugin installation instructions. +Available from Mattermost v11.6. The required analyzer plugins should be installed on the Elasticsearch or AWS OpenSearch server before enabling this setting for full analysis support. If no plugin is detected, a warning will be logged. See the [Elasticsearch setup](/deployment-guide/scale/elasticsearch-setup) and [AWS OpenSearch setup](/deployment-guide/scale/opensearch-setup) documentation for plugin installation instructions. -If you enable this setting on a server that was previously running Elasticsearch or AWS OpenSearch, you must purge and rebuild the search indexes for existing content to be properly searchable with the new analyzers. See the [Elasticsearch setup](/deployment-guide/reference-architecture/scale/elasticsearch-setup) documentation for instructions on purging and rebuilding indexes. +If you enable this setting on a server that was previously running Elasticsearch or AWS OpenSearch, you must purge and rebuild the search indexes for existing content to be properly searchable with the new analyzers. See the [Elasticsearch setup](/deployment-guide/scale/elasticsearch-setup) documentation for instructions on purging and rebuilding indexes. @@ -2585,7 +2585,7 @@ See the [Telemetry](/administration-guide/manage/telemetry#security-update-check -With self-hosted deployments, you can configure Mattermost as a [high availability cluster-based deployment](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) by going to **System Console \> Environment \> High Availability**, or by editing the `config.json` file as described in the following tables. Changes to configuration settings in this section require a server restart before taking effect. +With self-hosted deployments, you can configure Mattermost as a [high availability cluster-based deployment](/deployment-guide/server/high-availability-cluster-based-deployment) by going to **System Console \> Environment \> High Availability**, or by editing the `config.json` file as described in the following tables. Changes to configuration settings in this section require a server restart before taking effect. When a Mattermost high availability cluster-based deployment uses `config.json` for configuration, the System Console is set to read-only by default, and settings can only be changed by editing the `config.json` file directly. However, to test a high availability cluster-based environment, you can disable `ClusterSettings.ReadOnlyConfig` in the `config.json` file by setting it to `false`. This allows changes applied using the System Console to be saved back to the configuration file. When configuration is stored in the database, `ClusterSettings.ReadOnlyConfig` is ignored and the System Console remains fully editable. See [Store configuration in your database](/administration-guide/configure/configuration-in-your-database) for details. @@ -2634,7 +2634,7 @@ When a Mattermost high availability cluster-based deployment uses `config.json` -See the [high availability cluster-based deployment](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) documentation for details. +See the [high availability cluster-based deployment](/deployment-guide/server/high-availability-cluster-based-deployment) documentation for details. ### Use IP address @@ -3408,7 +3408,7 @@ After changing this setting, the new session length takes effect after the next - This setting has no effect when [extend session length with activity](#extend-session-length-with-activity) is set to **true**. - This setting applies to the webapp and the desktop app. For mobile apps, use an [EMM provider](/deployment-guide/mobile/deploy-mobile-apps-using-emm-provider) to lock the app when not in use. | -- In [high availability mode](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment), enable IP hash load balancing for reliable timeout measurement. +- In [high availability mode](/deployment-guide/server/high-availability-cluster-based-deployment), enable IP hash load balancing for reliable timeout measurement. diff --git a/docs/main/administration-guide/configure/experimental-configuration-settings.mdx b/docs/main/administration-guide/configure/experimental-configuration-settings.mdx index 1cfbd3f8f367..bc207a351ddc 100644 --- a/docs/main/administration-guide/configure/experimental-configuration-settings.mdx +++ b/docs/main/administration-guide/configure/experimental-configuration-settings.mdx @@ -241,7 +241,7 @@ This setting resolves issues where YouTube video previews display as unavailable -**From Mattermost v11, Bleve search has been deprecated.** These configuration settings are only available for Mattermost versions prior to v11.0. For v11.0 and later, [Elasticsearch](/deployment-guide/reference-architecture/scale/elasticsearch-setup) or [OpenSearch](/deployment-guide/reference-architecture/scale/opensearch-setup) for [enterprise search](/deployment-guide/reference-architecture/scale/enterprise-search) capabilities. +**From Mattermost v11, Bleve search has been deprecated.** These configuration settings are only available for Mattermost versions prior to v11.0. For v11.0 and later, [Elasticsearch](/deployment-guide/scale/elasticsearch-setup) or [OpenSearch](/deployment-guide/scale/opensearch-setup) for [enterprise search](/deployment-guide/scale/enterprise-search) capabilities. @@ -1133,7 +1133,7 @@ This setting isn't available in the System Console and can only be set in `confi Set whether or not this Mattermost server will handle tasks created by the Scheduler. When running Mattermost on a single machine, this setting should always be enabled. -When running Mattermost in [High Availablity mode](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment), one or more servers should have this setting enabled. We recommend that your High Availability cluster-based deployment has one or more dedicated Workers with this setting enabled while the remaining Mattermost app servers have it disabled. +When running Mattermost in [High Availablity mode](/deployment-guide/server/high-availability-cluster-based-deployment), one or more servers should have this setting enabled. We recommend that your High Availability cluster-based deployment has one or more dedicated Workers with this setting enabled while the remaining Mattermost app servers have it disabled. @@ -1152,7 +1152,7 @@ This setting isn't available in the System Console and can only be set in `confi Set whether or not this Mattermost server will schedule tasks that will be completed by a Worker. When running Mattermost on a single machine, this setting should always be enabled. -When running Mattermost in [High Availablity mode](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment), this setting should always be enabled. In a High Availability cluster-based deployment, exactly one of the servers will be designated as the Scheduler at a time to ensure that duplicate tasks aren't created. See [High Availability documentation](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) for more details. +When running Mattermost in [High Availablity mode](/deployment-guide/server/high-availability-cluster-based-deployment), this setting should always be enabled. In a High Availability cluster-based deployment, exactly one of the servers will be designated as the Scheduler at a time to ensure that duplicate tasks aren't created. See [High Availability documentation](/deployment-guide/server/high-availability-cluster-based-deployment) for more details. diff --git a/docs/main/administration-guide/configure/manage-plugins.mdx b/docs/main/administration-guide/configure/manage-plugins.mdx index c153560c71f5..d4c29e7abb7f 100644 --- a/docs/main/administration-guide/configure/manage-plugins.mdx +++ b/docs/main/administration-guide/configure/manage-plugins.mdx @@ -174,11 +174,11 @@ Mattermost doesn't provide a built-in way to fully delete a removed plugin's ret ## 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 [air-gapped deployment](/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment) documentation for details. +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 [air-gapped deployment](/deployment-guide/deployment-scenarios/air-gapped-deployment) documentation for details. ## Related documentation - [Plugins overview](/integrations-guide/plugins) - Learn about pre-built and custom plugins. -- [Popular pre-built integrations](/integrations-guide/popular-integrations) - Browse available pre-built plugins and how to get them. +- [Pre-built integrations](/integrations-guide/popular-integrations) - Browse available pre-built plugins and how to get them. - [Plugins configuration settings](/administration-guide/configure/plugins-configuration-settings) - Review every plugin configuration setting. - [mmctl command line tool](/administration-guide/manage/mmctl-command-line-tool) - Manage plugins from the command line. diff --git a/docs/main/administration-guide/configure/push-notification-server-configuration-settings.mdx b/docs/main/administration-guide/configure/push-notification-server-configuration-settings.mdx index d65a735295d2..a45ce781ffba 100644 --- a/docs/main/administration-guide/configure/push-notification-server-configuration-settings.mdx +++ b/docs/main/administration-guide/configure/push-notification-server-configuration-settings.mdx @@ -1,6 +1,10 @@ --- title: "Enable push notifications" +unlisted: true --- +{/* Snippet include: imported by environment-configuration-settings. Kept as its + own page because 10 pages deep-link to its anchors. */} + With self-hosted deployments, you can configure mobile push notifications for Mattermost by going to **System Console \> Environment \> Push Notification Server**, or by editing the `config.json` file as described in the following tables. Changes to configuration settings in this section require a server restart before taking effect.
diff --git a/docs/main/administration-guide/configure/rate-limiting-configuration-settings.mdx b/docs/main/administration-guide/configure/rate-limiting-configuration-settings.mdx index 4a93ca8dcd35..eb19f28faeab 100644 --- a/docs/main/administration-guide/configure/rate-limiting-configuration-settings.mdx +++ b/docs/main/administration-guide/configure/rate-limiting-configuration-settings.mdx @@ -1,6 +1,9 @@ --- title: "Enable rate limiting" +unlisted: true --- +{/* Snippet include: imported by environment-configuration-settings. */} + With self-hosted deployments, rate limiting prevents your Mattermost server from being overloaded with too many requests, and decreases the risk and impact of third-party applications or malicious attacks on your server. Configure rate limiting settings by going to **System Console \> Environment \> Rate Limiting**, or by editing the `config.json` file as described in the following tables. Changes to configuration settings in this section require a server restart before taking effect. diff --git a/docs/main/administration-guide/configure/site-configuration-settings.mdx b/docs/main/administration-guide/configure/site-configuration-settings.mdx index 18380f53e900..42cbbe868c3f 100644 --- a/docs/main/administration-guide/configure/site-configuration-settings.mdx +++ b/docs/main/administration-guide/configure/site-configuration-settings.mdx @@ -1678,7 +1678,7 @@ Disabling this feature prevents users from sending new burn-on-read messages. On -The server must be connected to the internet to generate previews. This connection can be established through a [firewall or outbound proxy](/deployment-guide/server/preparations#outbound-proxy-configuration) if necessary. +The server must be connected to the internet to generate previews. This connection can be established through a [firewall or outbound proxy](/deployment-guide/server/prepare-network#outbound-proxy-configuration) if necessary. diff --git a/docs/main/administration-guide/configure/system-attributes.mdx b/docs/main/administration-guide/configure/system-attributes.mdx index 5cec035573a5..934980cfddc6 100644 --- a/docs/main/administration-guide/configure/system-attributes.mdx +++ b/docs/main/administration-guide/configure/system-attributes.mdx @@ -1,5 +1,5 @@ --- -title: "System Attributes" +title: "System attributes" --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/main/administration-guide/configure/user-management-configuration-settings.mdx b/docs/main/administration-guide/configure/user-management-configuration-settings.mdx index 5959ff6a064d..1254f89bee65 100644 --- a/docs/main/administration-guide/configure/user-management-configuration-settings.mdx +++ b/docs/main/administration-guide/configure/user-management-configuration-settings.mdx @@ -26,7 +26,7 @@ Getting people set up with a Mattermost account is typically something that syst - [Enable account creation](/administration-guide/configure/authentication-configuration-settings#enable-account-creation). - Use [mmctl user create](/administration-guide/manage/mmctl-command-line-tool#mmctl-user-create) or Mattermost [APIs](https://api.mattermost.com/#tag/users) to create user accounts. -- [Migrate user accounts](/administration-guide/onboard/migrating-to-mattermost#migration-guide) from other collaboration systems and [bulk load](/administration-guide/onboard/bulk-loading-data) that user data into Mattermost. +- [Migrate user accounts](/administration-guide/onboard/migrating-to-mattermost#migration-guide) from other collaboration systems and [bulk import](/administration-guide/onboard/bulk-loading-data) that user data into Mattermost. - Connect an authentication service to assist with user provisioning, such as [AD/LDAP authentication](/administration-guide/onboard/ad-ldap) or [SAML authentication](/administration-guide/onboard/sso-saml). ### Review user data diff --git a/docs/main/administration-guide/manage/admin/autotranslation.mdx b/docs/main/administration-guide/manage/admin/autotranslation.mdx index d1da4e21ab21..2003c3645147 100644 --- a/docs/main/administration-guide/manage/admin/autotranslation.mdx +++ b/docs/main/administration-guide/manage/admin/autotranslation.mdx @@ -1,5 +1,5 @@ --- -title: "Set up Auto-translation (Beta)" +title: "Set up auto-translation (Beta)" --- diff --git a/docs/main/deployment-guide/server/fips-migration.mdx b/docs/main/administration-guide/manage/admin/fips-migration.mdx similarity index 100% rename from docs/main/deployment-guide/server/fips-migration.mdx rename to docs/main/administration-guide/manage/admin/fips-migration.mdx diff --git a/docs/main/administration-guide/manage/admin/generating-support-packet.mdx b/docs/main/administration-guide/manage/admin/generating-support-packet.mdx index f931248f8a59..a31ecab41e47 100644 --- a/docs/main/administration-guide/manage/admin/generating-support-packet.mdx +++ b/docs/main/administration-guide/manage/admin/generating-support-packet.mdx @@ -1,5 +1,5 @@ --- -title: "Generate a Support Packet" +title: "Generate a support packet" --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -162,11 +162,11 @@ The following additional plugin diagnostic data is included in the generated Sup -From Mattermost v10.10, Support Packets from [high availability](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) deployments organize cluster-specific files (such as log files) in subdirectories named after each cluster node, while cluster-wide files remain in the root directory. +From Mattermost v10.10, Support Packets from [high availability](/deployment-guide/server/high-availability-cluster-based-deployment) deployments organize cluster-specific files (such as log files) in subdirectories named after each cluster node, while cluster-wide files remain in the root directory. Support packet file organization has been improved to make it easier to identify cluster-wide versus cluster-specific files: -- **Cluster-wide files** (identical across all nodes in a [high-availability cluster](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment)) remain in the root directory of the support packet. +- **Cluster-wide files** (identical across all nodes in a [high-availability cluster](/deployment-guide/server/high-availability-cluster-based-deployment)) remain in the root directory of the support packet. - **Cluster-specific files** (unique per node) are now organized in subdirectories named after each cluster node. **Cluster-wide files (root directory):** diff --git a/docs/main/administration-guide/manage/admin/installing-license-key.mdx b/docs/main/administration-guide/manage/admin/installing-license-key.mdx index 86347e4f5195..693ded996573 100644 --- a/docs/main/administration-guide/manage/admin/installing-license-key.mdx +++ b/docs/main/administration-guide/manage/admin/installing-license-key.mdx @@ -19,7 +19,7 @@ Once the key is uploaded and installed, the details of your license are displaye -Use the [mmctl license upload](/administration-guide/manage/mmctl-command-line-tool#mmctl-license-upload) command to upload a new license or replace an existing license file with a new one. When complete, restart the Mattermost server. If you're running in a [High Availability](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) environment, the new license file must be updated to every node. +Use the [mmctl license upload](/administration-guide/manage/mmctl-command-line-tool#mmctl-license-upload) command to upload a new license or replace an existing license file with a new one. When complete, restart the Mattermost server. If you're running in a [High Availability](/deployment-guide/server/high-availability-cluster-based-deployment) environment, the new license file must be updated to every node. ``` sh mmctl license upload [license] [flags] @@ -34,7 +34,7 @@ mmctl license upload [license] [flags] - From Mattermost v10.11, the option to add a license is disabled when the license is set using an [environment variable](/administration-guide/configure/environment-configuration-settings#license-file-location). - Enterprise customers with the Premier Support add-on can request a staging license for testing. - Removing a Mattermost Enterprise or Professional license key won't remove the configuration for Enterprise settings; however, these features won't function until an Enterprise or Professional license key is applied. -- When you're using [High Availability](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment), it's critical to ensure that all servers in the cluster have same Enterprise license properly installed to prevent multi-node clusters from failing. An Enterprise license is required for High Availability to work. +- When you're using [High Availability](/deployment-guide/server/high-availability-cluster-based-deployment), it's critical to ensure that all servers in the cluster have same Enterprise license properly installed to prevent multi-node clusters from failing. An Enterprise license is required for High Availability to work. - When you apply an Enterprise license key to a server previously licensed for Professional, Professional features retain their configuration settings in Enterprise. - When you apply a Professional license to a server previously licensed for Enterprise, Enterprise features retain their configuration but will no longer be accessible for use. diff --git a/docs/main/deployment-guide/manual-postgres-migration.mdx b/docs/main/administration-guide/manage/admin/manual-postgres-migration.mdx similarity index 99% rename from docs/main/deployment-guide/manual-postgres-migration.mdx rename to docs/main/administration-guide/manage/admin/manual-postgres-migration.mdx index 219c40d8b68b..cac801ca3b8c 100644 --- a/docs/main/deployment-guide/manual-postgres-migration.mdx +++ b/docs/main/administration-guide/manage/admin/manual-postgres-migration.mdx @@ -122,7 +122,7 @@ This guide requires a schema of v7.1 ESR or later. So, if you have an earlier ve - Confirm your Mattermost version. See the **About** modal for details. - Schedule the migration window. This process requires you to stop the Mattermost Server during the migration. - See the [schema-diffs](#schema-diffs) section to ensure data compatibility between schemas. -- Prepare your PostgreSQL environment by creating a database and user. See the [database](/deployment-guide/server/preparations) documentation for details. +- Prepare your PostgreSQL environment by creating a database and user. See the [database](/deployment-guide/server/prepare-database) documentation for details. - On [newer versions](https://www.postgresql.org/docs/release/15.0/) of PostgreSQL, newly created users do not have access to `public` schema. The access should be explicitly granted by running `GRANT ALL ON SCHEMA public to mmuser`. @@ -799,4 +799,4 @@ pgloader calls.load > calls_migration.log ## Troubleshooting -See [troubleshooting errors during migration from MySQL to PostgreSQL](/deployment-guide/postgres-migration#troubleshooting) +See [troubleshooting errors during migration from MySQL to PostgreSQL](/administration-guide/manage/admin/postgres-migration#troubleshooting) diff --git a/docs/main/administration-guide/manage/admin/migration.mdx b/docs/main/administration-guide/manage/admin/migration.mdx index 4e67f8a518ac..a6e7cefaa37e 100644 --- a/docs/main/administration-guide/manage/admin/migration.mdx +++ b/docs/main/administration-guide/manage/admin/migration.mdx @@ -1,16 +1,12 @@ --- -title: "Migration" +title: "Migrate" --- -This Mattermost Migration Guide is organized into sections based on migration scenarios and tools to help you transition smoothly to Mattermost or optimize your current setup. +Getting data in and out of a Mattermost deployment, moving onto Mattermost from another platform, and moving an existing deployment onto different infrastructure. -Whether you’re migrating from another platform, upgrading your database, or using bulk tools for data management, this guide provides the resources and instructions you need for a successful migration. Use the navigation below to explore detailed guidance tailored to your migration needs. +- [Bulk import data](/administration-guide/onboard/bulk-loading-data) - Import users, teams, channels, and posts from a JSONL file. +- [Bulk export data](/administration-guide/manage/bulk-export-tool) - Export users, teams, channels, and posts to a JSONL file. +- [Migrate from MySQL to PostgreSQL](/administration-guide/manage/admin/postgres-migration) - Move your database, using the migration assist tool or by hand. +- [Migrate to FIPS-compliant images](/administration-guide/manage/admin/fips-migration) - Switch an existing Docker or Kubernetes deployment to the FIPS-compliant Mattermost images. +- [Migrate from another platform](/administration-guide/onboard/migrating-to-mattermost) - Move from Slack, Rocket.Chat, or GitLab Omnibus, with the [migration announcement email template](/administration-guide/onboard/migration-announcement-email) for telling your users. -- [Migrate from MySQL to PostgreSQL](/deployment-guide/postgres-migration) - Learn how to migrate from MySQL to PostgreSQL. -- [Migrate to FIPS-compliant images](/deployment-guide/server/fips-migration) - Learn how to switch an existing Docker or Kubernetes deployment to the FIPS-compliant Mattermost images. -- [Server migration guide](/administration-guide/onboard/migrating-to-mattermost) - Learn about about migrating to Mattermost. -- [Migrate from Slack](/administration-guide/onboard/migrate-from-slack) - Learn how to migrate from Slack to Mattermost. -- [Migrate from Rocket.Chat](/administration-guide/onboard/migrate-from-rocketchat) - Learn how to migrate from Rocket.Chat to Mattermost. -- [Migrate from Gitlab Omnibus](/administration-guide/onboard/migrate-gitlab-omnibus) - Learn how to migrate from GitLab Omnibus to a standalone Mattermost installation. -- [Bulk export tool](/administration-guide/manage/bulk-export-tool) - Learn about the bulk export tool for Mattermost. -- [Bulk loading tool](/administration-guide/onboard/bulk-loading-data) - Learn about the bulk loading tool for Mattermost. -- [Migration announcement email template](/administration-guide/onboard/migration-announcement-email) - Use this email template to notify your users that you've migrated to Mattermost. +Import and export share the same JSONL format, so the [bulk import data](/administration-guide/onboard/bulk-loading-data) page is also the format reference for export files. diff --git a/docs/main/administration-guide/manage/admin/monitoring-and-performance.mdx b/docs/main/administration-guide/manage/admin/monitoring-and-performance.mdx index c2159ee3621a..a7ca5f1e4e32 100644 --- a/docs/main/administration-guide/manage/admin/monitoring-and-performance.mdx +++ b/docs/main/administration-guide/manage/admin/monitoring-and-performance.mdx @@ -1,24 +1,31 @@ --- title: "Monitoring and performance" --- -This Monitoring and Performance Guide is organized into sections to help you effectively monitor, optimize, and manage the performance of your Mattermost installation. - -From collecting performance metrics and deploying monitoring tools to configuring health checks and managing notifications, this guide offers comprehensive resources to ensure your Mattermost workspace operates at peak efficiency. Use the navigation below to explore detailed instructions and best practices. - -- [Optimize your Mattermost workspace](/administration-guide/configure/optimize-your-workspace) - Learn about optimizing your Mattermost workspace. -- [Collect performance metrics](/administration-guide/scale/collect-performance-metrics) - Learn about collecting performance metrics for Mattermost. -- [Deploy Prometheus and Grafana for performance monitoring](/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring) - Learn how to deploy Prometheus and Grafana for performance monitoring. -- [Performance monitoring metrics](/administration-guide/scale/performance-monitoring-metrics) - Learn about performance monitoring metrics for Mattermost. -- [Deploy Grafana Loki for centralized logging](/administration-guide/scale/deploy-grafana-loki-for-centralized-logging) - Learn how to deploy Grafana Loki for centralized logging. -- [Push notification health targets](/administration-guide/scale/push-notification-health-targets) - Learn about push notification health targets for Mattermost. -- [Performance alerting guide](/administration-guide/scale/performance-alerting) - Learn about performance alerting for Mattermost. -- [Ensuring releases perform at scale](/administration-guide/scale/ensuring-releases-perform-at-scale) - Learn how to ensure releases perform at scale for Mattermost. -- [Manage user surveys](/administration-guide/configure/manage-user-surveys) - Learn about managing user surveys for Mattermost. -- [User satisfaction surveys](/administration-guide/manage/user-satisfaction-surveys) - Learn how to send user satisfaction surveys for Mattermost. -- [Notify admin](/administration-guide/upgrade/notify-admin) - Learn how to notify admins for Mattermost. -- [System-wide notifications](/administration-guide/manage/system-wide-notifications) - Learn about system-wide notifications for Mattermost. -- [Statistics](/administration-guide/manage/statistics) - Learn about Mattermost statistics . -- [In-product notices](/administration-guide/manage/in-product-notices) - Learn how to use in-product notices for Mattermost. -- [Health checks](/administration-guide/manage/request-server-health-check) - Learn about health checks for Mattermost. -- [Health check probes](/administration-guide/manage/configure-health-check-probes) - Learn how to set up health check probes for Mattermost. -- [Product limits](/administration-guide/manage/product-limits) - Learn about product limits for Mattermost. +Keeping a running deployment healthy: what to measure, where to send it, and what to collect when something goes wrong. + +## Metrics and dashboards + +- [Collect performance metrics](/administration-guide/scale/collect-performance-metrics) - Turn on the metrics endpoint and decide what to scrape. +- [Deploy Prometheus and Grafana for performance monitoring](/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring) - Stand up the monitoring stack. +- [Performance monitoring metrics](/administration-guide/scale/performance-monitoring-metrics) - What each metric means. +- [Performance alerting](/administration-guide/scale/performance-alerting) - Alert thresholds worth setting, and why. +- [Push notification health targets](/administration-guide/scale/push-notification-health-targets) - Healthy delivery latency and failure rates. + +## Logging + +- [Mattermost logging](/administration-guide/manage/logging) - Configure what the server logs and where. +- [Deploy Grafana Loki for centralized logging](/administration-guide/scale/deploy-grafana-loki-for-centralized-logging) - Aggregate logs across servers. + +## Health and diagnostics + +- [Optimize your Mattermost workspace](/administration-guide/configure/optimize-your-workspace) - Run the System Console health check and act on what it finds. +- [Statistics](/administration-guide/manage/statistics) - Site and team usage statistics. +- [Configure server health check probes](/administration-guide/manage/configure-health-check-probes) - Liveness and readiness endpoints for your orchestrator. +- [Request a server health check](/administration-guide/manage/request-server-health-check) - Have Mattermost review your deployment. +- [Generate a support packet](/administration-guide/manage/admin/generating-support-packet) - Collect logs and configuration for a support ticket. +- [Mattermost error codes](/administration-guide/manage/admin/error-codes) - Look up an error a user reported. + +## Telemetry + +- [Telemetry](/administration-guide/manage/telemetry) - What Mattermost collects, and how to turn it off. +- [Ensure releases perform at scale](/administration-guide/scale/ensuring-releases-perform-at-scale) - How Mattermost load-tests each release. diff --git a/docs/main/deployment-guide/postgres-migration-assist-tool.mdx b/docs/main/administration-guide/manage/admin/postgres-migration-assist-tool.mdx similarity index 88% rename from docs/main/deployment-guide/postgres-migration-assist-tool.mdx rename to docs/main/administration-guide/manage/admin/postgres-migration-assist-tool.mdx index ceb5e1587948..da8c4495a559 100644 --- a/docs/main/deployment-guide/postgres-migration-assist-tool.mdx +++ b/docs/main/administration-guide/manage/admin/postgres-migration-assist-tool.mdx @@ -3,7 +3,7 @@ title: "Automated PostgreSQL migration" --- -Migrating databases can be a daunting task, and it can be easy to overlook or misinterpret some of the required steps if you haven't performed a migration before. Our `migration-assist` tool provides an efficient, error-free migration experience that automates the [tasks to be executed](/deployment-guide/manual-postgres-migration), even in air-gapped deployment environments. +Migrating databases can be a daunting task, and it can be easy to overlook or misinterpret some of the required steps if you haven't performed a migration before. Our `migration-assist` tool provides an efficient, error-free migration experience that automates the [tasks to be executed](/administration-guide/manage/admin/manual-postgres-migration), even in air-gapped deployment environments. Not sure this tool is right for your Mattermost deployment? Mattermost customers looking for tailored guidance based on their Mattermost deployment can contact a [Mattermost Expert](https://mattermost.com/contact-sales/). @@ -13,15 +13,15 @@ Download the Mattermost `migration-assist` tool from the GitHub repository [rele While you can run the `migration-assist` tool on the same server as your Mattermost deployment, we recommend running the tool in a virtual machine on the same network as your Mattermost server instead. The tool itself is lightweight and does not require a large server. A server with 2 CPU cores and 16 GB of RAM should be sufficient. If preferred, you can download and [compile](#compile-the-migration-assist-tool) the `migration-assist` tool yourself. -You'll also need to install the `pgloader` tool to migrate your data from MySQL to PostgreSQL. We recommend running `pgloader` in a virtual machine on the same network as your Mattermost server. You can use our official Mattermost Docker image for pgloader (`mattermost/pgloader:latest`); please note that it does **not** currently support MySQL’s `caching_sha2_password` authentication plugin. If you require `caching_sha2_password` support, you’ll need to build your own image and include the [qitab/qmynd](https://github.com/qitab/qmynd) library. See the [pgloader](/deployment-guide/manual-postgres-migration#install-pgloader) installation documentation for details. +You'll also need to install the `pgloader` tool to migrate your data from MySQL to PostgreSQL. We recommend running `pgloader` in a virtual machine on the same network as your Mattermost server. You can use our official Mattermost Docker image for pgloader (`mattermost/pgloader:latest`); please note that it does **not** currently support MySQL’s `caching_sha2_password` authentication plugin. If you require `caching_sha2_password` support, you’ll need to build your own image and include the [qitab/qmynd](https://github.com/qitab/qmynd) library. See the [pgloader](/administration-guide/manage/admin/manual-postgres-migration#install-pgloader) installation documentation for details. ## Usage - If you encounter heap exhaustion errors in `pgloader`, edit your generated `migration.load` and under the `WITH` block set: `prefetch rows = 1000` and consider reducing it if the issue persists. -- Please make sure you have the necessary environment to perform the migration. Ensure that the MySQL and PostgreSQL databases are running and accessible. To set up a PostgreSQL instance, see the [prepare your Mattermost database](/deployment-guide/server/preparations) documentation for details. -- If you were previously utilizing a database for handling the [Mattermost configuration](/administration-guide/configure/configuration-in-your-database), those tables will not be migrated from your MySQL database with the migration [script](#migrate-the-data). You will need to manually migrate those configuration settings to your PostgreSQL database after completing the migration process. See the [configuration in database](/deployment-guide/manual-postgres-migration#configuration-in-database) documentation for details. +- Please make sure you have the necessary environment to perform the migration. Ensure that the MySQL and PostgreSQL databases are running and accessible. To set up a PostgreSQL instance, see the [prepare your Mattermost database](/deployment-guide/server/prepare-database) documentation for details. +- If you were previously utilizing a database for handling the [Mattermost configuration](/administration-guide/configure/configuration-in-your-database), those tables will not be migrated from your MySQL database with the migration [script](#migrate-the-data). You will need to manually migrate those configuration settings to your PostgreSQL database after completing the migration process. See the [configuration in database](/administration-guide/manage/admin/manual-postgres-migration#configuration-in-database) documentation for details. @@ -94,7 +94,7 @@ migration-assist pgloader \ ### Step 4 - Run pgloader -[Run pgloader](/deployment-guide/manual-postgres-migration#pgloader) with the generated configuration file: +[Run pgloader](/administration-guide/manage/admin/manual-postgres-migration#pgloader) with the generated configuration file: ``` sh pgloader migration.load > migration.log @@ -113,7 +113,7 @@ migration-assist postgres post-migrate --create-indexes "" - The `--create-indexes` flag rebuilds full-text indexes on `Posts` and `FileInfo`, plus all other Mattermost indexes. - Omitting that flag only restores full-text indexes for `Posts` and `FileInfo`. -See the [Restore full-text indexes](/deployment-guide/manual-postgres-migration#restore-full-text-indexes) documentation for details. +See the [Restore full-text indexes](/administration-guide/manage/admin/manual-postgres-migration#restore-full-text-indexes) documentation for details. ### Step 6 - Complete plugin migrations @@ -139,7 +139,7 @@ pgloader playbooks.load > playbooks_migration.log pgloader calls.load > calls_migration.log ``` -Skip any plugin you don't use; check logs for JSON or missing-table errors. See the [Plugin migrations](/deployment-guide/manual-postgres-migration#plugin-migrations) guide for more. +Skip any plugin you don't use; check logs for JSON or missing-table errors. See the [Plugin migrations](/administration-guide/manage/admin/manual-postgres-migration#plugin-migrations) guide for more. ### Step 7 - Configure Mattermost to use PostgreSQL @@ -203,4 +203,4 @@ go install github.com/mattermost/migration-assist/cmd/migration-assist@latest ## Troubleshooting -See [troubleshooting errors during migration from MySQL to PostgreSQL](/deployment-guide/postgres-migration#troubleshooting). +See [troubleshooting errors during migration from MySQL to PostgreSQL](/administration-guide/manage/admin/postgres-migration#troubleshooting). diff --git a/docs/main/deployment-guide/postgres-migration.mdx b/docs/main/administration-guide/manage/admin/postgres-migration.mdx similarity index 93% rename from docs/main/deployment-guide/postgres-migration.mdx rename to docs/main/administration-guide/manage/admin/postgres-migration.mdx index f1f93705a938..8fa246de2654 100644 --- a/docs/main/deployment-guide/postgres-migration.mdx +++ b/docs/main/administration-guide/manage/admin/postgres-migration.mdx @@ -5,8 +5,8 @@ title: "Migration guidelines from MySQL to PostgreSQL" From Mattermost v8.0, [PostgreSQL](/deployment-guide/software-hardware-requirements#database-software) is our database of choice for Mattermost to enhance the platform’s performance and capabilities. Recognizing the importance of supporting the community members who are interested in migrating from a MySQL database, we have taken proactive measures to provide guidance and best practices. -- [Automated migration from MySQL to PostgreSQL](/deployment-guide/postgres-migration-assist-tool) - A comprehensive set of guidelines and a `migration-assist` tool to streamline the migration process, alleviate potential challenges, and faciliate a smooth transition. -- [Manually migrate from MySQL to PostgreSQL](/deployment-guide/manual-postgres-migration) - A good option if your organization has database administrators to own the migration process, or if you want to learn what the `migration-assist` tool automates for you. +- [Automated migration from MySQL to PostgreSQL](/administration-guide/manage/admin/postgres-migration-assist-tool) - A comprehensive set of guidelines and a `migration-assist` tool to streamline the migration process, alleviate potential challenges, and faciliate a smooth transition. +- [Manually migrate from MySQL to PostgreSQL](/administration-guide/manage/admin/manual-postgres-migration) - A good option if your organization has database administrators to own the migration process, or if you want to learn what the `migration-assist` tool automates for you. ## Frequently asked questions @@ -32,7 +32,7 @@ The tool itself is lightweight and does not require a large server. A server wit ### Do we/will Mattermost bundle pgloader or is that a separate install? -Mattermost doesn't bundle pgloader with the Mattermost server. You will need to install pgloader separately. For more information, see the [install pgloader](/deployment-guide/manual-postgres-migration#install-pgloader) documentation. +Mattermost doesn't bundle pgloader with the Mattermost server. You will need to install pgloader separately. For more information, see the [install pgloader](/administration-guide/manage/admin/manual-postgres-migration#install-pgloader) documentation. ### Are there any other migrations available for plugins, or just Boards, Playbooks, and Calls? @@ -106,7 +106,7 @@ If you receive an error message similar to the following: ERROR mysql: 76 fell through ECASE expression. ``` -It is a [known issue](https://github.com/dimitri/pgloader/issues/1183) with pgloader. You can fix this issue by either compiling `pgloader` from source or simply avoid this by running `pgloader` with our docker image. See: [install pgloader](/deployment-guide/manual-postgres-migration#install-pgloader) for more information. +It is a [known issue](https://github.com/dimitri/pgloader/issues/1183) with pgloader. You can fix this issue by either compiling `pgloader` from source or simply avoid this by running `pgloader` with our docker image. See: [install pgloader](/administration-guide/manage/admin/manual-postgres-migration#install-pgloader) for more information. diff --git a/docs/main/administration-guide/manage/admin/server-configuration.mdx b/docs/main/administration-guide/manage/admin/server-configuration.mdx deleted file mode 100644 index c0fc4e71ff5b..000000000000 --- a/docs/main/administration-guide/manage/admin/server-configuration.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Server configuration" ---- -This Server Configuration Guide is organized into sections to provide you with the tools and knowledge necessary to configure your Mattermost server for improved efficiency, scalability, and functionality. - -Whether you’re setting up email notifications, optimizing search capabilities, enabling high availability, or configuring telemetry, this guide covers all aspects of server setup and management. Use the navigation below to access detailed instructions for each topic. - -- [Store configuration in your database](/administration-guide/configure/configuration-in-your-database) - Learn how to store configuration information in your Mattermost database rather than as a JSON file. -- [Server configuration options](/administration-guide/configure/configuration-settings) - Learn about server configuration options for Mattermost. -- [Set up attribute-based access controls](/administration-guide/manage/admin/attribute-based-access-control) - Learn how to set up attribute-based access controls for your Mattermost instance for Zero Trust Security. -- [Set up Mattermost Agents](/administration-guide/configure/agents-admin-guide) - Learn how to enable AI-powered Agents for your Mattermost instance. -- [Set up auto-translation](/administration-guide/manage/admin/autotranslation) - Learn how to enable and configure automatic message translation for your Mattermost instance. -- [Install Mattermost Boards](/administration-guide/configure/install-boards) - Learn how to install and configure the Boards plugin for your Mattermost instance. -- [Install and manage plugins](/administration-guide/configure/manage-plugins) - Learn how to install, enable, configure, update, and remove plugins for your Mattermost instance. -- [Manage custom user attributes](/administration-guide/manage/admin/user-attributes) - Learn how to manage custom user attributes in user profiles in Mattermost. -- [Environment variables](/administration-guide/configure/environment-variables) - Learn how to use environment variables for Mattermost configuration. -- [Customize the server](/administration-guide/manage/admin/customize-branding) - Learn about customizing branding for Mattermost server. -- [SMTP email setup](/administration-guide/configure/smtp-email) - Learn how to set up SMTP email for Mattermost. -- [Email templates](/administration-guide/configure/email-templates) - Learn about customizing email templates for Mattermost. -- [Chinese, Japanese, and Korean search](/administration-guide/configure/enabling-chinese-japanese-korean-search) - Learn about enabling Chinese, Japanese, and Korean search for Mattermost. -- [SSL client certificate setup](/administration-guide/onboard/ssl-client-certificate) - Learn how to set up SSL client certificates for Mattermost. -- [Connected workspaces](/administration-guide/onboard/connected-workspaces) - Learn how to connect Mattermost workspaces. -- [Telemetry](/administration-guide/manage/telemetry) - Learn about Mattermost telemetry and data collection. -- [Configure Azure Blob Storage as the Mattermost file store](/administration-guide/configure/azure-blob-storage) - Learn how to configure Azure Blob Storage as the Mattermost file store. diff --git a/docs/main/administration-guide/manage/admin/server-maintenance.mdx b/docs/main/administration-guide/manage/admin/server-maintenance.mdx index 06cfc3073df1..405432120db1 100644 --- a/docs/main/administration-guide/manage/admin/server-maintenance.mdx +++ b/docs/main/administration-guide/manage/admin/server-maintenance.mdx @@ -1,17 +1,32 @@ --- title: "Server maintenance" --- -This Server Maintenance Guide is organized into sections that provide the tools and knowledge needed to maintain your Mattermost server effectively, ensuring optimal security, scalability, and reliability. - -Whether you’re installing a license key, performing backups, upgrading the server, or using administrative tools like mmctl and the CLI, this guide offers comprehensive instructions to help you manage your server with confidence. Use the navigation below to access detailed information on each topic. - -- [Install a license key](/administration-guide/manage/admin/installing-license-key) - Learn how to install a license key for Mattermost. -- [Generate a support packet](/administration-guide/manage/admin/generating-support-packet) - Learn how to generate a support packet for Mattermost. -- [Backup and disaster recovery](/deployment-guide/backup-disaster-recovery) - Learn about backup and disaster recovery for Mattermost. -- [Upgrade Mattermost server](/administration-guide/upgrade/upgrade-index) - Learn how to upgrading Mattermost server. -- [Secure Mattermost](/security-guide/secure-mattermost) - Learn about securing Mattermost server. -- [Mattermost error codes](/administration-guide/manage/admin/error-codes) - Learn about Mattermost error codes and troubleshooting. -- [Logging](/administration-guide/manage/logging) - Learn how to customize logging options based on business practices and needs. -- [mmctl](/administration-guide/manage/mmctl-command-line-tool) - Learn about the mmctl command line tool for Mattermost. -- [CLI](/administration-guide/manage/command-line-tools) - Learn about command line tools for Mattermost. -- [Feature labels](/administration-guide/manage/feature-labels) - Learn about Mattermost feature labels and their meanings. +Running Mattermost day to day: who has access to what, the tools you operate the server with, your license and billing, the notices your users see, and getting your data out. + +## Users and access + +- [Users and access](/administration-guide/manage/admin/user-management) - Permissions, roles, user attributes, team and channel membership, and attribute-based access control. + +## Server operations + +- [mmctl command line tool](/administration-guide/manage/mmctl-command-line-tool) - Administer the server from the command line. +- [Command line tools](/administration-guide/manage/command-line-tools) - The `mattermost` binary's own commands. +- [Mattermost logging](/administration-guide/manage/logging) - Customize logging options based on your business practices and needs. + +## Licensing and billing + +- [Self-hosted billing](/administration-guide/manage/admin/self-hosted-billing) - Billing and payment options for self-hosted deployments. +- [Install a license key](/administration-guide/manage/admin/installing-license-key) - Apply a license to a self-hosted deployment. + +## Cloud, notices, and data + +- [Cloud workspace management](/administration-guide/manage/cloud-workspace-management) - Data residency, IP filtering, encryption keys, and workspace export. +- [Data import, export, and migration](/administration-guide/manage/admin/migration) - Bulk import and export, database migration, and FIPS-compliant images. +- [Product limits](/administration-guide/manage/product-limits) and [feature labels](/administration-guide/manage/feature-labels) - What each plan includes, and what a feature label means. + +## Related + +- [Backup and disaster recovery](/deployment-guide/backup-disaster-recovery) - Back up and restore a Mattermost deployment. +- [Upgrade Mattermost Server](/administration-guide/upgrade/upgrade-index) - Upgrade, downgrade, and post-upgrade rollout. +- [Secure Mattermost](/security-guide/secure-mattermost) - Harden your deployment. +- [Monitor and troubleshoot](/administration-guide/manage/admin/monitoring-and-performance) - Metrics, health checks, support packets, and error codes. diff --git a/docs/main/administration-guide/manage/admin/user-management.mdx b/docs/main/administration-guide/manage/admin/user-management.mdx index c394f23371e4..630a186f917c 100644 --- a/docs/main/administration-guide/manage/admin/user-management.mdx +++ b/docs/main/administration-guide/manage/admin/user-management.mdx @@ -1,11 +1,13 @@ --- title: "User management" --- -Welcome to the Mattermost User Management Guide. This User Management Guide is organized into sections to help you manage users, permissions, and roles effectively in your Mattermost workspace. +Who can do what in a workspace that's already running: the roles and permissions you grant, the attributes you record about people, and the policies that decide which teams and channels they can reach. -Whether you’re configuring team and channel settings, managing guest accounts, or leveraging advanced permissions infrastructure, this guide provides the resources and instructions necessary to tailor user management to your organization’s needs. Use the navigation below to explore detailed guidance for each area. +- [User attributes](/administration-guide/manage/admin/user-attributes) - Define custom attributes on user profiles. +- [Manage team and channel members](/administration-guide/manage/team-channel-members) - Add, remove, and change the roles of members. +- [Advanced permissions](/administration-guide/onboard/advanced-permissions) - Customize what each role is allowed to do. +- [Advanced permissions: backend infrastructure](/administration-guide/onboard/advanced-permissions-backend-infrastructure) - How the permissions system is structured. +- [Delegated granular administration](/administration-guide/onboard/delegated-granular-administration) - Grant admin access to part of the System Console. +- [Attribute-based access control](/administration-guide/manage/admin/attribute-based-access-control) - Grant access based on user attributes rather than membership lists. -- [Permissions](/administration-guide/onboard/advanced-permissions) - Learn about permissions in Mattermost. -- [Manage team and channel configuration](/administration-guide/manage/team-channel-members) - Learn about managing team and channel configuration in Mattermost. -- [Advanced permissions infrastructure](/administration-guide/onboard/advanced-permissions-backend-infrastructure) - Learn about advanced permissions infrastructure in Mattermost. -- [Guest accounts](/administration-guide/onboard/guest-accounts) - Learn about guest accounts in Mattermost. +Setting up authentication and creating accounts in the first place is covered in [onboard users](/administration-guide/onboard/onboard-index), including [guest accounts](/administration-guide/onboard/guest-accounts). diff --git a/docs/main/administration-guide/manage/admin/user-provisioning.mdx b/docs/main/administration-guide/manage/admin/user-provisioning.mdx deleted file mode 100644 index c2d92153a668..000000000000 --- a/docs/main/administration-guide/manage/admin/user-provisioning.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "User provisioning" ---- -- [Corporate directory integrations](/product-overview/corporate-directory-integration) - Mattermost integrates with all major account providers via Active Directory, SAML, and OAuth. -- [Provisioning workflows](/administration-guide/onboard/user-provisioning-workflows) - Learn about provisioning workflows in Mattermost. -- [AD/LDAP setup](/administration-guide/onboard/ad-ldap) - Learn how to set up AD/LDAP in Mattermost. -- [AD/LDAP manage team or private channel membership](/administration-guide/onboard/managing-team-channel-membership-using-ad-ldap-sync-groups) - Learn how to manage team or private channel membership using AD/LDAP sync groups in Mattermost. -- [GitLab SSO](/administration-guide/onboard/sso-gitlab) - Learn how to use GitLab SSO in Mattermost. -- [OpenID Connect SSO](/administration-guide/onboard/sso-openidconnect) - Learn how to use about OpenID Connect SSO in Mattermost. -- [Google SSO](/administration-guide/onboard/sso-google) - Learn how to use Google SSO in Mattermost. -- [Entra ID SSO](/administration-guide/onboard/sso-entraid) - Learn how to use Entra ID SSO in Mattermost. -- [Convert OAuth 2.0 providers to OpenID](/administration-guide/onboard/convert-oauth20-service-providers-to-openidconnect) - Learn how to convert OAuth 2.0 providers to OpenID in Mattermost. diff --git a/docs/main/administration-guide/manage/bulk-export-tool.mdx b/docs/main/administration-guide/manage/bulk-export-tool.mdx index 1562069e1cbf..ad36258958ac 100644 --- a/docs/main/administration-guide/manage/bulk-export-tool.mdx +++ b/docs/main/administration-guide/manage/bulk-export-tool.mdx @@ -1,12 +1,12 @@ --- -title: "Bulk export tool" +title: "Bulk export data" --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Moving data from one Mattermost instance into another begins with exporting data to a [JSONL](https://jsonlines.org) file using the [bulk loading feature](/administration-guide/onboard/bulk-loading-data). This tool is useful if you have created a server for a proof of concept, have created another server for production use, and now want to retain the history from the proof of concept instance. +Moving data from one Mattermost instance into another begins with exporting data to a [JSONL](https://jsonlines.org) file, in the same format used to [bulk import data](/administration-guide/onboard/bulk-loading-data). This is useful if you have created a server for a proof of concept, have created another server for production use, and now want to retain the history from the proof of concept instance. You can export the following data types: diff --git a/docs/main/administration-guide/manage/cloud-data-export.mdx b/docs/main/administration-guide/manage/cloud-data-export.mdx index 307de585cc98..2a111d27240b 100644 --- a/docs/main/administration-guide/manage/cloud-data-export.mdx +++ b/docs/main/administration-guide/manage/cloud-data-export.mdx @@ -1,5 +1,5 @@ --- -title: "Mattermost workspace migration" +title: "Migrate between self-hosted and Cloud" --- This document outlines the process for migrating an existing Mattermost instance [from self-hosted to Cloud](#migrate-from-self-hosted-to-cloud), and [from Cloud to self-hosted](#migrate-from-cloud-to-self-hosted). diff --git a/docs/main/administration-guide/manage/cloud-data-residency.mdx b/docs/main/administration-guide/manage/cloud-data-residency.mdx index 7d9538718b7a..a1f90b48e4ad 100644 --- a/docs/main/administration-guide/manage/cloud-data-residency.mdx +++ b/docs/main/administration-guide/manage/cloud-data-residency.mdx @@ -1,5 +1,5 @@ --- -title: "Mattermost Cloud data residency" +title: "Cloud data residency" --- Mattermost Cloud resides in the `aws-us-east-1` region, located in Virginia, United States. The following customer data will be stored at rest in this data center when using Mattermost Cloud: diff --git a/docs/main/administration-guide/manage/cloud-ip-filtering.mdx b/docs/main/administration-guide/manage/cloud-ip-filtering.mdx index 8451b96ad8fb..5418b94fa5f1 100644 --- a/docs/main/administration-guide/manage/cloud-ip-filtering.mdx +++ b/docs/main/administration-guide/manage/cloud-ip-filtering.mdx @@ -1,5 +1,5 @@ --- -title: "Cloud IP Filtering" +title: "Cloud IP filtering" --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/main/administration-guide/manage/cloud-workspace-management.mdx b/docs/main/administration-guide/manage/cloud-workspace-management.mdx index 71a0b5ee66dd..25185d1a104f 100644 --- a/docs/main/administration-guide/manage/cloud-workspace-management.mdx +++ b/docs/main/administration-guide/manage/cloud-workspace-management.mdx @@ -11,7 +11,7 @@ If you're the system admin for a Mattermost self-hosted workspace, see the [Self - [Workspace migration](/administration-guide/manage/cloud-data-export) - Migrate your workspace using the mmctl tool. - [Cloud data residency](/administration-guide/manage/cloud-data-residency) - Find information about your data in the Cloud. -- [Cloud IP Filtering](/administration-guide/manage/cloud-ip-filtering) - Restrict access to your Mattermost Cloud workspace to a specific IP address range. +- [Cloud IP filtering](/administration-guide/manage/cloud-ip-filtering) - Restrict access to your Mattermost Cloud workspace to a specific IP address range. - [Cloud Bring Your Own Key (BYOK)](/administration-guide/manage/cloud-byok) - Learn how to manage data encryption processes within a Mattermost Cloud Enterprise Dedicated deployment. [Book a live demo](https://mattermost.com/request-demo/) or [talk to a Mattermost expert](https://mattermost.com/contact-sales/) to explore tailored solutions for your organization's secure collaboration needs. Or try Mattermost yourself with a [1-hour preview](https://mattermost.com/sign-up/) for instant access to a live sandbox environment. diff --git a/docs/main/administration-guide/manage/command-line-tools.mdx b/docs/main/administration-guide/manage/command-line-tools.mdx index 0663f4c2081e..66dc9fc471eb 100644 --- a/docs/main/administration-guide/manage/command-line-tools.mdx +++ b/docs/main/administration-guide/manage/command-line-tools.mdx @@ -101,7 +101,7 @@ The Docker Install tab details and command references below also apply to the [M -\- The CLI is run in a single node which bypasses the mechanisms that a [High Availability environment](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) uses to perform actions across all nodes in the cluster. As a result, when running [CLI commands](/administration-guide/manage/command-line-tools) in a High Availability environment, tasks that change configuration settings require a server restart. - Parameters in CLI commands are order-specific. - If special characters (`!`, `|`, `(`, `)`, `\`, `'`, or `"`) are used, the entire argument needs to be surrounded by single quotes, or the individual characters need to be escaped out. +\- The CLI is run in a single node which bypasses the mechanisms that a [High Availability environment](/deployment-guide/server/high-availability-cluster-based-deployment) uses to perform actions across all nodes in the cluster. As a result, when running [CLI commands](/administration-guide/manage/command-line-tools) in a High Availability environment, tasks that change configuration settings require a server restart. - Parameters in CLI commands are order-specific. - If special characters (`!`, `|`, `(`, `)`, `\`, `'`, or `"`) are used, the entire argument needs to be surrounded by single quotes, or the individual characters need to be escaped out. @@ -256,7 +256,7 @@ Child Commands - [mattermost export csv](#mattermost-export-csv) - Deprecated from Mattermost v10.5. - [mattermost export global-relay-zip](#mattermost-export-global-relay-zip) - Deprecated from Mattermost v10.5. - [mattermost export schedule](#mattermost-export-schedule) - Schedule a compliance export job. -- [mattermost export bulk](#mattermost-export-bulk) - Export data to a file compatible with the Mattermost [Bulk Import format](/administration-guide/onboard/bulk-loading-data). Deprecated in favor of [mmctl export commands](/administration-guide/manage/mmctl-command-line-tool#mmctl-export). +- [mattermost export bulk](#mattermost-export-bulk) - Export data to a file compatible with the Mattermost [bulk import format](/administration-guide/onboard/bulk-loading-data). Deprecated in favor of [mmctl export commands](/administration-guide/manage/mmctl-command-line-tool#mmctl-export). ### mattermost export actiance @@ -319,7 +319,7 @@ Description Import data into Mattermost. Child Command -- [mattermost import bulk](#mattermost-import-bulk) - Import a Mattermost Bulk Import File. Deprecated in favor of [mmctl import commands](/administration-guide/manage/mmctl-command-line-tool#mmctl-import). +- [mattermost import bulk](#mattermost-import-bulk) - Import a Mattermost bulk import file. Deprecated in favor of [mmctl import commands](/administration-guide/manage/mmctl-command-line-tool#mmctl-import). ### mattermost import bulk diff --git a/docs/main/administration-guide/manage/configure-health-check-probes.mdx b/docs/main/administration-guide/manage/configure-health-check-probes.mdx index acdc9e52425f..a0f82da6c0d2 100644 --- a/docs/main/administration-guide/manage/configure-health-check-probes.mdx +++ b/docs/main/administration-guide/manage/configure-health-check-probes.mdx @@ -9,7 +9,7 @@ Before you begin, you should have a running Mattermost server. If you don't, you -[Highly available Mattermost cluster support](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) requires Mattermost Enterprise. +[Highly available Mattermost cluster support](/deployment-guide/server/high-availability-cluster-based-deployment) requires Mattermost Enterprise. diff --git a/docs/main/administration-guide/manage/logging.mdx b/docs/main/administration-guide/manage/logging.mdx index f1c3056044fc..256acf26561e 100644 --- a/docs/main/administration-guide/manage/logging.mdx +++ b/docs/main/administration-guide/manage/logging.mdx @@ -1046,7 +1046,7 @@ The TCP socket targets can be configured with an IP address or domain name, port -From Mattermost v11.4, debug-level log messages are available to help system admins understand cluster job execution behavior in [high availability](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) deployments for specific Recurring Tasks. +From Mattermost v11.4, debug-level log messages are available to help system admins understand cluster job execution behavior in [high availability](/deployment-guide/server/high-availability-cluster-based-deployment) deployments for specific Recurring Tasks. These debug messages apply only to the following Recurring Tasks: @@ -1097,7 +1097,7 @@ These debug messages only apply to Recurring Tasks. For other job types (Elastic -For more information about leader election and cluster configuration, see [High Availability cluster-based deployment](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment). +For more information about leader election and cluster configuration, see [High Availability cluster-based deployment](/deployment-guide/server/high-availability-cluster-based-deployment). ------------------------------------------------------------------------------------------------------------------------ diff --git a/docs/main/administration-guide/manage/request-server-health-check.mdx b/docs/main/administration-guide/manage/request-server-health-check.mdx index 0a58a7cbf52b..8cce217f2bbb 100644 --- a/docs/main/administration-guide/manage/request-server-health-check.mdx +++ b/docs/main/administration-guide/manage/request-server-health-check.mdx @@ -1,5 +1,5 @@ --- -title: "Request a server Health Check" +title: "Request a server health check" --- diff --git a/docs/main/administration-guide/manage/statistics.mdx b/docs/main/administration-guide/manage/statistics.mdx index 1b45c9607866..e2a932049276 100644 --- a/docs/main/administration-guide/manage/statistics.mdx +++ b/docs/main/administration-guide/manage/statistics.mdx @@ -72,7 +72,7 @@ Master DB Conns The number of active connections currently on your master database. Replica DB Conns -The number of active connections currently on one or more of [your read replica databases](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment#database). +The number of active connections currently on one or more of [your read replica databases](/deployment-guide/server/high-availability-cluster-based-deployment#database). Total Playbooks The total number of collaborative playbooks on this server. diff --git a/docs/main/administration-guide/onboard/bulk-loading-data.mdx b/docs/main/administration-guide/onboard/bulk-loading-data.mdx index 06838e5b8472..4a76d32c3941 100644 --- a/docs/main/administration-guide/onboard/bulk-loading-data.mdx +++ b/docs/main/administration-guide/onboard/bulk-loading-data.mdx @@ -1,9 +1,9 @@ --- -title: "Bulk loading data" +title: "Bulk import data" --- -Large quantities of data can be imported from a [JSONL](https://jsonlines.org) file into Mattermost at the command line using the bulk loading feature. This feature is most suitable for migrating data from an existing system, or for pre-populating a new installation with data. +Large quantities of data can be imported from a [JSONL](https://jsonlines.org) file into Mattermost at the command line using the bulk import feature. This feature is most suitable for migrating data from an existing system, or for pre-populating a new installation with data. You can import the following data types: @@ -29,13 +29,13 @@ You can import the following data types: Importing additional types of posts is not yet supported. -## About the bulk loading command +## About the bulk import command -**The bulk loading command is interruptible and idempotent** +**The bulk import command is interruptible and idempotent** If the import is interrupted for any reason, it continues from where it left off the next time you run it. You can run the command repeatedly with the same data file, and the data is imported only once. Posts with matching timestamps to incoming posts will have their attachments replaced by the incoming data. Prior to v5.20 any updates to posts with matching timestamps were appended to older posts. -**You can run the bulk loading command on a live system** +**You can run the bulk import command on a live system** Although you don't need to shut down Mattermost to run the command, changes made by users of the system between runs can be overwritten if the corresponding fields exist in the data file. @@ -43,19 +43,19 @@ Although you don't need to shut down Mattermost to run the command, changes made Not all fields are mandatory. If an optional field is missing from the object that is being imported, the field's current value in the database is not changed. -**The bulk loading command is not a synchronization tool** +**The bulk import command is not a synchronization tool** -You cannot use the bulk loading command to remove any objects or their fields from the Mattermost database. The command only creates or overwrites fields. +You cannot use the bulk import command to remove any objects or their fields from the Mattermost database. The command only creates or overwrites fields. -The bulk loading command runs in the mmctl and operates in the security context of the mmctl. This means it has full permissions to access and alter everything in the Mattermost database. +The bulk import command runs in the mmctl and operates in the security context of the mmctl. This means it has full permissions to access and alter everything in the Mattermost database. -## Bulk load data +## Bulk import data -Before running the bulk loading command, you must first create a [JSONL](https://jsonlines.org) file that contains the data that you want to import in your Mattermost directory. The file can have any name, but in this example it's called `data.jsonl`. The format of the file is described in the [data-format](/administration-guide/onboard/bulk-loading-data#data-format) section. +Before running the bulk import command, you must first create a [JSONL](https://jsonlines.org) file that contains the data that you want to import in your Mattermost directory. The file can have any name, but in this example it's called `data.jsonl`. The format of the file is described in the [data-format](/administration-guide/onboard/bulk-loading-data#data-format) section. Next, zip it by running the `zip -r data.zip data.jsonl` command. @@ -78,7 +78,7 @@ If you're not running mmctl commands in local mode: The input data file must be a valid [JSONL](https://jsonlines.org) file with the following objects, each on its own line in the file. The objects must occur in the file in the order listed. Version -Mandatory. The Version object must be the first line in the file, and must occur only once. The version is the version of the bulk importer tool, which is currently `1`. +Mandatory. The Version object must be the first line in the file, and must occur only once. The version is the version of the bulk import tool, which is currently `1`. Scheme Optional. If present, Scheme objects must occur after the Version object but before any Team objects. @@ -104,7 +104,7 @@ Optional. If present, DirectChannel objects must occur after all Post objects in DirectPost Optional. If present, DirectPost objects must occur after all other objects in the file. Each DirectPost object defines the usernames of the channel members and the username of the user who posted the message. If the corresponding usernames are not in the data file, then they must exist in the Mattermost database. -With the exception of the Version object, each object has a field or a combination of fields that is used as the unique identifier of that object. The bulk loader uses the unique identifier to determine if the object being imported is a new object or an update to an existing object. +With the exception of the Version object, each object has a field or a combination of fields that is used as the unique identifier of that object. The bulk import command uses the unique identifier to determine if the object being imported is a new object or an update to an existing object. The identifiers for each object are listed in the following table: @@ -724,7 +724,7 @@ For clarity, the object is shown using regular JSON formatting, but in the data - + @@ -1514,8 +1514,8 @@ Disable anti-virus or any other plugins that might interfere with attachment upl ## Troubleshooting -### Running bulk loading tool hangs and doesn't complete +### Running the bulk import tool hangs and doesn't complete If you have Bleve search indexing enabled, temporarily disable it in **System Console \> Experimental \> Bleve** and run the command again. -Bleve does not support multiple processes opening and manipulating the same index. Therefore, if the Mattermost server is running, an attempt to run the bulk loading tool will lock when trying to open the indeces. +Bleve does not support multiple processes opening and manipulating the same index. Therefore, if the Mattermost server is running, an attempt to run the bulk import tool will lock when trying to open the indeces. diff --git a/docs/main/administration-guide/onboard/certificate-based-authentication.mdx b/docs/main/administration-guide/onboard/certificate-based-authentication.mdx index 0b8d062c7791..bcde39c3dfbf 100644 --- a/docs/main/administration-guide/onboard/certificate-based-authentication.mdx +++ b/docs/main/administration-guide/onboard/certificate-based-authentication.mdx @@ -1,5 +1,6 @@ --- title: "Certificate-based authentication (Experimental)" +unlisted: true --- diff --git a/docs/main/administration-guide/onboard/common-converting-oauth-to-openidconnect.mdx b/docs/main/administration-guide/onboard/common-converting-oauth-to-openidconnect.mdx index 60ef7a580dcc..435ed9b45c29 100644 --- a/docs/main/administration-guide/onboard/common-converting-oauth-to-openidconnect.mdx +++ b/docs/main/administration-guide/onboard/common-converting-oauth-to-openidconnect.mdx @@ -1,5 +1,8 @@ --- +unlisted: true --- +{/* Snippet include; not intended to be a standalone page */} + Using the System Console, Mattermost Enterprise and Professional customers can migrate OAuth configuration to the OpenID Connect standard. A one-time, one-click conversion tool is available within the existing **OAuth 2.0** page. You can also go to **System Console \> Authentication \> OpenID Connect**. Select **Convert to OpenID Connect** to migrate your active service provider configuration to the new standard. No further changes are required. diff --git a/docs/main/administration-guide/onboard/convert-oauth20-service-providers-to-openidconnect.mdx b/docs/main/administration-guide/onboard/convert-oauth20-service-providers-to-openidconnect.mdx index c7a8faebc33c..2c2b9ac972d6 100644 --- a/docs/main/administration-guide/onboard/convert-oauth20-service-providers-to-openidconnect.mdx +++ b/docs/main/administration-guide/onboard/convert-oauth20-service-providers-to-openidconnect.mdx @@ -1,5 +1,5 @@ --- -title: "Converting OAuth 2.0 Service Providers to OpenID Connect" +title: "Convert OAuth 2.0 service providers to OpenID Connect" --- import Inc0_common_converting_oauth_to_openidconnect from './common-converting-oauth-to-openidconnect.mdx'; diff --git a/docs/main/product-overview/corporate-directory-integration.mdx b/docs/main/administration-guide/onboard/corporate-directory-integration.mdx similarity index 88% rename from docs/main/product-overview/corporate-directory-integration.mdx rename to docs/main/administration-guide/onboard/corporate-directory-integration.mdx index 9be099e28fa5..b491f8ea2c8f 100644 --- a/docs/main/product-overview/corporate-directory-integration.mdx +++ b/docs/main/administration-guide/onboard/corporate-directory-integration.mdx @@ -1,5 +1,5 @@ --- -title: "Corporate Directory Integration" +title: "Corporate directory integration" --- Mattermost offers advanced security and authentication options for integrating with corporate directories. This guide outlines the options available. @@ -36,7 +36,7 @@ A core set of features is available with all authentication options to help incr -\- New user accounts are created when new users log in with their AD/LDAP credentials. You can optionally pre-create user accounts using the [bulk loading](/administration-guide/onboard/bulk-loading-data) tool. - If you're using email or username and password authentication [users can switch to AD/LDAP manually](/administration-guide/onboard/ad-ldap#getting-started), and the conversion to AD/LDAP can also be done using the [mmctl user migrate auth](/administration-guide/manage/mmctl-command-line-tool#mmctl-user-migrate-auth) command by an IT admin. +\- New user accounts are created when new users log in with their AD/LDAP credentials. You can optionally pre-create user accounts using the [bulk import](/administration-guide/onboard/bulk-loading-data) tool. - If you're using email or username and password authentication [users can switch to AD/LDAP manually](/administration-guide/onboard/ad-ldap#getting-started), and the conversion to AD/LDAP can also be done using the [mmctl user migrate auth](/administration-guide/manage/mmctl-command-line-tool#mmctl-user-migrate-auth) command by an IT admin. diff --git a/docs/main/administration-guide/onboard/managing-team-channel-membership-using-ad-ldap-sync-groups.mdx b/docs/main/administration-guide/onboard/managing-team-channel-membership-using-ad-ldap-sync-groups.mdx index a6d44a3150bd..e52beb58a674 100644 --- a/docs/main/administration-guide/onboard/managing-team-channel-membership-using-ad-ldap-sync-groups.mdx +++ b/docs/main/administration-guide/onboard/managing-team-channel-membership-using-ad-ldap-sync-groups.mdx @@ -1,5 +1,5 @@ --- -title: "Using AD/LDAP synchronized groups to manage team or private channel membership" +title: "Manage team and channel membership with AD/LDAP sync groups" --- diff --git a/docs/main/administration-guide/onboard/migrate-from-rocketchat.mdx b/docs/main/administration-guide/onboard/migrate-from-rocketchat.mdx index 759a19e1fdec..c2f2c9e4362c 100644 --- a/docs/main/administration-guide/onboard/migrate-from-rocketchat.mdx +++ b/docs/main/administration-guide/onboard/migrate-from-rocketchat.mdx @@ -25,7 +25,7 @@ These instructions describe a *best effort* migration designed to preserve the m ## 1. Preparations -This guide assumes you already have a Mattermost server deployed and ready to accept your data. If not, review the [deployment documentation](/deployment-guide/server/server-deployment-planning#deployment-options) first. +This guide assumes you already have a Mattermost server deployed and ready to accept your data. If not, review the [deployment documentation](/deployment-guide/server/deploy-server#deployment-options) first. ### Scope definition diff --git a/docs/main/administration-guide/onboard/migrate-from-slack.mdx b/docs/main/administration-guide/onboard/migrate-from-slack.mdx index 632eab9baa16..7684fe3e022d 100644 --- a/docs/main/administration-guide/onboard/migrate-from-slack.mdx +++ b/docs/main/administration-guide/onboard/migrate-from-slack.mdx @@ -49,7 +49,7 @@ Consider [talking to a Mattermost expert](https://mattermost.com/contact-sales/) Before beginning the migration, it’s important to properly prepare your environment. Careful preparation helps reduce processing time, allows for faster iteration, and minimizes the chance of running into avoidable issues during the import. -This document assumes you already have a Mattermost Server deployed that is ready to accept your Slack data. If not, consider the recommendations in this section in conjunction with the appropriate [deployment documentation](/deployment-guide/server/server-deployment-planning#deployment-options) to make informed decisions about your supporting database and file storage infrastructure. +This document assumes you already have a Mattermost Server deployed that is ready to accept your Slack data. If not, consider the recommendations in this section in conjunction with the appropriate [deployment documentation](/deployment-guide/server/deploy-server#deployment-options) to make informed decisions about your supporting database and file storage infrastructure. #### Scope definition diff --git a/docs/main/administration-guide/onboard/migrate-gitlab-omnibus.mdx b/docs/main/administration-guide/onboard/migrate-gitlab-omnibus.mdx index a0f1cf08cc75..1a1ae3b56f83 100644 --- a/docs/main/administration-guide/onboard/migrate-gitlab-omnibus.mdx +++ b/docs/main/administration-guide/onboard/migrate-gitlab-omnibus.mdx @@ -1,5 +1,5 @@ --- -title: "Migrating from GitLab Omnibus to Mattermost Standalone" +title: "Migrate from GitLab Omnibus to standalone Mattermost" --- ## Overview @@ -41,7 +41,7 @@ This will create a compressed SQL dump file of your Mattermost database. ### Step 2: Prepare the New PostgreSQL Server -Set up your new PostgreSQL server following the official [Mattermost database preparation guidelines](/deployment-guide/server/preparations#database-preparation). This includes: +Set up your new PostgreSQL server following the official [Mattermost database preparation guidelines](/deployment-guide/server/prepare-database). This includes: - Installing the correct PostgreSQL version supported by your Mattermost server. - Creating a new Mattermost database and user with appropriate permissions. @@ -73,7 +73,7 @@ Ensure that credentials, hostnames, and connection settings match your new Postg To move Mattermost application files from the GitLab server to a new standalone server: -1. **Install the same or newer version** of Mattermost on the new server. See the [Server Deployment Planning](/deployment-guide/server/server-deployment-planning#deployment-options). +1. **Install the same or newer version** of Mattermost on the new server. See [Deploy the Mattermost server](/deployment-guide/server/deploy-server#deployment-options). 2. **Copy your existing configuration and data** from the GitLab Omnibus instance: diff --git a/docs/main/administration-guide/onboard/migrating-to-mattermost.mdx b/docs/main/administration-guide/onboard/migrating-to-mattermost.mdx index beca1a12ae2b..8de894f51f7a 100644 --- a/docs/main/administration-guide/onboard/migrating-to-mattermost.mdx +++ b/docs/main/administration-guide/onboard/migrating-to-mattermost.mdx @@ -5,6 +5,8 @@ title: "Migration guide" Migrations help you move your Mattermost deployment or data from one environment to another with minimal disruption. Whether you’re transitioning your Mattermost server to new infrastructure, restructuring your database, or moving from another collaboration platform like Slack, this guide provides step-by-step instructions for each supported path. Use the sections below to quickly find the scenario that matches your needs and follow the recommended process to ensure a smooth migration. +To change the database or container images an existing deployment runs on, see [data export and infrastructure migration](/administration-guide/manage/admin/migration) instead. + [Book a live demo](https://mattermost.com/request-demo/) or [talk to a Mattermost expert](https://mattermost.com/contact-sales/) to explore tailored solutions for your organization's secure collaboration needs. Or try Mattermost yourself with a [1-hour preview](https://mattermost.com/sign-up/) for instant access to a live sandbox environment. ## Move Mattermost to a new server @@ -64,8 +66,8 @@ Migrating from bespoke messengers to Mattermost can be challenging. Because of t If your data in the bespoke messenger is vital, consider: -1. [Mattermost bulk load tool](/administration-guide/onboard/bulk-loading-data): Use the Mattermost bulk load tool to ETL from your bespoke system to Mattermost. -2. [Mattermost ETL framework from BrightScout](https://github.com/Brightscout/mattermost-etl): Consider the Mattermost ETL framework from BrightScout to custom-configure an adapter to plug in to the Bulk Load tool mentioned above. +1. [Mattermost bulk import tool](/administration-guide/onboard/bulk-loading-data): Use the Mattermost bulk import tool to ETL from your bespoke system to Mattermost. +2. [Mattermost ETL framework from BrightScout](https://github.com/Brightscout/mattermost-etl): Consider the Mattermost ETL framework from BrightScout to custom-configure an adapter to plug in to the bulk import tool mentioned above. 3. **Legacy Slack import:** If you only recently switched from Slack to a bespoke tool, consider going back to import the data and users from the old Slack instance directly into Mattermost, leveraging the extensive support for Slack-import provided. 4. **Export to Slack, then import to Mattermost:** [Export Flowdock, Campfire, Chatwork, Hall, or CSV files to Slack](https://slack.com/help/articles/217872578-Import-data-from-one-Slack-workspace-to-another) and then export to a Slack export file and import the file into Mattermost. diff --git a/docs/main/administration-guide/onboard/onboard-index.mdx b/docs/main/administration-guide/onboard/onboard-index.mdx new file mode 100644 index 000000000000..cd3500a629dd --- /dev/null +++ b/docs/main/administration-guide/onboard/onboard-index.mdx @@ -0,0 +1,21 @@ +--- +title: "Onboard users" +sidebar_label: "Onboard users" +--- +Getting your organization into Mattermost: connect the identity provider your users already have, and get their accounts in. + +Access control for a workspace that's already running, including permissions and roles, is covered in [access control](/administration-guide/manage/admin/user-management). + +## Authentication + +- [Single sign-on](/administration-guide/onboard/corporate-directory-integration) - Connect Mattermost to your identity provider using SAML, OpenID Connect, or OAuth 2.0. +- [AD/LDAP](/administration-guide/onboard/ad-ldap) - Synchronize accounts and groups from Active Directory or LDAP. +- [Multi-factor authentication](/administration-guide/onboard/multi-factor-authentication) - Require a second factor at sign-in. +- [SSL client certificate setup](/administration-guide/onboard/ssl-client-certificate) - Configure mutual TLS authentication for browsers and the desktop apps. + +## Accounts + +- [Provisioning workflows](/administration-guide/onboard/user-provisioning-workflows) - Choose how accounts are created, updated, and deactivated. +- [Guest accounts](/administration-guide/onboard/guest-accounts) - Give people outside your organization access to specific channels. + +To pre-provision accounts in bulk, to bring teams, channels, and message history in from another system, or to move an existing deployment onto different infrastructure, see [Migrate](/administration-guide/manage/admin/migration). diff --git a/docs/main/administration-guide/onboard/sso-saml-before-you-begin.mdx b/docs/main/administration-guide/onboard/sso-saml-before-you-begin.mdx index 6c59c55b6762..af8fcd97427a 100644 --- a/docs/main/administration-guide/onboard/sso-saml-before-you-begin.mdx +++ b/docs/main/administration-guide/onboard/sso-saml-before-you-begin.mdx @@ -1,6 +1,9 @@ --- title: "Before you begin" +unlisted: true --- +{/* Snippet include: imported by every SAML identity provider page. */} + Before you begin, you need to generate encryption certificates for encrypting the SAML connection. 1. You can use the [Bash script](https://github.com/mattermost/docs/tree/master/source/scripts/generate-certificates) from the `mattermost/docs` repository on GitHub, or any other suitable method. See the [generate self-signed certificates](https://github.com/mattermost/docs/blob/master/source/scripts/generate-certificates/gencert.md) documentation for details on generating a self-signed x509v3 certificate for use with multiple URLs / IPs. diff --git a/docs/main/administration-guide/onboard/sso-saml-entraid.mdx b/docs/main/administration-guide/onboard/sso-saml-entraid.mdx index 42dda8fa0a24..80d8e525d3c7 100644 --- a/docs/main/administration-guide/onboard/sso-saml-entraid.mdx +++ b/docs/main/administration-guide/onboard/sso-saml-entraid.mdx @@ -12,7 +12,7 @@ This page provides guidance on configuring SAML with Microsoft Entra ID for Matt - Need to configure Entra ID for **OpenID Connect** authentication instead? See the [Entra ID Single Sign-On](/administration-guide/onboard/sso-entraid) documentation for details. -- See the encryption options documentation for details on what [encryption methods](/deployment-guide/encryption-options#saml-encryption-support) Mattermost supports for SAML. +- See the [supported SAML encryption methods](/administration-guide/configure/authentication-configuration-settings#supported-saml-encryption-methods) in the authentication configuration settings documentation. diff --git a/docs/main/administration-guide/onboard/sso-saml-faq.mdx b/docs/main/administration-guide/onboard/sso-saml-faq.mdx index 4bd0911e58f0..88836a00ca82 100644 --- a/docs/main/administration-guide/onboard/sso-saml-faq.mdx +++ b/docs/main/administration-guide/onboard/sso-saml-faq.mdx @@ -1,9 +1,12 @@ --- title: "Frequently Asked Questions" +unlisted: true --- +{/* Snippet include: imported by every SAML identity provider page. */} + ## What encryption options are supported for SAML? -See the encryption options documentation for details on what [encryption methods](/deployment-guide/encryption-options#saml-encryption-support) Mattermost supports for SAML. +See the [supported SAML encryption methods](/administration-guide/configure/authentication-configuration-settings#supported-saml-encryption-methods) in the authentication configuration settings documentation. ## How to bind authentication to Id attribute instead of email diff --git a/docs/main/administration-guide/onboard/sso-saml-keycloak.mdx b/docs/main/administration-guide/onboard/sso-saml-keycloak.mdx index 2558da4f48c3..0e6e34c8c6af 100644 --- a/docs/main/administration-guide/onboard/sso-saml-keycloak.mdx +++ b/docs/main/administration-guide/onboard/sso-saml-keycloak.mdx @@ -8,7 +8,7 @@ import Inc1_sso_saml_faq from './sso-saml-faq.mdx'; The following process provides steps to configure SAML with Keycloak for Mattermost. -See the encryption options documentation for details on what [encryption methods](/deployment-guide/encryption-options#saml-encryption-support) Mattermost supports for SAML. +See the [supported SAML encryption methods](/administration-guide/configure/authentication-configuration-settings#supported-saml-encryption-methods) in the authentication configuration settings documentation. ## Set up Keycloak for Mattermost SSO diff --git a/docs/main/administration-guide/onboard/sso-saml-ldapsync.mdx b/docs/main/administration-guide/onboard/sso-saml-ldapsync.mdx index eb69ee2d22c0..3a908dbb1fb4 100644 --- a/docs/main/administration-guide/onboard/sso-saml-ldapsync.mdx +++ b/docs/main/administration-guide/onboard/sso-saml-ldapsync.mdx @@ -1,6 +1,9 @@ --- title: "Configure SAML synchronization with AD/LDAP" +unlisted: true --- +{/* Snippet include: imported by every SAML identity provider page. */} + In addition to configuring SAML sign-in, you can optionally configure synchronizing SAML accounts with AD/LDAP. When configured: - Mattermost queries AD/LDAP for relevant account information and updates SAML accounts based on changes to attributes (first name, last name, and nickname) diff --git a/docs/main/administration-guide/onboard/sso-saml-okta.mdx b/docs/main/administration-guide/onboard/sso-saml-okta.mdx index 72c349a7cfcb..dd551405a1df 100644 --- a/docs/main/administration-guide/onboard/sso-saml-okta.mdx +++ b/docs/main/administration-guide/onboard/sso-saml-okta.mdx @@ -9,7 +9,7 @@ import Inc2_sso_saml_faq from './sso-saml-faq.mdx'; The following process provides steps to configure SAML 2.0 with Okta for Mattermost. -See the encryption options documentation for details on what [encryption methods](/deployment-guide/encryption-options#saml-encryption-support) Mattermost supports for SAML. +See the [supported SAML encryption methods](/administration-guide/configure/authentication-configuration-settings#supported-saml-encryption-methods) in the authentication configuration settings documentation. diff --git a/docs/main/administration-guide/onboard/sso-saml-onelogin.mdx b/docs/main/administration-guide/onboard/sso-saml-onelogin.mdx index 6b0489c4f3fa..b87a848f7fe3 100644 --- a/docs/main/administration-guide/onboard/sso-saml-onelogin.mdx +++ b/docs/main/administration-guide/onboard/sso-saml-onelogin.mdx @@ -9,7 +9,7 @@ import Inc2_sso_saml_faq from './sso-saml-faq.mdx'; The following process provides steps to configure SAML 2.0 with OneLogin for Mattermost. -See the encryption options documentation for details on what [encryption methods](/deployment-guide/encryption-options#saml-encryption-support) Mattermost supports for SAML. +See the [supported SAML encryption methods](/administration-guide/configure/authentication-configuration-settings#supported-saml-encryption-methods) in the authentication configuration settings documentation. diff --git a/docs/main/administration-guide/onboard/sso-saml-technical.mdx b/docs/main/administration-guide/onboard/sso-saml-technical.mdx index 2c04afa12d01..59341a1fa365 100644 --- a/docs/main/administration-guide/onboard/sso-saml-technical.mdx +++ b/docs/main/administration-guide/onboard/sso-saml-technical.mdx @@ -15,7 +15,7 @@ Using this URL populates the SAML SSO URL and the Identity Provider Issuer URL f This is currently supported for Okta and Microsoft ADFS server 2012 and 2016. -For detailed steps, view the [Configure SAML with Okta](/administration-guide/onboard/sso-saml-okta), [Configure SAML with Microsoft ADFS for Windows Server 2012](/administration-guide/onboard/sso-saml-adfs), and [Configure SAML with Microsoft ADFS using Microsoft Windows Server 2016](/administration-guide/onboard/sso-saml-adfs-msws2016) documentation. See the encryption options documentation for details on what [encryption methods](/deployment-guide/encryption-options#saml-encryption-support) Mattermost supports for SAML, including AES-192-GCM and AES-256-GCM encryption support introduced in v10.9. +For detailed steps, view the [Configure SAML with Okta](/administration-guide/onboard/sso-saml-okta), [Configure SAML with Microsoft ADFS for Windows Server 2012](/administration-guide/onboard/sso-saml-adfs), and [Configure SAML with Microsoft ADFS using Microsoft Windows Server 2016](/administration-guide/onboard/sso-saml-adfs-msws2016) documentation. See the [supported SAML encryption methods](/administration-guide/configure/authentication-configuration-settings#supported-saml-encryption-methods) in the authentication configuration settings documentation. ## SAML providers diff --git a/docs/main/administration-guide/onboard/sso-saml.mdx b/docs/main/administration-guide/onboard/sso-saml.mdx index 61e76d30b346..bd87815ed1fe 100644 --- a/docs/main/administration-guide/onboard/sso-saml.mdx +++ b/docs/main/administration-guide/onboard/sso-saml.mdx @@ -25,7 +25,7 @@ The SAML Single sign-on integration offers the following benefits: - If an ID attribute that doesn't change, such as employeeID, is configured, then Mattermost can use this consistent ID to recognize and match the user account. This allows for updates to other attributes, such as email, without creating a new account. The user details are updated based on the non-changing ID attribute, ensuring continuity and correct user identification without duplicate accounts. - If configuring Mattermost to use the EU-Login system for authentication, please be aware that their issuerURI field is what Mattermost calls "Service Provider Identifier". - For more information about SAML, see [this article from Varonis](https://www.varonis.com/blog/what-is-saml/), and [this conceptual example from DUO](https://duo.com/blog/the-beer-drinkers-guide-to-saml). -- See the encryption options documentation for details on what [encryption methods](/deployment-guide/encryption-options#saml-encryption-support) Mattermost supports for SAML. +- See the [supported SAML encryption methods](/administration-guide/configure/authentication-configuration-settings#supported-saml-encryption-methods) in the authentication configuration settings documentation. diff --git a/docs/main/administration-guide/onboard/user-provisioning-workflows.mdx b/docs/main/administration-guide/onboard/user-provisioning-workflows.mdx index acf24420634f..6b28a303256b 100644 --- a/docs/main/administration-guide/onboard/user-provisioning-workflows.mdx +++ b/docs/main/administration-guide/onboard/user-provisioning-workflows.mdx @@ -8,7 +8,7 @@ This document provides an overview of user provisioning and deprovisioning workf There are currently 3 recommended user provisioning workflows in Mattermost: 1. **On demand:** If user accounts are not pre-provisioned using one of the methods described below, then a new user account will be provisioned when the user first logs in. When the user logs in, they are asked to select a public team to join (all users must belong to at least one team) and then they are added automatically to the Town Square channel. Mattermost also has a [default channel setting](/administration-guide/configure/experimental-configuration-settings#default-channels) that enables system admins to add everyone to additional channels specified by the organization. -2. **Pre-provisioned via bulk import:** Mattermost features a [bulk data loading tool](/administration-guide/onboard/bulk-loading-data) that can be used for pre-provisioning new users by adding them to teams and channels before their first login to Mattermost. This tool automates the creation of Teams, Channels, Users, and Posts (with file attachments). It can also be used to migrate users and content from an existing system. +2. **Pre-provisioned via bulk import:** Mattermost features a [bulk import tool](/administration-guide/onboard/bulk-loading-data) that can be used for pre-provisioning new users by adding them to teams and channels before their first login to Mattermost. This tool automates the creation of Teams, Channels, Users, and Posts (with file attachments). It can also be used to migrate users and content from an existing system. 3. **Mattermost API:** The Mattermost [RESTful API](https://api.mattermost.com) can be used to pre-provision new user accounts as well as add and remove them from teams and channels. This model is commonly used by enterprises that have central account provisioning applications. ## Mattermost user identifier diff --git a/docs/main/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring.mdx b/docs/main/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring.mdx index f4669dfaddb0..1306095d4ad6 100644 --- a/docs/main/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring.mdx +++ b/docs/main/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring.mdx @@ -3,7 +3,7 @@ title: "Deploy Prometheus and Grafana for performance monitoring" --- -Performance monitoring support enables admins to track system health for large Enterprise deployments through integrations with [Prometheus](https://prometheus.io/) and [Grafana](https://grafana.com/). These integrations support data collection from several Mattermost servers, which is particularly useful if you're running Mattermost [in high availability mode](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment). Once you're tracking system health, you can [set up performance alerts](/administration-guide/scale/performance-alerting) on your Grafana dashboard. +Performance monitoring support enables admins to track system health for large Enterprise deployments through integrations with [Prometheus](https://prometheus.io/) and [Grafana](https://grafana.com/). These integrations support data collection from several Mattermost servers, which is particularly useful if you're running Mattermost [in high availability mode](/deployment-guide/server/high-availability-cluster-based-deployment). Once you're tracking system health, you can [set up performance alerts](/administration-guide/scale/performance-alerting) on your Grafana dashboard. Admins can collect and store various data points from the Mattermost application in an [OpenMetrics](https://openmetrics.io) format by [deploying Prometheus](#install-prometheus) and [Grafana](#install-grafana). diff --git a/docs/main/administration-guide/scale/ensuring-releases-perform-at-scale.mdx b/docs/main/administration-guide/scale/ensuring-releases-perform-at-scale.mdx index b82281d1c7d8..e0a1ea2798ba 100644 --- a/docs/main/administration-guide/scale/ensuring-releases-perform-at-scale.mdx +++ b/docs/main/administration-guide/scale/ensuring-releases-perform-at-scale.mdx @@ -1,5 +1,5 @@ --- -title: "Ensuring Releases Perform at Scale" +title: "Ensure releases perform at scale" --- diff --git a/docs/main/administration-guide/scale/performance-alerting.mdx b/docs/main/administration-guide/scale/performance-alerting.mdx index 55ff741f0304..21d6c3a1ae76 100644 --- a/docs/main/administration-guide/scale/performance-alerting.mdx +++ b/docs/main/administration-guide/scale/performance-alerting.mdx @@ -1,5 +1,5 @@ --- -title: "Mattermost performance alerting guide" +title: "Performance alerting" --- diff --git a/docs/main/administration-guide/upgrade/admin-onboarding-tasks.mdx b/docs/main/administration-guide/upgrade/admin-onboarding-tasks.mdx index fa4843bea074..b6fa1f60166b 100644 --- a/docs/main/administration-guide/upgrade/admin-onboarding-tasks.mdx +++ b/docs/main/administration-guide/upgrade/admin-onboarding-tasks.mdx @@ -26,7 +26,7 @@ These settings can also be set in the `config.json` file. Please see our [config 3. Begin to onboard users by enabling account creation or by connecting an authentication service to assist with user provisioning. -- Users can be pre-provisioned with migration and bulk loading data processes based on prior collaboration systems. Please see our [migration guide](/administration-guide/onboard/migrating-to-mattermost#migration-guide) and [bulk loading documentation](/administration-guide/onboard/bulk-loading-data) for additional details. +- Users can be pre-provisioned with migration and bulk import processes based on prior collaboration systems. Please see our [migration guide](/administration-guide/onboard/migrating-to-mattermost#migration-guide) and [bulk import documentation](/administration-guide/onboard/bulk-loading-data) for additional details. - [AD/LDAP authentication](/administration-guide/onboard/ad-ldap) and [SAML authentication](/administration-guide/onboard/sso-saml) are available for some subscription plans, providing identity management, single sign-on, and automatic account provisioning. If your organization requires more structure and project management artifacts for the implementation of Mattermost, please see our [Enterprise roll out checklist](/administration-guide/upgrade/enterprise-roll-out-checklist). @@ -135,10 +135,10 @@ Email notifications can be batched together so users don’t get overwhelmed wit Enable email notifications first by setting **System Console \> Notifications \> Enable Email Notifications** to **true**. See the [Enable email notifications](/administration-guide/configure/site-configuration-settings#enable-email-notifications) configuration settings documentation for details. Note that email notifications require an [SMTP email server](/administration-guide/configure/environment-configuration-settings#smtp-server) to be configured. -Then, enable batched email notifications by setting **System Console \> Notifications \> Enable Email Batching** to **true**. See the [Enable email batching](/administration-guide/configure/site-configuration-settings#enable-email-batching) configuration settings documentation for details. Note that email batching is not available if you are running your deployment in [High Availability](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment). +Then, enable batched email notifications by setting **System Console \> Notifications \> Enable Email Batching** to **true**. See the [Enable email batching](/administration-guide/configure/site-configuration-settings#enable-email-batching) configuration settings documentation for details. Note that email batching is not available if you are running your deployment in [High Availability](/deployment-guide/server/high-availability-cluster-based-deployment). **9. Enable Elasticsearch** -Mattermost Enterprise customers can enable [enterprise search](/deployment-guide/reference-architecture/scale/enterprise-search) for optimized search performance at enterprise-scale. Both Elasticsearch and AWS OpenSearch solve many known issues with full text message search in the database, such as dots, dashes, and email addresses returning unexpected results. Before enabling, review the [enterprise search limitations](/deployment-guide/reference-architecture/scale/common-configure-mattermost-for-enterprise-search#enterprise-search-limitations), as some user search behavior differs from database search. +Mattermost Enterprise customers can enable [enterprise search](/deployment-guide/scale/enterprise-search) for optimized search performance at enterprise-scale. Both Elasticsearch and AWS OpenSearch solve many known issues with full-text message search in the database, such as dots, dashes, and email addresses returning unexpected results. Before enabling, review the [enterprise search limitations](/deployment-guide/scale/common-configure-mattermost-for-enterprise-search#enterprise-search-limitations), as some user search behavior differs from database search. -Enable Elasticsearch by setting **System Console \> Elasticsearch \> Enable Indexing** to **true**. See the [Elasticsearch](/administration-guide/configure/environment-configuration-settings#enterprise-search) configuration settings documentation for details. Enabling Elasticsearch requires [setting up an Elasticsearch server](/deployment-guide/reference-architecture/scale/elasticsearch-setup#set-up-elasticsearch). +Enable Elasticsearch by setting **System Console \> Elasticsearch \> Enable Indexing** to **true**. See the [Elasticsearch](/administration-guide/configure/environment-configuration-settings#enterprise-search) configuration settings documentation for details. Enabling Elasticsearch requires [setting up an Elasticsearch server](/deployment-guide/scale/elasticsearch-setup#set-up-elasticsearch). diff --git a/docs/main/administration-guide/upgrade/enterprise-roll-out-checklist.mdx b/docs/main/administration-guide/upgrade/enterprise-roll-out-checklist.mdx index aad306fee82a..aaf6575cc666 100644 --- a/docs/main/administration-guide/upgrade/enterprise-roll-out-checklist.mdx +++ b/docs/main/administration-guide/upgrade/enterprise-roll-out-checklist.mdx @@ -1,5 +1,5 @@ --- -title: "Enterprise roll out checklist" +title: "Enterprise roll-out checklist" --- @@ -79,7 +79,7 @@ Much of the preparation work is focused on ensuring the environment is deployed - Define and configure authentication policies -> - Resource: [https://docs.mattermost.com/product-overview/corporate-directory-integration.html](https://docs.mattermost.com/product-overview/corporate-directory-integration.html) +> - Resource: [https://docs.mattermost.com/administration-guide/onboard/corporate-directory-integration.html](https://docs.mattermost.com/administration-guide/onboard/corporate-directory-integration.html) - Determine requirements for multi-factor authentication @@ -103,7 +103,7 @@ Much of the preparation work is focused on ensuring the environment is deployed - Finalize production environment design basing hardware on expected usage and requirements for high availability -> - Resource: [https://docs.mattermost.com/deployment-guide/reference-architecture/application-architecture.html](https://docs.mattermost.com/deployment-guide/reference-architecture/application-architecture.html) +> - Resource: [https://docs.mattermost.com/deployment-guide/application-architecture.html](https://docs.mattermost.com/deployment-guide/application-architecture.html) > - Resource: [https://docs.mattermost.com/deployment-guide/deployment-guide-index.html](https://docs.mattermost.com/deployment-guide/deployment-guide-index.html) > - Resource: [https://docs.mattermost.com/administration-guide/scale/scaling-for-enterprise.html](https://docs.mattermost.com/administration-guide/scale/scaling-for-enterprise.html) > - Resource: [https://docs.mattermost.com/administration-guide/scale/high-availability-cluster-based-deployment.html](https://docs.mattermost.com/administration-guide/scale/high-availability-cluster-based-deployment.html) @@ -126,7 +126,7 @@ Much of the preparation work is focused on ensuring the environment is deployed > > > - Install the number of read and search replicas based on your high availability requirements outlined in your production environment design > > -> > > - Resource: [https://docs.mattermost.com/deployment-guide/reference-architecture/application-architecture.html](https://docs.mattermost.com/deployment-guide/reference-architecture/application-architecture.html) +> > > - Resource: [https://docs.mattermost.com/deployment-guide/application-architecture.html](https://docs.mattermost.com/deployment-guide/application-architecture.html) > > > > - (Optional) Set up configuration management via the database instead of a config file for high available environments > > @@ -134,7 +134,7 @@ Much of the preparation work is focused on ensuring the environment is deployed > > - Install and configure File Storage > -> > - Resource: [https://docs.mattermost.com/deployment-guide/server/preparations.html#file-storage-preparation](https://docs.mattermost.com/deployment-guide/server/preparations.html#file-storage-preparation) +> > - Resource: [Set up file storage](/deployment-guide/server/prepare-file-storage) > > - Install and configure proxy or load balancers > @@ -280,7 +280,7 @@ Now that you have an environment in place, we recommend working through the foll > - Resource: [https://docs.mattermost.com/administration-guide/onboard/user-provisioning-workflows.html](https://docs.mattermost.com/administration-guide/onboard/user-provisioning-workflows.html) -- (Optional) Bulk Load users +- (Optional) Bulk import users > - Resource: [https://docs.mattermost.com/administration-guide/onboard/bulk-loading-data.html](https://docs.mattermost.com/administration-guide/onboard/bulk-loading-data.html) diff --git a/docs/main/administration-guide/upgrade/important-upgrade-notes.mdx b/docs/main/administration-guide/upgrade/important-upgrade-notes.mdx index 1c44f2ba2432..bdffe64238e2 100644 --- a/docs/main/administration-guide/upgrade/important-upgrade-notes.mdx +++ b/docs/main/administration-guide/upgrade/important-upgrade-notes.mdx @@ -1,5 +1,5 @@ --- -title: "Important Upgrade Notes" +title: "Important upgrade notes" --- import Inc0_common_esr_support_rst from '../../product-overview/common-esr-support-rst.mdx'; @@ -567,7 +567,7 @@ DELETE FROM threadmemberships WHERE (postid, userid) IN ( - + diff --git a/docs/main/administration-guide/upgrade/open-source-components.mdx b/docs/main/administration-guide/upgrade/open-source-components.mdx index 4738928bb668..145a96a49437 100644 --- a/docs/main/administration-guide/upgrade/open-source-components.mdx +++ b/docs/main/administration-guide/upgrade/open-source-components.mdx @@ -1,5 +1,5 @@ --- -title: "Open Source Components" +title: "Open source components" --- diff --git a/docs/main/administration-guide/upgrade/prepare-to-upgrade-mattermost.mdx b/docs/main/administration-guide/upgrade/prepare-to-upgrade-mattermost.mdx index ba9b2218aa8c..82eb3b02b21e 100644 --- a/docs/main/administration-guide/upgrade/prepare-to-upgrade-mattermost.mdx +++ b/docs/main/administration-guide/upgrade/prepare-to-upgrade-mattermost.mdx @@ -111,9 +111,9 @@ UPDATE TableName SET ColumnName = regexp_replace(ColumnName, '\\u0000', '', 'g') ## Upgrade high availability cluster-based deployments -In [high availability cluster-based](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) environments, you should expect to schedule downtime for the upgrade to v6.0. Based on your database size and setup, the migration to v6.0 can take a significant amount of time, and may even lock the tables for posts which will prevent your users from posting or receiving messages until the migration is complete. +In [high availability cluster-based](/deployment-guide/server/high-availability-cluster-based-deployment) environments, you should expect to schedule downtime for the upgrade to v6.0. Based on your database size and setup, the migration to v6.0 can take a significant amount of time, and may even lock the tables for posts which will prevent your users from posting or receiving messages until the migration is complete. -Ensure you review the [high availability cluster-based deployment upgrade guide](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment#upgrade-guide), as well as the [important upgrade notes](/administration-guide/upgrade/important-upgrade-notes) to make sure you're aware of any actions you need to take before or after upgrading from your particular version. +Ensure you review the [high availability cluster-based deployment upgrade guide](/deployment-guide/server/high-availability-cluster-based-deployment#upgrade-guide), as well as the [important upgrade notes](/administration-guide/upgrade/important-upgrade-notes) to make sure you're aware of any actions you need to take before or after upgrading from your particular version. diff --git a/docs/main/administration-guide/upgrade/upgrade-index.mdx b/docs/main/administration-guide/upgrade/upgrade-index.mdx index efcdf25863c7..eac398361d6a 100644 --- a/docs/main/administration-guide/upgrade/upgrade-index.mdx +++ b/docs/main/administration-guide/upgrade/upgrade-index.mdx @@ -13,8 +13,14 @@ Stay up to date with the latest features and improvements. - [Upgrade Mattermost in Kubernetes and High Availability environments](/administration-guide/upgrade/upgrade-mattermost-kubernetes-ha) - Learn how to upgrade Mattermost in Kubernetes and High Availability environments. - [Upgrade PostgreSQL](/administration-guide/upgrade/upgrading-postgres) - Learn how to upgrade your PostgreSQL database server. - [Upgrade Team Edition to Enterprise Edition](/administration-guide/upgrade/enterprise-install-upgrade) - Learn how to upgrade your Mattermost Team Edition server to Enterprise Edition. +- [Downgrade Mattermost Server](/administration-guide/upgrade/downgrading-mattermost-server) - Find out how to roll back to older versions of Mattermost. + +## After you upgrade + - [Administrator onboarding tasks](/administration-guide/upgrade/admin-onboarding-tasks) - Learn about the onboarding tasks for administrators after an upgrade. -- [Enterprise roll-out-checklist](/administration-guide/upgrade/enterprise-roll-out-checklist) - Learn about the roll-out checklist for enterprise users. +- [Enterprise roll-out checklist](/administration-guide/upgrade/enterprise-roll-out-checklist) - Learn about the roll-out checklist for enterprise users. - [Welcome email to end users](/administration-guide/upgrade/welcome-email-to-end-users) - Learn how to send a welcome email to end users after an upgrade. -- [Downgrade Mattermost Server](/administration-guide/upgrade/downgrading-mattermost-server) - Find out how to roll back to older versions of Mattermost. + +## Reference + - [Open source components](/administration-guide/upgrade/open-source-components) - Find out about the open source components used in Mattermost. diff --git a/docs/main/administration-guide/upgrade/upgrade-mattermost-kubernetes-ha.mdx b/docs/main/administration-guide/upgrade/upgrade-mattermost-kubernetes-ha.mdx index 29b79648f210..a948ab405788 100644 --- a/docs/main/administration-guide/upgrade/upgrade-mattermost-kubernetes-ha.mdx +++ b/docs/main/administration-guide/upgrade/upgrade-mattermost-kubernetes-ha.mdx @@ -17,7 +17,7 @@ Health monitoring ensures that only healthy pods are replaced, and new pods are ### High Availability -In [High Availability (HA) cluster-based deployments](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment), Mattermost runs multiple application servers in a cluster. This configuration ensures that if one server fails, others can continue to serve requests without downtime. User traffic load balancing is managed with services such as NGINX Ingress or HAProxy. [PostgreSQL](/deployment-guide/server/preparations#database-preparation) and [file storage](/deployment-guide/server/preparations#file-storage-preparation) are deployed with replication for redundancy and failover. +In [High Availability (HA) cluster-based deployments](/deployment-guide/server/high-availability-cluster-based-deployment), Mattermost runs multiple application servers in a cluster. This configuration ensures that if one server fails, others can continue to serve requests without downtime. User traffic load balancing is managed with services such as NGINX Ingress or HAProxy. [PostgreSQL](/deployment-guide/server/prepare-database) and [file storage](/deployment-guide/server/prepare-file-storage) are deployed with replication for redundancy and failover. ### Active/Active deployments diff --git a/docs/main/administration-guide/upgrade/upgrading-mattermost-server.mdx b/docs/main/administration-guide/upgrade/upgrading-mattermost-server.mdx index a7062e59fb24..5d02b4cc274b 100644 --- a/docs/main/administration-guide/upgrade/upgrading-mattermost-server.mdx +++ b/docs/main/administration-guide/upgrade/upgrading-mattermost-server.mdx @@ -52,7 +52,7 @@ To learn how to safely upgrade your deployment in Kubernetes for High Availabili -**Before upgrading to Mattermost v11.0**: If you're currently using Bleve search (found under **System Console \> Experimental \> Bleve**), ensure that `DisableDatabaseSearch` is set to `false` before upgrading, or search will become non-functional after the upgrade. Bleve search has been removed in v11.0. For enterprise search capabilities, consider migrating to [Elasticsearch](/deployment-guide/reference-architecture/scale/elasticsearch-setup) or [OpenSearch](/deployment-guide/reference-architecture/scale/opensearch-setup) for [enterprise search](/deployment-guide/reference-architecture/scale/enterprise-search) capabilities. +**Before upgrading to Mattermost v11.0**: If you're currently using Bleve search (found under **System Console \> Experimental \> Bleve**), ensure that `DisableDatabaseSearch` is set to `false` before upgrading, or search will become non-functional after the upgrade. Bleve search has been removed in v11.0. For enterprise search capabilities, consider migrating to [Elasticsearch](/deployment-guide/scale/elasticsearch-setup) or [OpenSearch](/deployment-guide/scale/opensearch-setup) for [enterprise search](/deployment-guide/scale/enterprise-search) capabilities. @@ -252,7 +252,7 @@ wget https://releases.mattermost.com/X.X.X/mattermost-team-X.X.X-linux-amd64.tar sudo rm -i /tmp/mattermost*.gz ``` -13. If you're using a [high availability](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) deployment, you need to apply the steps above on every node in your cluster. Once complete, the **Config File MD5** columns in the high availability section of the System Console should be green. If they're yellow, please ensure that all nodes have the same server version and the same configuration. +13. If you're using a [high availability](/deployment-guide/server/high-availability-cluster-based-deployment) deployment, you need to apply the steps above on every node in your cluster. Once complete, the **Config File MD5** columns in the high availability section of the System Console should be green. If they're yellow, please ensure that all nodes have the same server version and the same configuration. If they continue to display as yellow, trigger a configuration propagation across the cluster by opening the System Console, changing a setting, and reverting it. This will enable the **Save** button for that page. Then, select **Save**. This will not change any configuration, but sends the existing configuration to all nodes in the cluster. diff --git a/docs/main/deployment-guide/air-gapped-operations/disable-phone-home-features.mdx b/docs/main/deployment-guide/air-gapped-operations/disable-phone-home-features.mdx index e71c19b1cb3b..2430e64bc98f 100644 --- a/docs/main/deployment-guide/air-gapped-operations/disable-phone-home-features.mdx +++ b/docs/main/deployment-guide/air-gapped-operations/disable-phone-home-features.mdx @@ -1,5 +1,5 @@ --- -title: Configure for Air-Gapped Operation +title: "Configure for Air-Gapped Operation" sidebar_position: 3 description: Server settings that depend on internet access and should be disabled or adjusted for an air-gapped deployment. --- @@ -7,8 +7,6 @@ description: Server settings that depend on internet access and should be disabl -# Configure for Air-Gapped Operation - After successful deployment, you'll need to configure Mattermost for air-gapped operation. The following sections describe features that rely on internet access and offer recommendations for settings. ## Mobile push notifications diff --git a/docs/main/deployment-guide/air-gapped-operations/index.mdx b/docs/main/deployment-guide/air-gapped-operations/index.mdx index 03b19b4c49b5..5e21bf5170ec 100644 --- a/docs/main/deployment-guide/air-gapped-operations/index.mdx +++ b/docs/main/deployment-guide/air-gapped-operations/index.mdx @@ -1,14 +1,11 @@ --- -title: Air-Gapped Operations -sidebar_position: 5 +title: "Air-Gapped Operations" description: Deploy and operate Mattermost in a self-hosted air-gapped environment with no direct internet access. --- -# Air-Gapped Operations - An air-gapped environment is one that's isolated from the public internet, requiring all necessary components to be available locally. This section outlines what you'll need to deploy and operate Mattermost in a self-hosted air-gapped environment — preparation, deployment guidance, and the configuration changes required for a successful deployment. Deploying Mattermost in an air-gapped environment requires preparing all necessary software, container images, and configuration resources in advance, since the target system has no direct internet access; transferring these artifacts to the isolated network using secure media; and then installing, configuring, and validating the deployment within the air-gapped environment. @@ -21,6 +18,8 @@ Consider [talking to a Mattermost expert](https://mattermost.com/contact-sales/) ## In this section -- [Deployment Overview](/deployment-guide/air-gapped-operations/quick-start-runbook) — the high-level steps to prepare for and complete an air-gapped install. +- [Air-gapped deployment runbook](/deployment-guide/air-gapped-operations/quick-start-runbook) — the high-level steps to prepare for and complete an air-gapped install. - [Bill of Materials and Registry Mirroring](/deployment-guide/air-gapped-operations/mirror-package-repositories) — what to gather before you cross the air gap, and how to set up a private package mirror or container registry. - [Configure for Air-Gapped Operation](/deployment-guide/air-gapped-operations/disable-phone-home-features) — server settings that depend on internet access and should be disabled or adjusted. + +For the architectural context — when an organization needs an air gap, and which Mattermost capabilities it rules out — see the [Deploy in Air-Gapped Environments](/deployment-guide/deployment-scenarios/air-gapped-deployment) deployment scenario. diff --git a/docs/main/deployment-guide/air-gapped-operations/mirror-package-repositories.mdx b/docs/main/deployment-guide/air-gapped-operations/mirror-package-repositories.mdx index d6f458ad4d2c..f2c51f5a3511 100644 --- a/docs/main/deployment-guide/air-gapped-operations/mirror-package-repositories.mdx +++ b/docs/main/deployment-guide/air-gapped-operations/mirror-package-repositories.mdx @@ -1,5 +1,5 @@ --- -title: Bill of Materials and Registry Mirroring +title: "Bill of Materials and Registry Mirroring" sidebar_position: 2 description: Gather the packages, images, and certificates you need before crossing the air gap, and set up a private registry or package mirror. --- @@ -9,8 +9,6 @@ import Tabs from '@theme/Tabs'; -# Bill of Materials and Registry Mirroring - On an internet-connected machine, you must gather all required packages, container images, and dependencies needed for the installation process. The resources you'll need will depend on your deployment method. ## Bill of materials @@ -88,6 +86,24 @@ Mattermost includes a number of [pre-built integrations](/integrations-guide/pop If your deployment requires SSL, ensure you have the necessary certificates. This includes certificates and keys for enabling HTTPS with Mattermost, as well as any CA files or certificates needed to access internal services such as LDAP or SAML. See [Setup TLS](/deployment-guide/server/setup-tls) for configuration details. +## Local documentation + +Mattermost documentation can be built and served locally so that installation and configuration guidance is available inside the air-gapped environment. Clone the [mattermost/mattermost repository](https://github.com/mattermost/mattermost) on your internet-connected machine, build the documentation site, and transfer the generated static output across the air gap alongside the rest of your bill of materials. + +**Prerequisites** + +- Git [\[download\]](https://git-scm.com/downloads) +- Node.js 20 or later [\[download\]](https://nodejs.org/en/download) + +```bash +git clone https://github.com/mattermost/mattermost.git +cd mattermost/docs/site +npm ci +npm run build +``` + +The build writes a self-contained static site to `docs/site/build/`, which you can serve from any web server in the air-gapped environment. See the [documentation site README](https://github.com/mattermost/mattermost/blob/master/docs/site/README.md) for the full build options, including how to skip the API reference generation step if you don't need it. + ## Set up a private registry or mirror A private container registry securely stores the Docker images necessary for air-gapped deployments, ensuring compliance with data isolation requirements. Similarly, a private package mirror stores operating system packages necessary for air-gapped deployments in Ubuntu or RHEL/CentOS Linux environments. Setting up a local registry or mirror is a critical step in deploying Mattermost to ensure all images, dependencies, and packages are available to you in the air-gapped environment. The steps below outline the process required to set up a local registry or mirror, depending on the deployment method you are using. These steps are a rough guide, and can be supplemented with online resources depending on your specific deployment needs. diff --git a/docs/main/deployment-guide/air-gapped-operations/quick-start-runbook.mdx b/docs/main/deployment-guide/air-gapped-operations/quick-start-runbook.mdx index a4c08d5f2031..3f82e9ad6697 100644 --- a/docs/main/deployment-guide/air-gapped-operations/quick-start-runbook.mdx +++ b/docs/main/deployment-guide/air-gapped-operations/quick-start-runbook.mdx @@ -1,5 +1,5 @@ --- -title: Deployment Overview +title: Air-gapped deployment runbook sidebar_position: 1 description: The high-level steps to prepare for and complete a self-hosted air-gapped Mattermost deployment. --- @@ -7,11 +7,9 @@ description: The high-level steps to prepare for and complete a self-hosted air- -# Air-Gapped Deployment Overview - This is a summary of the steps involved in deploying Mattermost in an air-gapped environment. -1. **Select your preferred Mattermost deployment option.** This step is often dictated by the infrastructure already running in your air-gapped environment. If you're deploying from scratch, review our [server deployment documentation](/deployment-guide/server/server-deployment-planning#deployment-options) to select the optimal option given your organization's needs. +1. **Select your preferred Mattermost deployment option.** This step is often dictated by the infrastructure already running in your air-gapped environment. If you're deploying from scratch, review our [server deployment documentation](/deployment-guide/server/deploy-server#deployment-options) to select the optimal option given your organization's needs. 2. **Set up a private container registry or package mirror.** Ideally the air-gapped environment already has a private container registry or package mirror available. If not, see [Bill of Materials and Registry Mirroring](./mirror-package-repositories) for setup guidance. diff --git a/docs/main/deployment-guide/reference-architecture/application-architecture.mdx b/docs/main/deployment-guide/application-architecture.mdx similarity index 98% rename from docs/main/deployment-guide/reference-architecture/application-architecture.mdx rename to docs/main/deployment-guide/application-architecture.mdx index 3975c01d6b96..60f0f3190b1a 100644 --- a/docs/main/deployment-guide/reference-architecture/application-architecture.mdx +++ b/docs/main/deployment-guide/application-architecture.mdx @@ -43,7 +43,7 @@ The Mattermost Server is the heart of the platform and responsible for processin **Notification Service**: Sends notifications through supported mediums: -- **Push Notifications**: Real-time notifications to iOS and Android devices (via a Push Notification Service). High availabilty is ensured through multiple notification servers and retry mechanisms, guaranteeing that notifications are delivered even in the event of service disruptions. +- **Push Notifications**: Real-time notifications to iOS and Android devices (via a Push Notification Service). High availability is ensured through multiple notification servers and retry mechanisms, guaranteeing that notifications are delivered even in the event of service disruptions. - **Email Notifications**: Delivered to users when they are offline or need event alerts. Load balancing and backup mail server configurations help ensure email delivery remains consistent and reliable. **Data Management Service**: Responsible for managing message data, metadata, user profiles, and logs. Ensures the integrity of data passed between the database and the server. This layer serves as the operational core of the platform, orchestrating user activities with data handling and integration capabilities. @@ -73,7 +73,7 @@ High availability measures ensure scalable and fail-safe support for millions of **System Extensions**: Mattermost is not only a collaboration tool but also a platform designed for extensibility. Key extensibility features include: -**Self-Hosted Integrations**: Connect Mattermost to other local or cloud-based systems like Jira, GitLab, or any custom integrations your team needs. Leverage built-in APIs and webhooks to automate workflows and trigger system-to-system communications. For high availaiblity, integrations can employ redundant communication channels and retry mechanisms to handle transient failures gracefully. +**Self-Hosted Integrations**: Connect Mattermost to other local or cloud-based systems like Jira, GitLab, or any custom integrations your team needs. Leverage built-in APIs and webhooks to automate workflows and trigger system-to-system communications. For high availability, integrations can employ redundant communication channels and retry mechanisms to handle transient failures gracefully. **Third-Party Authentication**: Bind integrations to third-party platforms (e.g., Slack-importing APIs, OAuth services). Third-party identity services ensure consistent and secure user access flows. Third-party identity services can leverage load-balancing and failover strategies to ensure consistent and secure user access flows, even under high traffic or outages. diff --git a/docs/main/deployment-guide/calls/calls-deployment-guide.mdx b/docs/main/deployment-guide/calls/calls-deployment-guide.mdx index 5912c9fe4838..a439377a53c5 100644 --- a/docs/main/deployment-guide/calls/calls-deployment-guide.mdx +++ b/docs/main/deployment-guide/calls/calls-deployment-guide.mdx @@ -65,7 +65,7 @@ Use this checklist to confirm you have the infrastructure, skills, and access re - [ ] You have a running Mattermost server on v10.0+. - _See [System Information](/../../end-user-guide/collaborate/view-system-information) to check your Mattermost edition and version._ + _See [View system information](/end-user-guide/view-system-information) to check your Mattermost edition and version._ - [ ] Your Mattermost server is configured to use HTTPS. diff --git a/docs/main/deployment-guide/calls/calls-metrics-monitoring.mdx b/docs/main/deployment-guide/calls/calls-metrics-monitoring.mdx index 25659eed423a..adb9569d2e1c 100644 --- a/docs/main/deployment-guide/calls/calls-metrics-monitoring.mdx +++ b/docs/main/deployment-guide/calls/calls-metrics-monitoring.mdx @@ -33,7 +33,7 @@ Resource utilization metrics (CPU, memory, network) are mainly provided by an ex ## Setting Up Monitoring -For instructions on deploying Prometheus and Grafana for Mattermost, please refer to the [Deploy Prometheus and Grafana for Performance Monitoring](/deployment-guide/reference-architecture/scale/deploy-prometheus-grafana-for-performance-monitoring) guide. +For instructions on deploying Prometheus and Grafana for Mattermost, please refer to the [Deploy Prometheus and Grafana for performance monitoring](/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring) guide. Once Prometheus and Grafana are set up, you will need to configure Prometheus to scrape metrics from the Calls-related services. diff --git a/docs/main/deployment-guide/deployment-architecture.mdx b/docs/main/deployment-guide/deployment-architecture.mdx index 9091b0175999..729224dc95e0 100644 --- a/docs/main/deployment-guide/deployment-architecture.mdx +++ b/docs/main/deployment-guide/deployment-architecture.mdx @@ -1,10 +1,9 @@ --- -title: "Deployment Architecture" -sidebar_label: "Deployment Architecture" +title: "Size your deployment" description: Interactive deployment architecture builder. Pick a scale tier, deployment type, and hosting provider — get an architecture diagram and a bill of materials. --- -Pick your scale tier, deployment type, and hosting provider. The builder below renders a target architecture and a bill of materials sized to those choices. Sizing follows the [Mattermost scaling guide](/deployment-guide/reference-architecture/application-architecture); provider SKUs are illustrative — verify against current pricing and regional / compliance constraints before committing to a procurement decision. +Pick your scale tier, deployment type, and hosting provider. The builder below renders a target architecture and a bill of materials sized to those choices. Sizing follows the [Mattermost scaling guide](/deployment-guide/scale/scaling-for-enterprise); provider SKUs are illustrative — verify against current pricing and regional / compliance constraints before committing to a procurement decision. @@ -21,12 +20,12 @@ Pick your scale tier, deployment type, and hosting provider. The builder below r Once you've sized the architecture: - For **air-gapped** environments, also work through [Air-Gapped Operations](/deployment-guide/air-gapped-operations/quick-start-runbook). The architecture is the same; the install procedure and dependency-staging are different. -- For **regulated workloads** (DoD IL, DISA STIG), see [Security & Compliance → Compliance Frameworks](/security-guide/compliance-frameworks) for the configuration overlay that goes on top of the architecture choices above. -- For **HA tuning** (clustering, Redis configuration, multi-AZ database topology), see [High Availability cluster-based deployment](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment). -- For **specific install paths**, jump to [Install on Linux](/deployment-guide/server/deploy-linux), [Install on Kubernetes](/deployment-guide/server/deploy-kubernetes), or [Install with Containers](/deployment-guide/server/deploy-containers). +- For **HA tuning** (clustering, Redis configuration, multi-AZ database topology), see [High Availability cluster-based deployment](/deployment-guide/server/high-availability-cluster-based-deployment). +- For **version and hardware minimums** on the components you just sized, see [Software and hardware requirements](/deployment-guide/software-hardware-requirements), the last step in Plan. +- To **choose an install path**, see [Deploy the Mattermost server](/deployment-guide/server/deploy-server), which compares Kubernetes, Linux, and containers. -:::note[Want the planning context first?] +:::note[Where this page sits] -If you haven't already, walk through [Deployment Scenarios](/deployment-guide/reference-architecture/deployment-scenarios/deployment-scenarios-index) before sizing. Scenarios describe **what shape** of deployment fits your operational pattern (air-gapped, mission partner, DDIL, sovereign-Microsoft, out-of-band); this page sizes **the components** of whichever shape you pick. +This is the second step in [Plan](/deployment-guide/server/server-deployment-planning), after [Application architecture](/deployment-guide/application-architecture). If you haven't picked the *shape* of the deployment yet, [Deployment Scenarios](/deployment-guide/deployment-scenarios/deployment-scenarios-index) covers which operational pattern fits (air-gapped, mission partner, DDIL, sovereign-Microsoft, out-of-band); this page sizes **the components** of whichever shape you pick. ::: diff --git a/docs/main/deployment-guide/deployment-guide-index.mdx b/docs/main/deployment-guide/deployment-guide-index.mdx index f30ed322eeb8..560f4bd0335a 100644 --- a/docs/main/deployment-guide/deployment-guide-index.mdx +++ b/docs/main/deployment-guide/deployment-guide-index.mdx @@ -1,31 +1,44 @@ --- title: "Deployment Guide" --- -Welcome to deployment guidance for Mattermost. This guide is organized into sections based on application types and deployment scenarios to help you achieve a successful deployment of Mattermost across various platforms. +This guide takes you from evaluating Mattermost through to running it in production: planning a deployment, preparing its dependencies, installing the server, securing and scaling it, and rolling out the desktop and mobile apps. -Whether you're deploying the server application, desktop application, or mobile application, or troubleshooting deployments, this guide has you covered. Use the navigation below to access detailed information about each topic. +## Start here -- [Quick Start Evaluation](/deployment-guide/quick-start-evaluation) - A quick start guide to help you get started with Mattermost. -- [Reference Architecture](/deployment-guide/reference-architecture/reference-architecture-index) - Reference architectures for scaling Mattermost and specialized deployment scenarios. -- [Server deployment](/deployment-guide/server/server-deployment-planning) - Pre-deployment checks, security considerations, hardware recommendations, software prerequisites, and step-by-step guidance to deploying Mattermost server. -- [Calls Deployment Guide](/deployment-guide/calls/calls-deployment-guide) - Deploy and operate Mattermost Calls infrastructure, including RTCD, recording services, and supporting network configuration. -- [Desktop deployment](/deployment-guide/desktop/desktop-app-deployment) - Installation procedures for Mattermost's desktop applications across Windows, macOS, and Linux, and large-scale, enterprise-wide deployments. -- [Mobile deployment](/deployment-guide/mobile/mobile-app-deployment) - How to set up push notifications using Mattermost's notification service and troubleshooting tips. -- [Deployment troubleshooting](/deployment-guide/deployment-troubleshooting) - Best practices for diagnosing and resolving common deployment issues. +Work through the sections below in order. Each one links to the pages inside it. -## How to use this guide +Two situations call for a different starting point. To evaluate Mattermost and see its capabilities before committing to a deployment plan, begin with [Quick Start Evaluation](/deployment-guide/quick-start-evaluation). If your environment has particular constraints, such as no internet egress, a coalition network, or an intermittently connected edge, read [Deployment Scenarios](/deployment-guide/deployment-scenarios/deployment-scenarios-index) first, because those constraints shape every decision that follows. -Navigate through the sections using the headings above to find the deployment instructions and troubleshooting steps pertinent to your needs. Each section is designed to provide clear, actionable information to ensure a successful deployment and operation of Mattermost. +## Deployment scenarios -If you are new to Mattermost, we recommend starting with the Application Architecture section to understand the prerequisites and get started, or alternatively use the Try Mattermost section to explore Mattermost before planning your production deployment. +[Deployment Scenarios](/deployment-guide/deployment-scenarios/deployment-scenarios-index) describes the operational patterns Mattermost is deployed into - out-of-band communications, mission partner collaboration, DDIL operations, sovereign collaboration in Microsoft, and air-gapped environments. Read this before the sections below if any of them describe your environment, because the constraints shape every decision that follows. + +## Server deployment + +The steps below run in order. Each is a section in the sidebar. + +- [Plan](/deployment-guide/server/server-deployment-planning) - Understand the [components of a deployment](/deployment-guide/application-architecture), [size it for your user count](/deployment-guide/deployment-architecture), decide whether you need [high availability and clustering](/deployment-guide/server/high-availability-cluster-based-deployment), and check the [software and hardware requirements](/deployment-guide/software-hardware-requirements). +- [Prepare](/deployment-guide/server/preparations) - Stand up the prerequisites before you install: the [database](/deployment-guide/server/prepare-database), [file storage](/deployment-guide/server/prepare-file-storage), [network access](/deployment-guide/server/prepare-network), an [NGINX reverse proxy](/deployment-guide/server/setup-nginx-proxy), and [TLS](/deployment-guide/server/setup-tls). Large deployments also provision [search infrastructure](/deployment-guide/scale/enterprise-search) and [caching with Redis](/deployment-guide/scale/redis) here. +- [Choose a deployment method](/deployment-guide/server/deploy-server) - Compare the methods, then install on [Linux](/deployment-guide/server/deploy-linux), [Kubernetes](/deployment-guide/server/deploy-kubernetes), or with [containers](/deployment-guide/server/deploy-containers). +- [Secure your deployment](/deployment-guide/encryption-options) - Encryption at rest and [in transit](/deployment-guide/transport-encryption). +- [Back up and recover](/deployment-guide/backup-disaster-recovery) - Backup strategy and [active/passive disaster recovery on AWS](/deployment-guide/disaster-recovery-aws). +- [Air-Gapped Operations](/deployment-guide/air-gapped-operations/) - The runbook, bill of materials, registry mirroring, and configuration changes for a deployment with no internet access. +- [General deployment troubleshooting](/deployment-guide/server/troubleshooting) - Log review, environment review, and the diagnostic data to gather for a support ticket. It also indexes the guides for specific layers - Docker, the database, and the desktop and mobile apps. + +## Calls deployment + +[Calls Deployment](/deployment-guide/calls/calls-deployment-guide) - Deploy and operate Calls infrastructure, including RTCD, the recording offloader, logging, and metrics. + +## Deploy the apps + +- [Desktop App Deployment](/deployment-guide/desktop/desktop-app-deployment) - Distribution and management for Windows, macOS, and Linux, including MSI and group policy. +- [Mobile App Deployment](/deployment-guide/mobile/mobile-app-deployment) - EMM distribution, Microsoft Intune MAM, custom builds, and running your own push proxy. - If you encounter issues that aren't covered in this documentation: - Customers with a Mattermost subscription: See the [Mattermost Support Knowledge Base](https://support.mattermost.com/hc/en-us), or [contact Mattermost Support](https://support.mattermost.com/hc/en-us/requests/new) for assistance. - - Community deployments: Reference the [Mattermost community forums](https://forum.mattermost.com/) + - Community deployments: Reference the [Mattermost community forums](https://forum.mattermost.com/). - For advanced customization or integrations, refer to the [Open source components](/administration-guide/upgrade/open-source-components) documentation for details about extending Mattermost functionality. - -Enjoy deploying Mattermost with confidence! diff --git a/docs/main/deployment-guide/deployment-scenarios/air-gapped-deployment.mdx b/docs/main/deployment-guide/deployment-scenarios/air-gapped-deployment.mdx new file mode 100644 index 000000000000..f24d393f075b --- /dev/null +++ b/docs/main/deployment-guide/deployment-scenarios/air-gapped-deployment.mdx @@ -0,0 +1,43 @@ +--- +title: "Deploy in Air-Gapped Environments" +--- +## Overview + +An air-gapped environment is one that's physically or logically isolated from the public internet. Nothing inside it can reach an external package repository, container registry, app store, or SaaS API, and nothing outside it can initiate a connection in. Mattermost is deployed and operated entirely from resources that already exist inside the boundary. + +Organizations adopt this pattern when regulation or classification makes an internet connection unacceptable rather than merely undesirable — classified and cross-domain networks, defense and intelligence programs, and industrial or operational-technology networks where the collaboration platform must sit on the same isolated segment as the systems it supports. + + + +Consider [talking to a Mattermost expert](https://mattermost.com/contact-sales/) if your organization needs support deploying Mattermost and supporting services in an air-gapped environment. + + + +## How it differs from a connected deployment + +The Mattermost server itself is the same product, deployed with the same [Linux](/deployment-guide/server/deploy-linux), [Kubernetes](/deployment-guide/server/deploy-kubernetes), or [container](/deployment-guide/server/deploy-containers) methods used anywhere else. What changes is everything around it: + +- **Nothing is fetched at install time.** Packages, container images, Helm charts, plugin binaries, and desktop app installers must all be gathered on an internet-connected machine, staged into a private package mirror or container registry, and transferred across the air gap on approved media before the install begins. +- **Upgrades are a planned transfer, not a download.** Because each upgrade repeats that staging and transfer cycle, air-gapped deployments commonly track an [Extended Support Release](/product-overview/release-policy#extended-support-releases) rather than the monthly cadence. +- **Client apps are side-loaded.** Air-gapped devices can't reach the public app stores, so desktop and mobile apps are distributed through your own [desktop](/deployment-guide/desktop/desktop-app-deployment) and [mobile](/deployment-guide/mobile/mobile-app-deployment) deployment tooling. +- **Documentation travels with the deployment.** Administrators inside the boundary can't reach docs.mattermost.com, so the documentation is built and served locally. + +## Constraints to plan for + +Several Mattermost capabilities depend on an outbound internet connection and are unavailable or must be replaced: + +- **Mobile push notifications** rely on the hosted push notification service. Either disable push notifications or run your own [push proxy](/deployment-guide/mobile/host-your-own-push-proxy-service) reachable from the isolated network. +- **The Mattermost Marketplace** is unreachable, so plugins are downloaded in advance and uploaded through the System Console. +- **Website link previews and the GIF picker** call third-party services and should be disabled. +- **In-product notices and telemetry** phone home, generate log errors when they can't, and should be turned off. +- **Email** requires an internal SMTP relay inside the boundary, or email invitations and verification must be disabled. +- **AI agents** must run against a [self-hosted, OpenAI-compatible LLM](/administration-guide/configure/agents-admin-guide) rather than a hosted model provider. + +## Deploy an air-gapped environment + +[Air-Gapped Operations](/deployment-guide/air-gapped-operations/) covers the full procedure: the step-by-step deployment runbook, the bill of materials to gather before you cross the air gap, how to stand up a private package mirror or container registry, and the server settings to change once Mattermost is running. + +## Related deployment scenarios + +- [Enterprise to Edge DDIL Operations](/deployment-guide/deployment-scenarios/deploy-ddil-operations) — for networks that are intermittently rather than permanently disconnected. +- [Out-of-Band Communications](/deployment-guide/deployment-scenarios/deploy-oob) — for an isolated, pre-provisioned system used during incident response. diff --git a/docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-ddil-operations.mdx b/docs/main/deployment-guide/deployment-scenarios/deploy-ddil-operations.mdx similarity index 90% rename from docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-ddil-operations.mdx rename to docs/main/deployment-guide/deployment-scenarios/deploy-ddil-operations.mdx index ab0396b6ad78..8c53052ecc10 100644 --- a/docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-ddil-operations.mdx +++ b/docs/main/deployment-guide/deployment-scenarios/deploy-ddil-operations.mdx @@ -9,7 +9,7 @@ Mattermost enables resilient collaboration by remaining fully operational in DDI When connectivity is restored, mission users regain access to M365 enterprise systems in addition to collaboration continuity with enterprise users through the [embedded Mattermost experience](/integrations-guide/mattermost-mission-collaboration-for-m365) inside their Microsoft Teams and Outlook applications. All mission activity during the period of disconnection becomes available across enterprise and tactical environments when connectivity returns. -Traditional cloud-only solutions fail in these scenarios, while fully disconnected systems don't integrate with enterprise tools during normal operations. This deployment architecture [extends sovereign collaboration with Microsoft Teams and Outlook](/deployment-guide/reference-architecture/deployment-scenarios/deploy-sovereign-collaboration) to the tactical edge, providing a hybrid solution that enables enterprise integration and fully disconnected tactical collaboration. +Traditional cloud-only solutions fail in these scenarios, while fully disconnected systems don't integrate with enterprise tools during normal operations. This deployment architecture [extends sovereign collaboration with Microsoft Teams and Outlook](/deployment-guide/deployment-scenarios/deploy-sovereign-collaboration) to the tactical edge, providing a hybrid solution that enables enterprise integration and fully disconnected tactical collaboration. ![Mattermost diagram displays the deployment components and relationships outlined in detail in this document.](/images/architecture-ms-teams-ddil.png) @@ -36,16 +36,16 @@ This hybrid deployment architecture provides optimal collaboration in both conne - When internet disconnected: Microsoft services are unreachable, but embedded Mattermost application remains fully operational for tactical teams. - **Mattermost Desktop Apps:** Access Mattermost via [desktop](/deployment-guide/desktop/desktop-app-deployment) or web apps in addition to the embedded views from Teams and Outlook. *(Optional - not shown)* - **Mattermost Mobile Apps:** Access Mattermost via [iPhone and Android apps](/deployment-guide/mobile/mobile-app-deployment), with support for [ID-only push notifications](/deployment-guide/mobile/host-your-own-push-proxy-service) to ensure compliance with data sovereignty requirements. *(Optional when connectivity permits - not shown)* -- **Mattermost Deployment:** Mattermost deployed for sovereign tactical collaboration on local infrastructure, such as [Azure Local](https://learn.microsoft.com/en-us/azure/azure-local/manage/disconnected-operations-overview), supporting data residency regulations and [disconnected operations](/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment). See [reference architecture](/deployment-guide/reference-architecture/scale/server-architecture) documentation for Mattermost deployment configurations based on expected scale. +- **Mattermost Deployment:** Mattermost deployed for sovereign tactical collaboration on local infrastructure, such as [Azure Local](https://learn.microsoft.com/en-us/azure/azure-local/manage/disconnected-operations-overview), supporting data residency regulations and [disconnected operations](/deployment-guide/deployment-scenarios/air-gapped-deployment). See [reference architecture](/deployment-guide/scale/server-architecture) documentation for Mattermost deployment configurations based on expected scale. - **Mattermost Server:** Core application server handling tactical collaboration workloads, including: - - [Messaging Collaboration](/end-user-guide/collaborate/collaborate-index): DDIL-ready 1:1, group messaging, and structured channel collaboration with [rich integration capabilities](/integrations-guide/integrations-guide-index) and [enterprise-grade search](/deployment-guide/reference-architecture/scale/scaling-for-enterprise#enterprise-search). + - [Messaging Collaboration](/end-user-guide/collaborate/collaborate-index): DDIL-ready 1:1, group messaging, and structured channel collaboration with [rich integration capabilities](/integrations-guide/integrations-guide-index) and [enterprise-grade search](/deployment-guide/scale/scaling-for-enterprise#enterprise-search). - [Workflow Automation](/end-user-guide/workflow-automation/workflow-automation-index): Playbooks provide structure, monitoring and automation for repeatable processes built-in to your local Mattermost deployment. - [Project Tracking](/end-user-guide/project-management/project-management-index): Boards enables project management capabilities built-in to your local Mattermost deployment. - [AI Agents](/administration-guide/configure/agents-admin-guide): AI Agents run against a local LLM hosted within your tactical network. - [Audio & Screenshare](/deployment-guide/calls/calls-deployment-guide): Calls offers native real-time self-hosted audio calls and screen sharing within your tactical network. - **Proxy Server:** The [proxy server](/deployment-guide/server/setup-nginx-proxy) handles HTTP(S) routing within the cluster, directing traffic between the server and clients accessing Mattermost services. NGINX is recommended for load balancing with support for WebSocket connections, health check endpoints, and sticky sessions. The proxy layer provides SSL termination and distributes client traffic across application servers. - - **PostgreSQL Database:** Stores persistent application data on a [PostgreSQL v13+ database](/deployment-guide/server/preparations) hosted locally within your tactical network. - - **Object Storage:** File uploads, images, and attachments are stored outside the application node on an [S3-compatible store](/deployment-guide/server/preparations) or network/local storage, hosted locally within your tactical network. + - **PostgreSQL Database:** Stores persistent application data on a [PostgreSQL v13+ database](/deployment-guide/server/prepare-database) hosted locally within your tactical network. + - **Object Storage:** File uploads, images, and attachments are stored outside the application node on an [S3-compatible store](/deployment-guide/server/prepare-file-storage) or network/local storage, hosted locally within your tactical network. - **Recording Instance:** `calls-offloader` job service, configured using the [Calls Offloader Setup and Configuration](/deployment-guide/calls/calls-offloader-setup) guide, to offload heavy processing tasks from Mattermost Calls to self-hosted infrastructure within your tactical network, such as recordings, transcriptions, and live captioning. *(Optional)* - **Self-hosted integrations:** [Custom apps, plugins, and webhooks](/integrations-guide/integrations-guide-index) can be deployed within your tactical network. *(Optional - not shown)* - **Self-hosted LLM:** Locally hosted [OpenAI compatible LLM](/agents/docs/providers) for agentic powered collaboration within your tactical network. *(Optional)* @@ -77,10 +77,10 @@ Effective collaboration at the tactical edge requires all voice and screen shari ### High availability and fault tolerance -Deploy Mattermost in a [cluster-based architecture](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) to ensure continued availability during outages or hardware failures. High availability requires redundant infrastructure across each critical component: +Deploy Mattermost in a [cluster-based architecture](/deployment-guide/server/high-availability-cluster-based-deployment) to ensure continued availability during outages or hardware failures. High availability requires redundant infrastructure across each critical component: - Application servers: Scale horizontally across multiple nodes with a load balancer distributing client traffic. -- Search service: [Elasticsearch or AWS OpenSearch Service](/deployment-guide/reference-architecture/scale/scaling-for-enterprise#enterprise-search) provides optimized search performance with dedicated indexing for large-scale deployments. +- Search service: [Elasticsearch or AWS OpenSearch Service](/deployment-guide/scale/scaling-for-enterprise#enterprise-search) provides optimized search performance with dedicated indexing for large-scale deployments. - Object storage: Configure S3-compatible backends with erasure coding or replication for durability. All application servers must access shared file storage (NAS or S3) to ensure consistent data availability. - Calls services: Run multiple `rtcd` and offloader nodes for resilience. diff --git a/docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-mission-partner.mdx b/docs/main/deployment-guide/deployment-scenarios/deploy-mission-partner.mdx similarity index 90% rename from docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-mission-partner.mdx rename to docs/main/deployment-guide/deployment-scenarios/deploy-mission-partner.mdx index a409aab506f5..6f7c318115dc 100644 --- a/docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-mission-partner.mdx +++ b/docs/main/deployment-guide/deployment-scenarios/deploy-mission-partner.mdx @@ -3,7 +3,7 @@ title: "Deploy for Mission Partner Collaboration" --- ## Overview -Mission partner collaboration extends [sovereign collaboration](/deployment-guide/reference-architecture/deployment-scenarios/deploy-sovereign-collaboration) and [edge deployment](/deployment-guide/reference-architecture/deployment-scenarios/deploy-ddil-operations) models to enable joint and allied operations across organizations using Mattermost, Microsoft 365 and legacy platforms. The solution architecture outlined in this document delivers a secure, sovereign, and intelligent mission environment that is federated across enterprise and coalition partner networks, enabling interoperability while maintaining compliance and control. +Mission partner collaboration extends [sovereign collaboration](/deployment-guide/deployment-scenarios/deploy-sovereign-collaboration) and [edge deployment](/deployment-guide/deployment-scenarios/deploy-ddil-operations) models to enable joint and allied operations across organizations using Mattermost, Microsoft 365 and legacy platforms. The solution architecture outlined in this document delivers a secure, sovereign, and intelligent mission environment that is federated across enterprise and coalition partner networks, enabling interoperability while maintaining compliance and control. Joint mission collaboration is achieved through federation using [connected workspaces](/administration-guide/onboard/connected-workspaces), [Matrix connectors](https://mattermost.com/marketplace/mattermost-matrix-connector/), [guest accounts](/administration-guide/onboard/guest-accounts), and [auto-translation](https://github.com/mattermost/mattermost-plugin-channel-translations) for fast, accurate comprehension across globally distributed teams. Additionally, integrating external data feeds, workflow automation, and sovereign AI enables allied and partner users to collaborate at mission speed while enforcing zero-trust policies and maintaining data sovereignty. @@ -13,7 +13,7 @@ Mattermost deployments may be hosted on-premises or in sovereign clouds, enablin Multi-agency collaborations face complex communication challenges: -- **Platform diversity:** Organizations often use different platforms, including Microsoft 365, Mattermost, and Matrix - with some using Teams for enterprise productivity [supplemented with Mattermost](/deployment-guide/reference-architecture/deployment-scenarios/deploy-sovereign-collaboration) for sovereign collaboration, data residency, and offline resilience. +- **Platform diversity:** Organizations often use different platforms, including Microsoft 365, Mattermost, and Matrix - with some using Teams for enterprise productivity [supplemented with Mattermost](/deployment-guide/deployment-scenarios/deploy-sovereign-collaboration) for sovereign collaboration, data residency, and offline resilience. - **External access:** External partners need controlled access without full organizational membership. - **Language barriers:** Organizations may speak different languages. - **Compliance:** Data residency and compliance requirements vary across organizations. @@ -41,7 +41,7 @@ The deployment architecture includes the following components: - **Allied or Partner Networks:** Globally distributed and segregated networks for each allied or partner organization. - Networks may have a firewall or access gateway protecting egress and ingress, such as network policies, IP allowlists, or WAFs depending on networking configurations. - - Networks may [operate in contested environments](/deployment-guide/reference-architecture/deployment-scenarios/deploy-ddil-operations) where internet connectivity is intermittent. + - Networks may [operate in contested environments](/deployment-guide/deployment-scenarios/deploy-ddil-operations) where internet connectivity is intermittent. - **Users:** Enterprise, allied, and coalition partner users accessing client applications for Mattermost and/or Microsoft 365. - **Microsoft Entra ID (Identity Provider):** Partnered organizations using Microsoft 365 services may use [single sign-on Entra ID](/administration-guide/onboard/sso-entraid) for unified authentication to M365 and Mattermost applications. *(Optional)* - **Federation Services:** @@ -52,7 +52,7 @@ The deployment architecture includes the following components: - **Mattermost Desktop Apps:** Access Mattermost directly by deploying [desktop](/deployment-guide/desktop/desktop-app-deployment) or web apps in your organization. - **Mattermost Mobile Apps:** Access Mattermost via [iPhone and Android apps](/deployment-guide/mobile/mobile-app-deployment), with support for [ID-only push notifications](/deployment-guide/mobile/host-your-own-push-proxy-service) to ensure compliance with data sovereignty requirements. *(Optional - not shown)* - **Microsoft 365 Desktop Apps:** For partnered organizations using Microsoft 365 services, Teams and Outlook can be deployed with the [embedded Mattermost application](/integrations-guide/mattermost-mission-collaboration-for-m365) for cross-domain partner collaboration within a familiar interface. *(Optional)* -- **Mattermost Deployments:** Mattermost deployed for sovereign collaboration on private cloud or local infrastructure, such as [Azure](/deployment-guide/server/deploy-kubernetes) or [Azure Local](https://learn.microsoft.com/en-us/azure/azure-local/manage/disconnected-operations-overview), to maintain compliance with STIG, FedRAMP, and NIST 800-53 standards. See [reference architecture](/deployment-guide/reference-architecture/scale/server-architecture) documentation for Mattermost deployment configurations based on expected scale. +- **Mattermost Deployments:** Mattermost deployed for sovereign collaboration on private cloud or local infrastructure, such as [Azure](/deployment-guide/server/deploy-kubernetes) or [Azure Local](https://learn.microsoft.com/en-us/azure/azure-local/manage/disconnected-operations-overview), to maintain compliance with STIG, FedRAMP, and NIST 800-53 standards. See [reference architecture](/deployment-guide/scale/server-architecture) documentation for Mattermost deployment configurations based on expected scale. - **Mattermost Server:** Core application server handling collaboration workloads, including: - [Messaging Collaboration](/end-user-guide/collaborate/collaborate-index): Sovereign 1:1, group messaging, and structured channel collaboration. - [Workflow Automation](/end-user-guide/workflow-automation/workflow-automation-index): Playbooks provide structure, monitoring and automation for repeatable processes built-in to your sovereign Mattermost deployment. @@ -60,8 +60,8 @@ The deployment architecture includes the following components: - [AI Agents](/administration-guide/configure/agents-admin-guide): AI Agents run against Azure OpenAI endpoints or a self-hosted LLM that is OpenAI-compatible. - [Audio & Screenshare](/deployment-guide/calls/calls-deployment-guide): Calls offers native real-time self-hosted audio calls and screen sharing within your own network. - **Proxy Server:** The [proxy server](/deployment-guide/server/setup-nginx-proxy) handles HTTP(S) routing within the cluster, directing traffic between the server and clients accessing Mattermost services, including requests from users in [connected organizations](/administration-guide/onboard/connected-workspaces). NGINX is recommended for load balancing with support for WebSocket connections, health check endpoints, and sticky sessions. The proxy layer provides SSL termination and distributes client traffic across application servers. - - **PostgreSQL Database:** Stores persistent application data on a [PostgreSQL v13+ database](/deployment-guide/server/preparations), such as [Azure Database for PostgreSQL](https://azure.microsoft.com/en-us/products/postgresql). - - **Object Storage:** File uploads, images, and attachments are stored outside the application node on an [S3-compatible store](/deployment-guide/server/preparations) or an NFS (Network File System) server. [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) can be used, but needs an S3-compatible proxy for Mattermost to interface with. + - **PostgreSQL Database:** Stores persistent application data on a [PostgreSQL v13+ database](/deployment-guide/server/prepare-database), such as [Azure Database for PostgreSQL](https://azure.microsoft.com/en-us/products/postgresql). + - **Object Storage:** File uploads, images, and attachments are stored outside the application node on an [S3-compatible store](/deployment-guide/server/prepare-file-storage) or an NFS (Network File System) server. [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) can be used, but needs an S3-compatible proxy for Mattermost to interface with. - **Recording Instance:** `calls-offloader` job service, configured using the [Calls Offloader Setup and Configuration](/deployment-guide/calls/calls-offloader-setup) guide, to offload heavy processing tasks from Mattermost Calls, such as recordings, transcriptions, and live captioning, to local infrastructure or private cloud. *(Optional)* - **Integration framework:** [Custom apps, plugins, and webhooks](/integrations-guide/integrations-guide-index) can be deployed for real-time data integrations and alerting. *(Optional - not shown)* - **Self-hosted LLM:** Locally hosted [OpenAI compatible LLM](/agents/docs/providers) for agentic powered collaboration. *(Optional)* @@ -119,10 +119,10 @@ AI capabilities enhance mission collaboration with summarization, translation, s ### High availability and fault tolerance -Deploy Mattermost in a [cluster-based architecture](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) to ensure continued availability during outages or hardware failures. High availability requires redundant infrastructure across each critical component: +Deploy Mattermost in a [cluster-based architecture](/deployment-guide/server/high-availability-cluster-based-deployment) to ensure continued availability during outages or hardware failures. High availability requires redundant infrastructure across each critical component: - Application servers: Scale horizontally across multiple nodes with a load balancer distributing client traffic. -- Search service: [Elasticsearch or AWS OpenSearch Service](/deployment-guide/reference-architecture/scale/scaling-for-enterprise#enterprise-search) provides optimized search performance with dedicated indexing for large-scale deployments. +- Search service: [Elasticsearch or AWS OpenSearch Service](/deployment-guide/scale/scaling-for-enterprise#enterprise-search) provides optimized search performance with dedicated indexing for large-scale deployments. - Object storage: Configure S3-compatible backends with erasure coding or replication for durability. All application servers must access shared file storage (NAS or S3) to ensure consistent data availability. - Calls services: Run multiple `rtcd` and offloader nodes for resilience. diff --git a/docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-oob.mdx b/docs/main/deployment-guide/deployment-scenarios/deploy-oob.mdx similarity index 100% rename from docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-oob.mdx rename to docs/main/deployment-guide/deployment-scenarios/deploy-oob.mdx diff --git a/docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-sovereign-collaboration.mdx b/docs/main/deployment-guide/deployment-scenarios/deploy-sovereign-collaboration.mdx similarity index 89% rename from docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-sovereign-collaboration.mdx rename to docs/main/deployment-guide/deployment-scenarios/deploy-sovereign-collaboration.mdx index 03e6bf15e110..1c517b37f7d4 100644 --- a/docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-sovereign-collaboration.mdx +++ b/docs/main/deployment-guide/deployment-scenarios/deploy-sovereign-collaboration.mdx @@ -31,16 +31,16 @@ The deployment architecture includes the following components: - **Microsoft 365 Desktop Apps:** Teams and Outlook with [embedded Mattermost application](/integrations-guide/mattermost-mission-collaboration-for-m365) for seamless collaboration within a familiar interface while enforcing regulatory compliance. - **Mattermost Desktop Apps:** Access Mattermost via [desktop](/deployment-guide/desktop/desktop-app-deployment) or web apps in addition to the embedded views from Teams and Outlook. *(Optional - not shown)* - **Mattermost Mobile Apps:** Access Mattermost via [iPhone and Android apps](/deployment-guide/mobile/mobile-app-deployment), with support for [ID-only push notifications](/deployment-guide/mobile/host-your-own-push-proxy-service) to ensure compliance with data sovereignty requirements. *(Optional - not shown)* -- **Mattermost Deployment:** Mattermost deployed for sovereign collaboration on enterprise-controlled infrastructure or private cloud, such as [Azure](/deployment-guide/server/deploy-kubernetes) or [Azure Local](https://learn.microsoft.com/en-us/azure/azure-local/manage/disconnected-operations-overview), to maintain compliance with STIG, FedRAMP, and NIST 800-53 standards. See [reference architecture](/deployment-guide/reference-architecture/scale/server-architecture) documentation for Mattermost deployment configurations based on expected scale. +- **Mattermost Deployment:** Mattermost deployed for sovereign collaboration on enterprise-controlled infrastructure or private cloud, such as [Azure](/deployment-guide/server/deploy-kubernetes) or [Azure Local](https://learn.microsoft.com/en-us/azure/azure-local/manage/disconnected-operations-overview), to maintain compliance with STIG, FedRAMP, and NIST 800-53 standards. See [reference architecture](/deployment-guide/scale/server-architecture) documentation for Mattermost deployment configurations based on expected scale. - **Mattermost Server:** Core application server handling collaboration workloads, including: - - [Messaging Collaboration](/end-user-guide/collaborate/collaborate-index): DDIL-ready 1:1, group messaging, and structured channel collaboration with [rich integration capabilities](/integrations-guide/integrations-guide-index) and [enterprise-grade search](/deployment-guide/reference-architecture/scale/scaling-for-enterprise#enterprise-search). + - [Messaging Collaboration](/end-user-guide/collaborate/collaborate-index): DDIL-ready 1:1, group messaging, and structured channel collaboration with [rich integration capabilities](/integrations-guide/integrations-guide-index) and [enterprise-grade search](/deployment-guide/scale/scaling-for-enterprise#enterprise-search). - [Workflow Automation](/end-user-guide/workflow-automation/workflow-automation-index): Playbooks provide structure, monitoring and automation for repeatable processes built-in to your sovereign Mattermost deployment. - [Project Tracking](/end-user-guide/project-management/project-management-index): Boards enables project management capabilities built-in to your sovereign Mattermost deployment. - [AI Agents](/administration-guide/configure/agents-admin-guide): AI Agents run against Azure OpenAI endpoints or a self-hosted LLM that is OpenAI-compatible. - [Audio & Screenshare](/deployment-guide/calls/calls-deployment-guide): Calls offers native real-time self-hosted audio calls and screen sharing within your own network. - **Proxy Server:** The [proxy server](/deployment-guide/server/setup-nginx-proxy) handles HTTP(S) routing within the cluster, directing traffic between the server and clients accessing Mattermost services. NGINX is recommended for load balancing with support for WebSocket connections, health check endpoints, and sticky sessions. The proxy layer provides SSL termination and distributes client traffic across application servers. - - **PostgreSQL Database:** Stores persistent application data on a [PostgreSQL v13+ database](/deployment-guide/server/preparations), such as [Azure Database for PostgreSQL](https://azure.microsoft.com/en-us/products/postgresql). - - **Object Storage:** File uploads, images, and attachments are stored outside the application node on an [S3-compatible store](/deployment-guide/server/preparations) or an NFS (Network File System) server. [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) can be used, but needs an S3-compatible proxy for Mattermost to interface with. + - **PostgreSQL Database:** Stores persistent application data on a [PostgreSQL v13+ database](/deployment-guide/server/prepare-database), such as [Azure Database for PostgreSQL](https://azure.microsoft.com/en-us/products/postgresql). + - **Object Storage:** File uploads, images, and attachments are stored outside the application node on an [S3-compatible store](/deployment-guide/server/prepare-file-storage) or an NFS (Network File System) server. [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) can be used, but needs an S3-compatible proxy for Mattermost to interface with. - **Recording Instance:** `calls-offloader` job service, configured using the [Calls Offloader Setup and Configuration](/deployment-guide/calls/calls-offloader-setup) guide, to offload heavy processing tasks from Mattermost Calls, such as recordings, transcriptions, and live captioning, to enterprise-controlled infrastructure or private cloud. *(Optional)* - **Self-hosted integrations:** [Custom apps, plugins, and webhooks](/integrations-guide/integrations-guide-index) can be deployed within the enterprise boundary. *(Optional - not shown)* @@ -56,11 +56,11 @@ The following best practices and deployment configurations help ensure that Matt ### High availability and fault tolerance -Deploy Mattermost in a [cluster-based architecture](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) to ensure continued availability during outages or hardware failures. High availability requires redundant infrastructure across each critical component: +Deploy Mattermost in a [cluster-based architecture](/deployment-guide/server/high-availability-cluster-based-deployment) to ensure continued availability during outages or hardware failures. High availability requires redundant infrastructure across each critical component: - Application servers: Scale horizontally across multiple nodes with a load balancer distributing client traffic. - Database layer: Use PostgreSQL replication or managed HA services with automatic failover. -- Search service: [Elasticsearch or AWS OpenSearch Service](/deployment-guide/reference-architecture/scale/scaling-for-enterprise#enterprise-search) provides optimized search performance with dedicated indexing for large-scale deployments. +- Search service: [Elasticsearch or AWS OpenSearch Service](/deployment-guide/scale/scaling-for-enterprise#enterprise-search) provides optimized search performance with dedicated indexing for large-scale deployments. - Object storage: Configure S3-compatible backends with erasure coding or replication for durability. All application servers must access shared file storage (NAS or S3) to ensure consistent data availability. - Calls services: Run multiple `rtcd` and `calls-offloader` nodes for resilience. diff --git a/docs/main/deployment-guide/deployment-scenarios/deployment-scenarios-index.mdx b/docs/main/deployment-guide/deployment-scenarios/deployment-scenarios-index.mdx new file mode 100644 index 000000000000..5366e1a9bede --- /dev/null +++ b/docs/main/deployment-guide/deployment-scenarios/deployment-scenarios-index.mdx @@ -0,0 +1,12 @@ +--- +title: "Deployment Scenarios" +--- +This section outlines reference architectures and guidance tailored for specialized Mattermost deployment scenarios, enabling organizations to build secure, compliant, and resilient collaboration environments across diverse operational contexts. + +Whether you’re implementing out-of-band communications, mission partner collaboration, sovereign collaboration within Microsoft ecosystems, or mission-critical operations at the edge, these architectures offer comprehensive guidance, design patterns, and best practices to ensure robust and reliable deployments. + +- [Out-of-Band Communications](/deployment-guide/deployment-scenarios/deploy-oob) - Deploy Mattermost as an isolated, pre-provisioned communication system for incident response and business continuity. +- [Mission Partner Collaboration](/deployment-guide/deployment-scenarios/deploy-mission-partner) - Multi-organizational collaboration architecture with secure information sharing between allied networks and coalition partners. +- [Enterprise to Edge DDIL Operations](/deployment-guide/deployment-scenarios/deploy-ddil-operations) - Deployment patterns for Denied, Degraded, Intermittent, and Limited (DDIL) communication environments with offline capabilities. +- [Sovereign Collaboration in Microsoft](/deployment-guide/deployment-scenarios/deploy-sovereign-collaboration) - Integration architecture for sovereign cloud environments with Microsoft Teams, Outlook and other M365 services. +- [Air-gapped Deployment](/deployment-guide/deployment-scenarios/air-gapped-deployment) - Guidance and best practices when deploying Mattermost in air-gapped environments. diff --git a/docs/main/deployment-guide/deployment-troubleshooting.mdx b/docs/main/deployment-guide/deployment-troubleshooting.mdx deleted file mode 100644 index da712fc0b4ea..000000000000 --- a/docs/main/deployment-guide/deployment-troubleshooting.mdx +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Deployment troubleshooting" ---- -These guides will help you troubleshoot aspects of your Mattermost deployment. - -- [General deployment troubleshooting](/deployment-guide/server/troubleshooting) -- [Docker deployment troubleshooting](/deployment-guide/server/docker-troubleshooting) -- [Desktop app installation troubleshooting](/deployment-guide/desktop/desktop-troubleshooting) -- [Mobile applications troubleshooting](/deployment-guide/mobile/mobile-troubleshooting) -- [PostgreSQL installation troubleshooting](/deployment-guide/server/trouble-postgres) -- [MySQL installation troubleshooting](/deployment-guide/server/trouble_mysql) diff --git a/docs/main/deployment-guide/desktop/desktop-app-deployment.mdx b/docs/main/deployment-guide/desktop/desktop-app-deployment.mdx index 1e8255d32e2e..9535be48b24d 100644 --- a/docs/main/deployment-guide/desktop/desktop-app-deployment.mdx +++ b/docs/main/deployment-guide/desktop/desktop-app-deployment.mdx @@ -5,7 +5,13 @@ title: "Desktop App Deployment" The Mattermost desktop app is available for Windows, macOS, and Linux operating systems, and offers [additional functionality](/end-user-guide/preferences/customize-desktop-app-experience) beyond the web-based experience. -Learn more about desktop app [software requirements](/deployment-guide/software-hardware-requirements#desktop-apps), [releases and server compatibility](/product-overview/mattermost-desktop-releases) as well as the [what's changed across releases](/product-overview/desktop-app-changelog). +Learn more about desktop app [software requirements](/deployment-guide/software-hardware-requirements#desktop-apps), [releases and server compatibility](/product-overview/mattermost-desktop-releases) as well as [what's changed across releases](/product-overview/desktop-app-changelog). + + + +Hitting problems with an installation or rollout? See [Desktop app troubleshooting](/deployment-guide/desktop/desktop-troubleshooting) at the end of this section, or [Deployment troubleshooting](/deployment-guide/server/troubleshooting) if the problem might not be specific to the desktop app. + + ## Download @@ -33,7 +39,6 @@ Learn about installation, configuration, and management options for deploying th - [MSI installer and group policy guide](/deployment-guide/desktop/desktop-msi-installer-and-group-policy-install) - [Custom dictionaries for Windows and Linux](/deployment-guide/desktop/desktop-custom-dictionaries) - [Managed resources for the desktop app](/deployment-guide/desktop/desktop-app-managed-resources) -- [Desktop app troubleshooting](/deployment-guide/desktop/desktop-troubleshooting) ## Privacy and data handling diff --git a/docs/main/deployment-guide/encryption-options.mdx b/docs/main/deployment-guide/encryption-options.mdx index c0daf183fd02..bd487422dc54 100644 --- a/docs/main/deployment-guide/encryption-options.mdx +++ b/docs/main/deployment-guide/encryption-options.mdx @@ -47,10 +47,4 @@ For Amazon’s proprietary S3 system, encryption-at-rest is available via [serve ## SAML encryption support -Mattermost supports the following encryption methods for SAML: - -- aes128-gcm -- aes192-gcm -- aes256-gcm -- aes128-cbc -- aes256-cbc +SAML assertion encryption is configured alongside the rest of your identity provider settings rather than at the infrastructure layer. See [supported SAML encryption methods](/administration-guide/configure/authentication-configuration-settings#supported-saml-encryption-methods) in the authentication configuration settings. diff --git a/docs/main/deployment-guide/mobile/configure-microsoft-intune-mam.mdx b/docs/main/deployment-guide/mobile/configure-microsoft-intune-mam.mdx index 8a495c3e381b..3ed32167f06c 100644 --- a/docs/main/deployment-guide/mobile/configure-microsoft-intune-mam.mdx +++ b/docs/main/deployment-guide/mobile/configure-microsoft-intune-mam.mdx @@ -1,5 +1,6 @@ --- title: "Configure Microsoft Intune Mobile Application Management (MAM)" +sidebar_label: "Configure Microsoft Intune MAM" --- diff --git a/docs/main/deployment-guide/mobile/mobile-app-deployment.mdx b/docs/main/deployment-guide/mobile/mobile-app-deployment.mdx index 10abd1b307dd..88bd08c148ba 100644 --- a/docs/main/deployment-guide/mobile/mobile-app-deployment.mdx +++ b/docs/main/deployment-guide/mobile/mobile-app-deployment.mdx @@ -7,6 +7,12 @@ The Mattermost mobile app is available for iPhone and Android devices, and provi Learn more about [mobile app software requirements](/deployment-guide/software-hardware-requirements#mobile-apps), [available releases and server compatibility](/product-overview/mattermost-mobile-releases), [what's changed across releases](/product-overview/mobile-app-changelog), and [commonly asked questions](/deployment-guide/mobile/mobile-faq). + + +Hitting problems with an installation or rollout? See [Mobile deployment troubleshooting](/deployment-guide/mobile/mobile-troubleshooting) at the end of this section, or [Deployment troubleshooting](/deployment-guide/server/troubleshooting) if the problem might not be specific to the mobile apps. + + + ## Download Download and install the Mattermost mobile app from the [Apple App Store (iOS)](https://www.apple.com/app-store/) or [Google Play Store (Android)](https://play.google.com/store/games?hl=en). When new mobile app releases become available, your mobile app is automatically updated. diff --git a/docs/main/deployment-guide/quick-start-evaluation.mdx b/docs/main/deployment-guide/quick-start-evaluation.mdx index bb19cd51d232..0f769f89bc30 100644 --- a/docs/main/deployment-guide/quick-start-evaluation.mdx +++ b/docs/main/deployment-guide/quick-start-evaluation.mdx @@ -113,9 +113,9 @@ After setting up your Mattermost instance using either method: - Create your first team and channels - Invite users to join your workspace - Explore Mattermost features and integrations -- Review the [Application architecture](/deployment-guide/reference-architecture/application-architecture) to understand the system better -- Consider [Server deployment](/deployment-guide/server/server-deployment-planning) for a production deployment +- Review the [Application architecture](/deployment-guide/application-architecture) to understand the system better +- [Plan your deployment](/deployment-guide/server/server-deployment-planning) before moving to production -For additional help or questions, visit the [Mattermost community forums](https://forum.mattermost.com/) or refer to the [Deployment troubleshooting](/deployment-guide/deployment-troubleshooting) guide. +For additional help or questions, visit the [Mattermost community forums](https://forum.mattermost.com/) or refer to the [Deployment troubleshooting](/deployment-guide/server/troubleshooting) guide. [Book a live demo](https://mattermost.com/request-demo/) or [talk to a Mattermost expert](https://mattermost.com/contact-sales/) to explore tailored solutions for your organization's secure collaboration needs. Or try Mattermost yourself with a [1-hour preview](https://mattermost.com/sign-up/) for instant access to a live sandbox environment. diff --git a/docs/main/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment.mdx b/docs/main/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment.mdx deleted file mode 100644 index c639831613bf..000000000000 --- a/docs/main/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment.mdx +++ /dev/null @@ -1,469 +0,0 @@ ---- -title: "Deploy in Air-Gapped Environments" ---- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -An air-gapped environment is one that is isolated from the public internet, requiring all necessary components to be available locally. This guide outlines what you'll need to deploy Mattermost in a self-hosted air-gapped environment, focusing on appropriate preparation, deployment guidance and configurations required for a successful deployment. - -## Overview - -At a high level, deploying Mattermost in an air-gapped environment requires preparing all necessary software, container images, and configuration resources in advance, since the target system has no direct internet access; transferring these artifacts to the isolated network using secure media; and then installing, configuring, and validating the deployment within the air-gapped environment. This is a summary of the steps involved: - -1. **Select your preferred Mattermost deployment option:** - -This step is often dictated by the infrastruture already running in your air-gapped environment. If you're deploying from scratch, we recommend reviewing our [server deployment documentation](/deployment-guide/server/server-deployment-planning#deployment-options) to select the optimal option given your organizations needs. - -2. **Setup a private container registry or package mirror:** - -Ideally the air-gapped environment already has a private container registry or package mirror available. If not, we recommend following [our frequently asked questions](#frequently-asked-questions) or referencing online resources specific to your environment. - -3. **Prepare your Bill of Materials:** - -Depending on your deployment method method, you'll need to download, tag, and push required materials into your private registry or mirror. - -4. **Transfer materials into the air-gapped environment:** - -If the private registry cannot access the public internet, you can prepare an archive of the registry data on your internet connected machine and securely transfer it using approved data transfer methods - for example, burning to a disk. - -5. **Install Mattermost Server** - -Once you have all the necessary resources in your air-gapped environment, you can move forward with deployment following the instructions for [Linux](/deployment-guide/server/deploy-linux), [Kubernetes](/deployment-guide/server/deploy-kubernetes), or [Docker](/deployment-guide/server/deploy-containers). - -6. **Install Mattermost Desktop Apps** - -Since air-gapped devices cannot access the publicly available app stores, you'll need to install the apps directly from the latest [packages available on our GitHub release page](https://github.com/mattermost/desktop/releases). You'll find [installation instructions](/deployment-guide/desktop/desktop-app-deployment) in our documentation based on your desired deployment method. - -6. **Configure Mattermost for air-gapped operation** - -The [configuration settings](#server-configuration) recommended in this document accomodate for the lack of internet access to operate Mattermost in an air-gapped environment. - - - -Consider [talking to a Mattermost expert](https://mattermost.com/contact-sales/) if your organization needs support deploying Mattermost and supporting services in an air-gapped environment. - - - -## Bill of Materials - -On an internet connected machine, you must gather all required packages, container images, and dependencies needed for the installation process. The resources you'll need will depend on your deployment method, specifically: - - - - -Using our provided tarball is recommeded as the simplest installation method for air-gapped environments. You can install the Mattermost Server in a few minutes on any air-gapped 64-bit Linux system. - -> **Prerequisites** -> -> - [Mattermost tarball](/product-overview/version-archive). We recommend using the latest [ESR](/product-overview/release-policy#extended-support-releases) for extended support where server upgrades may be infrequent. -> - Database: PostgreSQL [installation packages](https://www.postgresql.org/download/) or container images for your Linux distribution -> - File Storage: Local filesystem storage is sufficient for deployments under 2,000 users. For larger deployments requiring high availability, we recommend using an S3-compatible object storage solution or an NFS (Network File System) server for shared storage needs. -> - Load balancer: If you already have a load balancer running in your air-gapped environment you can skip this resource, otherwise we recommend deploying [NGINX](/deployment-guide/server/setup-nginx-proxy) from these [Linux packages](https://nginx.org/en/linux_packages.html). -> - Desktop app: Download the [required package](https://github.com/mattermost/desktop/releases) based on your deployment method. -> -> **(Optional) Supporting Services** Consider downloading these additional resources if you plan to enable these optional components: -> -> - [Mattermost Calls](/deployment-guide/calls/calls-deployment-guide): [mattermost-calls-offloader](https://github.com/mattermost/calls-offloader/releases) (required for recording, transcription and live captions) and [mattermost-rtcd](https://github.com/mattermost/rtcd/releases) (required for performance and scalability). -> - [Elasticsearch](https://www.elastic.co/downloads/elasticsearch) can be [deployed](https://www.elastic.co/docs/deploy-manage/deploy/self-managed/installing-elasticsearch) for enhanced search performance at scale. -> - [Prometheus](https://prometheus.io/download/) and [Grafana](https://grafana.com/grafana/download) for monitoring and observability - - - - -Kubernetes is recommended for a highly scalable and robust deployment if your organization is already running a Kubernetes cluster in the air-gapped environment. - -> **Prerequisites** -> -> - [Mattermost Operator](https://github.com/mattermost/mattermost-helm/tree/master/charts/mattermost-operator) and [values](https://github.com/mattermost/mattermost-helm/blob/master/charts/mattermost-operator/values.yaml) -> - Database: We recommend options such as the [Postgres Operator](https://access.crunchydata.com/documentation/postgres-operator/latest/quickstart) from Crunchy Data, [CloudNativePG](https://cloudnative-pg.io/documentation/1.27/installation_upgrade/) or [pgEdge](https://github.com/pgEdge/pgedge-helm). -> - File Storage: We recommend using an S3-compatible storage service or a mounted NFS volume for shared storage needs. -> - Load balancer: If you already have a load balancer running in your air-gapped environment you can skip this resource, otherwise we recommend deploying [NGINX](/deployment-guide/server/setup-nginx-proxy), using the [NGINX Ingress Controller operator](https://docs.nginx.com/nginx-ingress-controller/installation/installing-nic/installation-with-operator/). -> - Desktop app: Download the [required package](https://github.com/mattermost/desktop/releases) based on your deployment method. -> -> -> -> **Database readiness check (air-gapped recommendation)** -> -> If your installed Mattermost Operator supports `spec.database.readinessCheck.mode`, it can run the database-readiness init container from the same Mattermost image as the main container by setting `spec.database.readinessCheck.mode: builtin` on the `Mattermost` custom resource. The init container then invokes the in-image `mattermost db ping` command instead of pulling `postgres:13` and running `pg_isready`. -> -> We recommend this mode for air-gapped clusters because it removes the requirement to mirror `postgres:13` into your private registry; the only image needed for the readiness check is the Mattermost image you're already mirroring. Before using `builtin` mode, confirm that your installed operator version includes the `readinessCheck.mode` field in the Mattermost CRD or in the operator release notes. `builtin` mode also requires a Mattermost release that ships the `mattermost db ping` command (see the [Mattermost server release notes](https://github.com/mattermost/mattermost/pull/36406) for availability). -> -> Example: -> -> ``` yaml -> spec: -> database: -> external: -> secret: -> readinessCheck: -> mode: builtin -> timeout: 5m # optional; default is 5m -> ``` -> -> The legacy `external` mode (which uses `postgres:13` + `pg_isready`) remains the default for backward compatibility and is still selectable for users on older Mattermost versions, but it is slated for deprecation in a future operator release. See the [Mattermost CRD reference](https://github.com/mattermost/mattermost-operator/blob/master/docs/mattermost_v1beta1_crd.md) for the full `readinessCheck` field schema. -> -> -> -> **(Optional) Supporting Services** Consider downloading these additional resources if you plan to enable these optional components: -> -> - [Mattermost Calls](/deployment-guide/calls/calls-deployment-guide) helm charts: [mattermost-calls-offloader](https://github.com/mattermost/mattermost-helm/tree/master/charts/mattermost-calls-offloader) and [values](https://github.com/mattermost/mattermost-helm/blob/master/charts/mattermost-calls-offloader/values.yaml) (required for recording, transcription and live captions), [mattermost-rtcd](https://github.com/mattermost/mattermost-helm/tree/master/charts/mattermost-rtcd) and [values](https://github.com/mattermost/mattermost-helm/blob/master/charts/mattermost-rtcd/values.yaml) (required for performance and scalability). -> - [Elasticsearch](https://www.elastic.co/docs/deploy-manage/deploy/cloud-on-k8s) can be [deployed in air-gapped k8 environments](https://www.elastic.co/guide/en/cloud-on-k8s/2.8/k8s-air-gapped.html) for enhanced search performance at scale. -> - [Prometheus](https://github.com/prometheus-operator/prometheus-operator) and [Grafana](https://github.com/grafana/grafana-operator) operators for monitoring and observability - - - - -Docker can be used if you don't have a running Kubernetes cluster in the air-gapped environment, but want to use containers for simplified installation and dependency management. Docker is not recommended for production environments at high scale, as it doesn’t support clustered deployments or High Availability (HA) configurations out-of-the-box. - -> **Prerequisites** -> -> - [Mattermost Enterprise Edition](https://hub.docker.com/r/mattermost/mattermost-enterprise-edition) image. -> - Database: [PostgreSQL](https://hub.docker.com/_/postgres) image. -> - Load balancer: If you already have a load balancer running in your air-gapped environment you can skip this resource, otherwise we recommend deploying [NGINX](/deployment-guide/server/setup-nginx-proxy) from this [images](https://hub.docker.com/_/nginx). -> - Desktop app: Download the [required package](https://github.com/mattermost/desktop/releases) based on your deployment method. -> -> **(Optional) Supporting Services** Consider downloading these additional resources if you plan to enable these optional components: -> -> - [Mattermost Calls](/deployment-guide/calls/calls-deployment-guide) images: [calls-offloader](https://hub.docker.com/r/mattermost/calls-offloader) (required for recording, transcription and live captions) and [rtcd](https://hub.docker.com/r/mattermost/rtcd) (required for performance and scalability). -> - [Elasticsearch](https://hub.docker.com/_/elasticsearch) image for enhanced search performance at scale. -> - [Prometheus](https://hub.docker.com/r/prom/prometheus) and [Grafana](https://hub.docker.com/r/grafana/grafana) images for monitoring and observability. - - - - - -### Mattermost Plugins - -Mattermost includes a number of [pre-built integrations](/integrations-guide/popular-integrations) for mission-critical tools. If you'd like to use any plugins beyond those that are pre-built in the Mattermost package you'll need to download the plugin binaries from the [Mattermost Marketplace](https://mattermost.com/marketplace/). Once you have Mattermost deployed, these plugin binaries can be uploaded directly in the System Console. - -### SSL/TLS Certificates and Keys - -If your deployment requires SSL, ensure you have the necessary certificates. This includes certificates and keys for enabling HTTPS with Mattermost, as well as any CA files or certificates needed to access internal services such as LDAP or SAML. - -### Local Documentation - -Mattermost documenation can be [built locally](https://github.com/mattermost/docs?tab=readme-ov-file#build-locally) so you'll have access to installation and configuration documentation in the air-gapped environment. Otherwise, you can download the necessary deployment and configuration documents directly from the [GitHub docs repository](https://github.com/mattermost/docs). - -**Prerequisites** The following software is required to build the documentation locally: - -- Git [\[download\]](https://git-scm.com/downloads) -- Python 3.11 or later [\[download\]](https://www.python.org/downloads) -- Pipenv [\[download\]](https://pipenv.pypa.io) -- GNU Make 3.82 or later [\[download\]](https://ftp.gnu.org/gnu/make/) - -## Server configuration - -After successful deployment, you'll need to configure Mattermost for air-gapped operation. The following sections describe these configuration options and offers recommendations for settings. - -### Mobile push notifications - -Mattermost can use mobile push notifications to notify users of new messages and activity. These notifications require a server component to be deployed to send the notifications to the mobile devices. By default, Mattermost will use the public push notification service which is not available in an air-gapped environment. We recommend [disabling push notifications](/administration-guide/configure/environment-configuration-settings#enable-push-notifications) in **System Console \> Environment \> Push Notification Server**. - -### Email - -Unless you have setup an internal air-gapped email service, we recommend disabling email invitations and email verification from **System Console \> Authentication \> Signup**. - -### Website link previews - -Website link previews require a connection to the internet to fetch the content of the links. We recommend [disabling website link previews](/administration-guide/configure/site-configuration-settings#enable-website-link-previews) in **System Console \> Site Configuration \> Posts**. - -### GIF picker - -The GIF picker relies on a third-party service which has a dependency on external internet access. You can disable it in **System Console \> Integrations \> GIF**. - -### Notices - -[In-product notices](/administration-guide/manage/in-product-notices) require internet access to periodcally inform administrators and end users of new product improvements, features, and releases. You can disable notices in **System Console \> Site Configuration \> Notices**. - -### Telemetry - -To avoid log errors we recommend disabling [Telemetry-related features](/administration-guide/manage/telemetry), including the security update check, and error and diagnostics reporting features. - -## Frequently Asked Questions - -### What if my air-gapped environment doesn't have a private container registry or package mirror? - -A private container registry securely stores the Docker images necessary for air-gapped deployments, ensuring compliance with data isolation requirements. Similarly, a private package mirror stores operating system packages necessary for air-gapped deployments in Ubuntu or RHEL/CentOS Linux environments. Setting up a local registry or mirror is a critical step in deploying Mattermost to ensure all images, dependencies and packages are available to you in the air-gapped environment. The steps below outline the process required to setup a local registry or mirror, depending on the deployment method you are using. These steps are a rough guide, and can be supplemented with online resources depending on your specific deployment needs. - - - - -**(Ubuntu) Set up a private Debian package mirror** - -We will use Aptly to create a local mirror, although you can also use other options such as debmirror. - -1. **Install Aptly** (on an internet-connected machine): - - ``` bash - apt-get update - apt-get install aptly gnupg - ``` - -2. **Create GPG key for signing packages**: - - ``` bash - gpg --gen-key - ``` - -3. **Create a mirror configuration**: - - ``` bash - aptly mirror create -architectures=amd64 debian-bullseye http://deb.debian.org/debian bullseye main contrib non-free - ``` - -4. **Update the mirror to download packages**: - - ``` bash - aptly mirror update debian-bullseye - ``` - -5. **Create and publish a snapshot**: - - ``` bash - aptly snapshot create debian-bullseye-$(date +%Y%m%d) from mirror debian-bullseye - aptly publish snapshot debian-bullseye-$(date +%Y%m%d) - ``` - -6. **Serve the repository**: - - ``` bash - aptly serve - ``` - -7. **Client configuration:** Configure apt to use your local mirror: - - ``` bash - cat > /etc/apt/sources.list << EOF - deb http://mirror.example.com/debian bullseye main contrib non-free - EOF - ``` - -**(RHEL/CentOS) Set up a private RHEL package mirror** - -We will use reprosync for a local mirror. - -1. **Install required tools** (on an internet-connected RHEL system): - - ``` bash - yum install yum-utils createrepo - ``` - -2. **Download packages**: - - ``` bash - mkdir -p /var/www/html/repos/rhel8 - reposync -p /var/www/html/repos/rhel8 --download-metadata --repo=rhel-8-for-x86_64-baseos-rpms - reposync -p /var/www/html/repos/rhel8 --download-metadata --repo=rhel-8-for-x86_64-appstream-rpms - ``` - -3. **Create repository metadata**: - - ``` bash - createrepo /var/www/html/repos/rhel8/rhel-8-for-x86_64-baseos-rpms - createrepo /var/www/html/repos/rhel8/rhel-8-for-x86_64-appstream-rpms - ``` - -4. **Set up a web server**: - - ``` bash - yum install httpd - systemctl enable httpd - systemctl start httpd - ``` - -5. **Client configuration:** Disable existing repositories: - - ``` bash - cd /etc/yum.repos.d/ - mkdir backup - mv *.repo backup/ - ``` - -6. **Client configuration:** Create new repository files: - - ``` bash - cat > /etc/yum.repos.d/local-baseos.repo << EOF - [local-baseos] - name=Red Hat Enterprise Linux 8 BaseOS - baseurl=http://mirror.example.com/repos/rhel8/rhel-8-for-x86_64-baseos-rpms - enabled=1 - gpgcheck=0 - EOF - - cat > /etc/yum.repos.d/local-appstream.repo << EOF - [local-appstream] - name=Red Hat Enterprise Linux 8 AppStream - baseurl=http://mirror.example.com/repos/rhel8/rhel-8-for-x86_64-appstream-rpms - enabled=1 - gpgcheck=0 - EOF - ``` - -7. **Client configuration:** Clear cache and test: - - ``` bash - yum clean all - yum repolist - ``` - - - - -**Set up a self-hosted private container registry** - -1. **Install Docker Registry**: - - ``` bash - docker run -d -p 5000:5000 --restart=always --name registry registry:2 - ``` - -2. **Configure persistent storage**: - - ``` bash - docker run -d -p 5000:5000 --restart=always --name registry \ - -v /mnt/registry:/var/lib/registry \ - registry:2 - ``` - -3. **Add TLS security** (recommended): - - 1. Generate self-signed certificates: - - ``` bash - mkdir -p certs - openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \ - -x509 -days 365 -out certs/domain.crt - ``` - - 2. Run the registry with TLS: - - ``` bash - docker run -d -p 5000:5000 --restart=always --name registry \ - -v /mnt/registry:/var/lib/registry \ - -v $(pwd)/certs:/certs \ - -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ - -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ - registry:2 - ``` - -**Configure Kubernetes to use private image registries** - -When using Kubernetes in an air-gapped environment, you need to configure it to use your private registry. - -1. **Create a kubernetes secret for registry authentication**: - - ``` bash - kubectl create secret docker-registry regcred \ - --docker-server=registry.example.com:5000 \ - --docker-username=your_username \ - --docker-password=your_password \ - --docker-email=your_email@example.com - ``` - -2. **Reference the secret in pod specifications**: - - ``` yaml - apiVersion: v1 - kind: Pod - metadata: - name: mattermost-pod - spec: - containers: - - name: mattermost - image: registry.example.com:5000/mattermost/mattermost-enterprise-edition:latest - imagePullSecrets: - - name: regcred - ``` - -3. **For Helm deployments**, specify the registry in `values.yaml`: - - ``` yaml - image: - repository: registry.example.com:5000/mattermost/mattermost-enterprise-edition - tag: latest - pullPolicy: IfNotPresent - - imagePullSecrets: - - name: regcred - ``` - - - - -**Set up a self-hosted private container registry** - -1. **Install Docker Registry**: - - ``` bash - docker run -d -p 5000:5000 --restart=always --name registry registry:2 - ``` - -2. **Configure persistent storage**: - - ``` bash - docker run -d -p 5000:5000 --restart=always --name registry \ - -v /mnt/registry:/var/lib/registry \ - registry:2 - ``` - -3. **Add TLS security** (recommended): - - 1. Generate self-signed certificates: - - ``` bash - mkdir -p certs - openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \ - -x509 -days 365 -out certs/domain.crt - ``` - - 2. Run the registry with TLS: - - ``` bash - docker run -d -p 5000:5000 --restart=always --name registry \ - -v /mnt/registry:/var/lib/registry \ - -v $(pwd)/certs:/certs \ - -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ - -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ - registry:2 - ``` - -**Populate your private registry** - -Ensure the required images from the [Bill of Materials](bill-of-materials) are downloaded and pushed to the private registry. - -**Configure Docker to use private image registries** - -Configure Docker on all hosts to trust and use your private registry. - -1. **Add your registry to Docker's trusted registries**: - - Edit or create `/etc/docker/daemon.json`: - - ``` json - { - "insecure-registries": ["registry.example.com:5000"] - } - ``` - - For registries using self-signed certificates: - - ``` bash - mkdir -p /etc/docker/certs.d/registry.example.com:5000 - cp domain.crt /etc/docker/certs.d/registry.example.com:5000/ca.crt - ``` - -2. **Restart Docker daemon**: - - ``` bash - systemctl restart docker - ``` - -3. **Test the configuration**: - - ``` bash - docker pull registry.example.com:5000/mattermost/mattermost-enterprise-edition:latest - ``` - - - - diff --git a/docs/main/deployment-guide/reference-architecture/deployment-scenarios/deployment-scenarios-index.mdx b/docs/main/deployment-guide/reference-architecture/deployment-scenarios/deployment-scenarios-index.mdx deleted file mode 100644 index 4f1955b80a4a..000000000000 --- a/docs/main/deployment-guide/reference-architecture/deployment-scenarios/deployment-scenarios-index.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Deployment Scenarios" ---- -This section outlines reference architectures and guidance tailored for specialized Mattermost deployment scenarios, enabling organizations to build secure, compliant, and resilient collaboration environments across diverse operational contexts. - -Whether you’re implementing out-of-band communications, mission partner collaboration, sovereign collaboration within Microsoft ecosystems, or mission-critical operations at the edge, these architectures offer comprehensive guidance, design patterns, and best practices to ensure robust and reliable deployments. - -- [Out-of-Band Communications](/deployment-guide/reference-architecture/deployment-scenarios/deploy-oob) - Deploy Mattermost as an isolated, pre-provisioned communication system for incident response and business continuity. -- [Mission Partner Collaboration](/deployment-guide/reference-architecture/deployment-scenarios/deploy-mission-partner) - Multi-organizational collaboration architecture with secure information sharing between allied networks and coalition partners. -- [Enterprise to Edge DDIL Operations](/deployment-guide/reference-architecture/deployment-scenarios/deploy-ddil-operations) - Deployment patterns for Denied, Degraded, Intermittent, and Limited (DDIL) communication environments with offline capabilities. -- [Sovereign Collaboration in Microsoft](/deployment-guide/reference-architecture/deployment-scenarios/deploy-sovereign-collaboration) - Integration architecture for sovereign cloud environments with Microsoft Teams, Outlook and other M365 services. -- [Air-gapped Deployment](/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment) - Guidance and best practices when deploying Mattermost in air-gapped environments. diff --git a/docs/main/deployment-guide/reference-architecture/reference-architecture-index.mdx b/docs/main/deployment-guide/reference-architecture/reference-architecture-index.mdx deleted file mode 100644 index 08307ffb80d2..000000000000 --- a/docs/main/deployment-guide/reference-architecture/reference-architecture-index.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Reference Architecture" ---- -Mattermost reference architectures describe recommended deployment patterns and system designs that ensure secure, scalable, and resilient collaboration. These frameworks serve as a guide for implementing Mattermost at scale across a range of operational scenarios. - -- [Application Architecture](/deployment-guide/reference-architecture/application-architecture) - An overview of Mattermost's architecture and components. -- [Scaling Architecture](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) - Reference architecture for high availability, clustering, and enterprise-scale deployments. -- [Deployment Scenarios](/deployment-guide/reference-architecture/deployment-scenarios/deployment-scenarios-index) - Reference architectures tailored for specialized Mattermost deployment scenarios. diff --git a/docs/main/deployment-guide/reference-architecture/scale/additional-ha-considerations.mdx b/docs/main/deployment-guide/scale/additional-ha-considerations.mdx similarity index 55% rename from docs/main/deployment-guide/reference-architecture/scale/additional-ha-considerations.mdx rename to docs/main/deployment-guide/scale/additional-ha-considerations.mdx index 44dd9222e36d..c563c23a6578 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/additional-ha-considerations.mdx +++ b/docs/main/deployment-guide/scale/additional-ha-considerations.mdx @@ -2,6 +2,6 @@ title: Additional HA considerations unlisted: true --- -[Elasticsearch](https://www.elastic.co) provides enterprise-scale deployments with optimized search performance and prevents performance degradation and timeouts. Elasticsearch allows you to search large volumes of data quickly, in near real-time, by creating and managing an index of post data. Mattermost’s implementation uses [Elasticsearch](https://www.elastic.co) as a distributed, RESTful search engine supporting highly efficient database searches in a [cluster environment](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment). Visit the [Mattermost Elasticsearch product documentation](/deployment-guide/reference-architecture/scale/elasticsearch-setup) for deployment and configuration details. +[Elasticsearch](https://www.elastic.co) provides enterprise-scale deployments with optimized search performance and prevents performance degradation and timeouts. Elasticsearch allows you to search large volumes of data quickly, in near real-time, by creating and managing an index of post data. Mattermost’s implementation uses [Elasticsearch](https://www.elastic.co) as a distributed, RESTful search engine supporting highly efficient database searches in a [cluster environment](/deployment-guide/server/high-availability-cluster-based-deployment). Visit the [Mattermost Elasticsearch product documentation](/deployment-guide/scale/elasticsearch-setup) for deployment and configuration details. -Performance monitoring support enables a Mattermost server to track system health for large Enterprise deployments through integrations with [Prometheus](https://prometheus.io/) and [Grafana](https://grafana.com/). These integrations support data collection from several Mattermost servers, which is particularly useful if you’re running Mattermost [in high availability mode](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment). Once you’re tracking system health, you can [set up performance alerts](/administration-guide/scale/performance-alerting) on your Grafana dashboard. Visit the [Mattermost Performance Monitoring product documentation](/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring) for installation details. +Performance monitoring support enables a Mattermost server to track system health for large Enterprise deployments through integrations with [Prometheus](https://prometheus.io/) and [Grafana](https://grafana.com/). These integrations support data collection from several Mattermost servers, which is particularly useful if you’re running Mattermost [in high availability mode](/deployment-guide/server/high-availability-cluster-based-deployment). Once you’re tracking system health, you can [set up performance alerts](/administration-guide/scale/performance-alerting) on your Grafana dashboard. Visit the [Mattermost Performance Monitoring product documentation](/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring) for installation details. diff --git a/docs/main/deployment-guide/reference-architecture/scale/backing-storage-benchmarks.mdx b/docs/main/deployment-guide/scale/backing-storage-benchmarks.mdx similarity index 97% rename from docs/main/deployment-guide/reference-architecture/scale/backing-storage-benchmarks.mdx rename to docs/main/deployment-guide/scale/backing-storage-benchmarks.mdx index df6b429419c1..eab4e888e3bf 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/backing-storage-benchmarks.mdx +++ b/docs/main/deployment-guide/scale/backing-storage-benchmarks.mdx @@ -139,7 +139,7 @@ This page provides detailed write and read benchmark results for supported stora - For S3 tests, [Amazon S3 exported upload part size](/administration-guide/configure/environment-configuration-settings#amazon-s3-upload-part-size) was set to the default value (100MB). - Local EBS storage is the stock gp3 (3000 IOPS) provided by EC2 instances. -- Both EBS and EFS solutions tested are considered `local` storage options from the application's perspective, where the [file storage system](/administration-guide/configure/environment-configuration-settings#file-storage-system) is set to `local` in both cases. EFS is essentially AWS's managed NFS, which enables it to serve as a potential alternative to S3 by allowing multiple Mattermost nodes in a high-availability (HA) deployment to share a common file system. In such HA scenarios, the standard local file storage (e.g., an EBS volume attached to a single instance) [is not suitable, as it can't be shared across multiple nodes](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment#file-storage). EFS is a good alternative in this case, but EFS is not a block storage solution like EBS. +- Both EBS and EFS solutions tested are considered `local` storage options from the application's perspective, where the [file storage system](/administration-guide/configure/environment-configuration-settings#file-storage-system) is set to `local` in both cases. EFS is essentially AWS's managed NFS, which enables it to serve as a potential alternative to S3 by allowing multiple Mattermost nodes in a high-availability (HA) deployment to share a common file system. In such HA scenarios, the standard local file storage (e.g., an EBS volume attached to a single instance) [is not suitable, as it can't be shared across multiple nodes](/deployment-guide/server/high-availability-cluster-based-deployment#file-storage). EFS is a good alternative in this case, but EFS is not a block storage solution like EBS. ## Supported storage options diff --git a/docs/main/deployment-guide/reference-architecture/scale/common-configure-mattermost-for-enterprise-search.mdx b/docs/main/deployment-guide/scale/common-configure-mattermost-for-enterprise-search.mdx similarity index 94% rename from docs/main/deployment-guide/reference-architecture/scale/common-configure-mattermost-for-enterprise-search.mdx rename to docs/main/deployment-guide/scale/common-configure-mattermost-for-enterprise-search.mdx index 69b212f46f9b..7e1b3c312bb8 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/common-configure-mattermost-for-enterprise-search.mdx +++ b/docs/main/deployment-guide/scale/common-configure-mattermost-for-enterprise-search.mdx @@ -1,6 +1,10 @@ --- title: "Set server connection details" +unlisted: true --- +{/* Snippet include: imported by elasticsearch-setup and opensearch-setup. Kept as + its own page because admin-onboarding-tasks deep-links to its "enterprise + search limitations" anchor. */} 1. (Optional) Enter **Server Username** used to access the enterprise search server. 2. (Optional) Enter **Server Password** associated with the username. 3. Set **Enable Cluster Sniffing** (Optional). Sniffing finds and connects to all data nodes in your cluster automatically. @@ -38,7 +42,7 @@ For high post volume deployments, we strongly encourage you to read and properly -For high post volume deployments, we also strongly recommend *disabling* Database Search once Elasticsearch or AWS OpenSearch is fully configured and running. The Mattermost Server will fall back on Database search if Elasticsearch or OpenSearch are unavailable, which can lead to performance degradation on high post volume deployments. From Mattermost v11.7, the server proactively detects outages through periodic health checks and falls back to database search on the first health check failure, rather than waiting for requests to time out. See the [outage handling FAQ](/deployment-guide/reference-architecture/scale/enterprise-search#how-does-mattermost-handle-elasticsearch-or-opensearch-outages) for details. +For high post volume deployments, we also strongly recommend *disabling* Database Search once Elasticsearch or AWS OpenSearch is fully configured and running. The Mattermost Server will fall back on Database search if Elasticsearch or OpenSearch are unavailable, which can lead to performance degradation on high post volume deployments. From Mattermost v11.7, the server proactively detects outages through periodic health checks and falls back to database search on the first health check failure, rather than waiting for requests to time out. See the [outage handling FAQ](/deployment-guide/scale/enterprise-search#how-does-mattermost-handle-elasticsearch-or-opensearch-outages) for details. diff --git a/docs/main/deployment-guide/reference-architecture/scale/elasticsearch-setup.mdx b/docs/main/deployment-guide/scale/elasticsearch-setup.mdx similarity index 100% rename from docs/main/deployment-guide/reference-architecture/scale/elasticsearch-setup.mdx rename to docs/main/deployment-guide/scale/elasticsearch-setup.mdx diff --git a/docs/main/deployment-guide/reference-architecture/scale/enterprise-search.mdx b/docs/main/deployment-guide/scale/enterprise-search.mdx similarity index 94% rename from docs/main/deployment-guide/reference-architecture/scale/enterprise-search.mdx rename to docs/main/deployment-guide/scale/enterprise-search.mdx index 068259bda96f..796336e54f46 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/enterprise-search.mdx +++ b/docs/main/deployment-guide/scale/enterprise-search.mdx @@ -16,13 +16,13 @@ Mattermost database search starts to show performance degradation at around 2 mi Elasticsearch is a well-established and widely used search engine with a large ecosystem and community support that provides enterprise-scale deployments with optimized search performance, dedicated indexing, and usage resourcing via cluster support for fast, predicable search results. -Mattermost's implementation uses [Elasticsearch](https://www.elastic.co) as a distributed, RESTful search engine supporting highly efficient database searches in a [cluster environment](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment). Learn more about [setting up and configuring Mattermost for an Elasticsearch server](/deployment-guide/reference-architecture/scale/elasticsearch-setup). +Mattermost's implementation uses [Elasticsearch](https://www.elastic.co) as a distributed, RESTful search engine supporting highly efficient database searches in a [cluster environment](/deployment-guide/server/high-availability-cluster-based-deployment). Learn more about [setting up and configuring Mattermost for an Elasticsearch server](/deployment-guide/scale/elasticsearch-setup). ## AWS OpenSearch Service AWS OpenSearch Service is the official path forward from Elasticsearch v7.10.x for AWS customers. It's a fully managed service that makes it easy to deploy, operate, and scale OpenSearch clusters in the AWS Cloud to provide a simple and cost-effective way to search, analyze, and visualize data in real time. -The AWS OpenSearch Service is built on the open-source OpenSearch project, which is a community-driven fork of Elasticsearch. Learn more about [setting up and configuring Mattermost for an OpenSearch server](/deployment-guide/reference-architecture/scale/opensearch-setup). +The AWS OpenSearch Service is built on the open-source OpenSearch project, which is a community-driven fork of Elasticsearch. Learn more about [setting up and configuring Mattermost for an OpenSearch server](/deployment-guide/scale/opensearch-setup). ## Supported paths @@ -31,12 +31,12 @@ Review the following support paths for enterprise search based on the version yo -[Elasticsearch v9](https://www.elastic.co/guide/en/elasticsearch/reference/current/elasticsearch-intro.html) is supported from Mattermost v11.7. We recommend upgrading to Elasticsearch v9 for the latest features and security updates. See the [Elasticsearch upgrade](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html) documentation for upgrade details, and see the [Elasticsearch setup](/deployment-guide/reference-architecture/scale/elasticsearch-setup) documentation for details on configuring your Mattermost deployment to use Elasticsearch. +[Elasticsearch v9](https://www.elastic.co/guide/en/elasticsearch/reference/current/elasticsearch-intro.html) is supported from Mattermost v11.7. We recommend upgrading to Elasticsearch v9 for the latest features and security updates. See the [Elasticsearch upgrade](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html) documentation for upgrade details, and see the [Elasticsearch setup](/deployment-guide/scale/elasticsearch-setup) documentation for details on configuring your Mattermost deployment to use Elasticsearch. -[Elasticsearch v8](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/elasticsearch-intro.html) is supported from Mattermost v9.11. We recommend upgrading to Elasticsearch v9 for the latest features and security updates. See the [Elasticsearch upgrade](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html) documentation for upgrade details, and see the [Elasticsearch setup](/deployment-guide/reference-architecture/scale/elasticsearch-setup) documentation for details on configuring your Mattermost deployment to use Elasticsearch. +[Elasticsearch v8](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/elasticsearch-intro.html) is supported from Mattermost v9.11. We recommend upgrading to Elasticsearch v9 for the latest features and security updates. See the [Elasticsearch upgrade](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html) documentation for upgrade details, and see the [Elasticsearch setup](/deployment-guide/scale/elasticsearch-setup) documentation for details on configuring your Mattermost deployment to use Elasticsearch. @@ -49,7 +49,7 @@ Elasticsearch v7.17 is no longer supported as of Mattermost v11.7. If you're sti AWS OpenSearch Service is the official path forward from Elasticsearch v7.10.x for AWS customers to provide a simple and cost-effective way to search, analyze, and visual data in real time. It's essentially a continuation of Elasticsearch v7.10.x but maintained as open source by AWS. It provides long-term support, active development, and compatibility with AWS clients, libraries, and managed services. -See the **AWS Elasticsearch v7.10.x** tab on this page for details on upgrading to AWS OpenSearch, and see the [AWS OpenSearch setup](/deployment-guide/reference-architecture/scale/opensearch-setup) documentation for details on configuring your Mattermost deployment to use AWS OpenSearch. +See the **AWS Elasticsearch v7.10.x** tab on this page for details on upgrading to AWS OpenSearch, and see the [AWS OpenSearch setup](/deployment-guide/scale/opensearch-setup) documentation for details on configuring your Mattermost deployment to use AWS OpenSearch. diff --git a/docs/main/deployment-guide/reference-architecture/scale/estimated-storage-per-user-per-month.mdx b/docs/main/deployment-guide/scale/estimated-storage-per-user-per-month.mdx similarity index 100% rename from docs/main/deployment-guide/reference-architecture/scale/estimated-storage-per-user-per-month.mdx rename to docs/main/deployment-guide/scale/estimated-storage-per-user-per-month.mdx diff --git a/docs/main/deployment-guide/reference-architecture/scale/lifetime-storage.mdx b/docs/main/deployment-guide/scale/lifetime-storage.mdx similarity index 100% rename from docs/main/deployment-guide/reference-architecture/scale/lifetime-storage.mdx rename to docs/main/deployment-guide/scale/lifetime-storage.mdx diff --git a/docs/main/deployment-guide/reference-architecture/scale/opensearch-setup.mdx b/docs/main/deployment-guide/scale/opensearch-setup.mdx similarity index 100% rename from docs/main/deployment-guide/reference-architecture/scale/opensearch-setup.mdx rename to docs/main/deployment-guide/scale/opensearch-setup.mdx diff --git a/docs/main/deployment-guide/reference-architecture/scale/redis.mdx b/docs/main/deployment-guide/scale/redis.mdx similarity index 100% rename from docs/main/deployment-guide/reference-architecture/scale/redis.mdx rename to docs/main/deployment-guide/scale/redis.mdx diff --git a/docs/main/deployment-guide/reference-architecture/scale/scale-to-100000-users.mdx b/docs/main/deployment-guide/scale/scale-to-100000-users.mdx similarity index 93% rename from docs/main/deployment-guide/reference-architecture/scale/scale-to-100000-users.mdx rename to docs/main/deployment-guide/scale/scale-to-100000-users.mdx index 38ae86fc2732..ba7f188eae18 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/scale-to-100000-users.mdx +++ b/docs/main/deployment-guide/scale/scale-to-100000-users.mdx @@ -1,5 +1,5 @@ --- -title: "Scale Mattermost up to 100000 users" +title: "Scale Mattermost up to 100,000 users" --- import Inc0_lifetime_storage from './lifetime-storage.mdx'; import Inc1_estimated_storage_per_user_per_month from './estimated-storage-per-user-per-month.mdx'; @@ -7,7 +7,7 @@ import Inc2_additional_ha_considerations from './additional-ha-considerations.md -This page describes the Mattermost reference architecture designed for the load of up to 100000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) documentation for details. +This page describes the Mattermost reference architecture designed for the load of up to 100,000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/scale/scaling-for-enterprise) documentation for details. - **High Availability**: Required - **Database Configuration**: writer, multiple readers diff --git a/docs/main/deployment-guide/reference-architecture/scale/scale-to-15000-users.mdx b/docs/main/deployment-guide/scale/scale-to-15000-users.mdx similarity index 93% rename from docs/main/deployment-guide/reference-architecture/scale/scale-to-15000-users.mdx rename to docs/main/deployment-guide/scale/scale-to-15000-users.mdx index 558e6d23e5b7..6dd9642bafc5 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/scale-to-15000-users.mdx +++ b/docs/main/deployment-guide/scale/scale-to-15000-users.mdx @@ -1,5 +1,5 @@ --- -title: "Scale Mattermost up to 15000 users" +title: "Scale Mattermost up to 15,000 users" --- import Inc0_lifetime_storage from './lifetime-storage.mdx'; import Inc1_estimated_storage_per_user_per_month from './estimated-storage-per-user-per-month.mdx'; @@ -7,7 +7,7 @@ import Inc2_additional_ha_considerations from './additional-ha-considerations.md -This page describes the Mattermost reference architecture designed for the load of up to 15000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) documentation for details. +This page describes the Mattermost reference architecture designed for the load of up to 15,000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/scale/scaling-for-enterprise) documentation for details. - **High Availability**: Required - **Database Configuration**: writer, reader diff --git a/docs/main/deployment-guide/reference-architecture/scale/scale-to-200-users.mdx b/docs/main/deployment-guide/scale/scale-to-200-users.mdx similarity index 97% rename from docs/main/deployment-guide/reference-architecture/scale/scale-to-200-users.mdx rename to docs/main/deployment-guide/scale/scale-to-200-users.mdx index 0f152aa2e01c..3c383cb52a61 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/scale-to-200-users.mdx +++ b/docs/main/deployment-guide/scale/scale-to-200-users.mdx @@ -4,7 +4,7 @@ title: "Scale Mattermost up to 200 users" import Inc0_lifetime_storage from './lifetime-storage.mdx'; import Inc1_estimated_storage_per_user_per_month from './estimated-storage-per-user-per-month.mdx'; -This page describes the Mattermost reference architecture designed for the load of up to 200 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) documentation for details. +This page describes the Mattermost reference architecture designed for the load of up to 200 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/scale/scaling-for-enterprise) documentation for details. - **High Availability**: Not required - **Database Configuration**: Single diff --git a/docs/main/deployment-guide/reference-architecture/scale/scale-to-2000-users.mdx b/docs/main/deployment-guide/scale/scale-to-2000-users.mdx similarity index 92% rename from docs/main/deployment-guide/reference-architecture/scale/scale-to-2000-users.mdx rename to docs/main/deployment-guide/scale/scale-to-2000-users.mdx index b1ab85067580..6fbc3d8bfcb8 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/scale-to-2000-users.mdx +++ b/docs/main/deployment-guide/scale/scale-to-2000-users.mdx @@ -1,5 +1,5 @@ --- -title: "Scale Mattermost up to 2000 users" +title: "Scale Mattermost up to 2,000 users" --- import Inc0_lifetime_storage from './lifetime-storage.mdx'; import Inc1_estimated_storage_per_user_per_month from './estimated-storage-per-user-per-month.mdx'; @@ -7,7 +7,7 @@ import Inc2_additional_ha_considerations from './additional-ha-considerations.md -This page describes the Mattermost reference architecture designed for a minimum load of 100 concurrent users and up to 2000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) documentation for details. +This page describes the Mattermost reference architecture designed for a minimum load of 100 concurrent users and up to 2,000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/scale/scaling-for-enterprise) documentation for details. - **High Availability**: Required - **Database Configuration**: writer, reader diff --git a/docs/main/deployment-guide/reference-architecture/scale/scale-to-200000-users.mdx b/docs/main/deployment-guide/scale/scale-to-200000-users.mdx similarity index 94% rename from docs/main/deployment-guide/reference-architecture/scale/scale-to-200000-users.mdx rename to docs/main/deployment-guide/scale/scale-to-200000-users.mdx index 6fff47aaf4c7..f62a31f7626f 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/scale-to-200000-users.mdx +++ b/docs/main/deployment-guide/scale/scale-to-200000-users.mdx @@ -1,5 +1,5 @@ --- -title: "Scale Mattermost up to 200000 users" +title: "Scale Mattermost up to 200,000 users" --- import Inc0_lifetime_storage from './lifetime-storage.mdx'; import Inc1_estimated_storage_per_user_per_month from './estimated-storage-per-user-per-month.mdx'; @@ -7,7 +7,7 @@ import Inc2_additional_ha_considerations from './additional-ha-considerations.md -This page describes the Mattermost reference architecture designed for the load of up to 200000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) documentation for details. +This page describes the Mattermost reference architecture designed for the load of up to 200,000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/scale/scaling-for-enterprise) documentation for details. - **High Availability**: Required - **Database Configuration**: writer, multiple readers diff --git a/docs/main/deployment-guide/reference-architecture/scale/scale-to-30000-users.mdx b/docs/main/deployment-guide/scale/scale-to-30000-users.mdx similarity index 93% rename from docs/main/deployment-guide/reference-architecture/scale/scale-to-30000-users.mdx rename to docs/main/deployment-guide/scale/scale-to-30000-users.mdx index 5c1ead2ae4c4..280d9cf6cad5 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/scale-to-30000-users.mdx +++ b/docs/main/deployment-guide/scale/scale-to-30000-users.mdx @@ -1,5 +1,5 @@ --- -title: "Scale Mattermost up to 30000 users" +title: "Scale Mattermost up to 30,000 users" --- import Inc0_lifetime_storage from './lifetime-storage.mdx'; import Inc1_estimated_storage_per_user_per_month from './estimated-storage-per-user-per-month.mdx'; @@ -7,7 +7,7 @@ import Inc2_additional_ha_considerations from './additional-ha-considerations.md -This page describes the Mattermost reference architecture designed for the load of up to 30000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) documentation for details. +This page describes the Mattermost reference architecture designed for the load of up to 30,000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/scale/scaling-for-enterprise) documentation for details. - **High Availability**: Required - **Database Configuration**: writer, multiple readers diff --git a/docs/main/deployment-guide/reference-architecture/scale/scale-to-50000-users.mdx b/docs/main/deployment-guide/scale/scale-to-50000-users.mdx similarity index 93% rename from docs/main/deployment-guide/reference-architecture/scale/scale-to-50000-users.mdx rename to docs/main/deployment-guide/scale/scale-to-50000-users.mdx index c97e5ee6200d..287329e293fb 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/scale-to-50000-users.mdx +++ b/docs/main/deployment-guide/scale/scale-to-50000-users.mdx @@ -1,5 +1,5 @@ --- -title: "Scale Mattermost up to 50000 users" +title: "Scale Mattermost up to 50,000 users" --- import Inc0_lifetime_storage from './lifetime-storage.mdx'; import Inc1_estimated_storage_per_user_per_month from './estimated-storage-per-user-per-month.mdx'; @@ -7,7 +7,7 @@ import Inc2_additional_ha_considerations from './additional-ha-considerations.md -This page describes the Mattermost reference architecture designed for the load of up to 50000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) documentation for details. +This page describes the Mattermost reference architecture designed for the load of up to 50,000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/scale/scaling-for-enterprise) documentation for details. - **High Availability**: Required - **Database Configuration**: writer, multiple readers diff --git a/docs/main/deployment-guide/reference-architecture/scale/scale-to-80000-users.mdx b/docs/main/deployment-guide/scale/scale-to-80000-users.mdx similarity index 93% rename from docs/main/deployment-guide/reference-architecture/scale/scale-to-80000-users.mdx rename to docs/main/deployment-guide/scale/scale-to-80000-users.mdx index 465a7d8f0ee2..c85c4295a628 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/scale-to-80000-users.mdx +++ b/docs/main/deployment-guide/scale/scale-to-80000-users.mdx @@ -1,5 +1,5 @@ --- -title: "Scale Mattermost up to 80000 users" +title: "Scale Mattermost up to 80,000 users" --- import Inc0_lifetime_storage from './lifetime-storage.mdx'; import Inc1_estimated_storage_per_user_per_month from './estimated-storage-per-user-per-month.mdx'; @@ -7,7 +7,7 @@ import Inc2_additional_ha_considerations from './additional-ha-considerations.md -This page describes the Mattermost reference architecture designed for the load of up to 80000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) documentation for details. +This page describes the Mattermost reference architecture designed for the load of up to 80,000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/scale/scaling-for-enterprise) documentation for details. - **High Availability**: Required - **Database Configuration**: writer, multiple readers diff --git a/docs/main/deployment-guide/reference-architecture/scale/scale-to-90000-users.mdx b/docs/main/deployment-guide/scale/scale-to-90000-users.mdx similarity index 93% rename from docs/main/deployment-guide/reference-architecture/scale/scale-to-90000-users.mdx rename to docs/main/deployment-guide/scale/scale-to-90000-users.mdx index 66b5134cf5ec..53f7e621ca76 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/scale-to-90000-users.mdx +++ b/docs/main/deployment-guide/scale/scale-to-90000-users.mdx @@ -1,5 +1,5 @@ --- -title: "Scale Mattermost up to 90000 users" +title: "Scale Mattermost up to 90,000 users" --- import Inc0_lifetime_storage from './lifetime-storage.mdx'; import Inc1_estimated_storage_per_user_per_month from './estimated-storage-per-user-per-month.mdx'; @@ -7,7 +7,7 @@ import Inc2_additional_ha_considerations from './additional-ha-considerations.md -This page describes the Mattermost reference architecture designed for the load of up to 90000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) documentation for details. +This page describes the Mattermost reference architecture designed for the load of up to 90,000 concurrent users. Unsure which reference architecture to use? See the [scaling for enterprise](/deployment-guide/scale/scaling-for-enterprise) documentation for details. - **High Availability**: Required - **Database Configuration**: writer, multiple readers diff --git a/docs/main/deployment-guide/reference-architecture/scale/scaling-for-enterprise.mdx b/docs/main/deployment-guide/scale/scaling-for-enterprise.mdx similarity index 68% rename from docs/main/deployment-guide/reference-architecture/scale/scaling-for-enterprise.mdx rename to docs/main/deployment-guide/scale/scaling-for-enterprise.mdx index 2d5391ca30c3..07383f4c38cc 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/scaling-for-enterprise.mdx +++ b/docs/main/deployment-guide/scale/scaling-for-enterprise.mdx @@ -13,35 +13,35 @@ Server requirements vary based on usage and we highly recommend that you run a p ## Backing storage -Review detailed [write and read storage benchmark results](/deployment-guide/reference-architecture/scale/backing-storage-benchmarks) for supported storage options including local file system (EBS, gp3), network file system (EFS), and object storage (S3) to make informed decisions based on your use case and infrastructure needs. +Review detailed [write and read storage benchmark results](/deployment-guide/scale/backing-storage-benchmarks) for supported storage options including local file system (EBS, gp3), network file system (EFS), and object storage (S3) to make informed decisions based on your use case and infrastructure needs. ## Enterprise search We highly recommend a dedicated server for large enterprise deployments to run highly efficient database searches in a cluster environment. -For deployments with over 5 million posts, [Enterprise search](/deployment-guide/reference-architecture/scale/enterprise-search) using [Elasticsearch](/deployment-guide/reference-architecture/scale/enterprise-search#elasticsearch) or [AWS OpenSearch Service](/deployment-guide/reference-architecture/scale/enterprise-search#aws-opensearch-service) is required for optimized search performance, dedicated indexing and usage resourcing via cluster support without performance degradation and timeouts, resulting in faster, more predicable search results. +For deployments with over 5 million posts, [Enterprise search](/deployment-guide/scale/enterprise-search) using [Elasticsearch](/deployment-guide/scale/enterprise-search#elasticsearch) or [AWS OpenSearch Service](/deployment-guide/scale/enterprise-search#aws-opensearch-service) is required for optimized search performance, dedicated indexing and usage resourcing via cluster support without performance degradation and timeouts, resulting in faster, more predicable search results. ## High availability -A [high availability cluster-based deployment](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) enables a Mattermost system to maintain service during outages and hardware failures through the use of redundant infrastructure. +A [high availability cluster-based deployment](/deployment-guide/server/high-availability-cluster-based-deployment) enables a Mattermost system to maintain service during outages and hardware failures through the use of redundant infrastructure. ## Redis -[Redis](/deployment-guide/reference-architecture/scale/redis) is an in-memory data structure store that can be used as a database, cache, and message broker. Mattermost uses Redis as an external cache to improve performance at scale. When properly configured, Redis can help support Mattermost installations with more than 100,000 users by providing improved performance through efficient caching. +[Redis](/deployment-guide/scale/redis) is an in-memory data structure store that can be used as a database, cache, and message broker. Mattermost uses Redis as an external cache to improve performance at scale. When properly configured, Redis can help support Mattermost installations with more than 100,000 users by providing improved performance through efficient caching. ## Available reference architectures The following reference architectures are available as recommended starting points for your self-hosted Mattermost deployment, where user counts refer to the number of concurrent users for a given deployment. The number of concurrent numbers is commonly lower than the total number of user accounts. -- [Scale up to 200 users](/deployment-guide/reference-architecture/scale/scale-to-200-users) - Learn how to scale Mattermost to up to 200 users. -- [Scale up to 2000 users](/deployment-guide/reference-architecture/scale/scale-to-2000-users) - Learn how to scale Mattermost to up to 2000 users. -- [Scale up to 15000 users](/deployment-guide/reference-architecture/scale/scale-to-15000-users) - Learn how to scale Mattermost to up to 15000 users. -- [Scale up to 30000 users](/deployment-guide/reference-architecture/scale/scale-to-30000-users) - Learn how to scale Mattermost to up to 30000 users. -- [Scale up to 50000 users](/deployment-guide/reference-architecture/scale/scale-to-50000-users) - Learn how to scale Mattermost to up to 50000 users. -- [Scale up to 80000 users](/deployment-guide/reference-architecture/scale/scale-to-80000-users) - Learn how to scale Mattermost to up to 80000 users. -- [Scale up to 90000 users](/deployment-guide/reference-architecture/scale/scale-to-90000-users) - Learn how to scale Mattermost to up to 90000 users. -- [Scale up to 100000 users](/deployment-guide/reference-architecture/scale/scale-to-100000-users) - Learn how to scale Mattermost to up to 100000 users. -- [Scale up to 200000 users](/deployment-guide/reference-architecture/scale/scale-to-200000-users) - Learn how to scale Mattermost to up to 200000 users. +- [Scale up to 200 users](/deployment-guide/scale/scale-to-200-users) - Learn how to scale Mattermost to up to 200 users. +- [Scale up to 2,000 users](/deployment-guide/scale/scale-to-2000-users) - Learn how to scale Mattermost to up to 2,000 users. +- [Scale up to 15,000 users](/deployment-guide/scale/scale-to-15000-users) - Learn how to scale Mattermost to up to 15,000 users. +- [Scale up to 30,000 users](/deployment-guide/scale/scale-to-30000-users) - Learn how to scale Mattermost to up to 30,000 users. +- [Scale up to 50,000 users](/deployment-guide/scale/scale-to-50000-users) - Learn how to scale Mattermost to up to 50,000 users. +- [Scale up to 80,000 users](/deployment-guide/scale/scale-to-80000-users) - Learn how to scale Mattermost to up to 80,000 users. +- [Scale up to 90,000 users](/deployment-guide/scale/scale-to-90000-users) - Learn how to scale Mattermost to up to 90,000 users. +- [Scale up to 100,000 users](/deployment-guide/scale/scale-to-100000-users) - Learn how to scale Mattermost to up to 100,000 users. +- [Scale up to 200,000 users](/deployment-guide/scale/scale-to-200000-users) - Learn how to scale Mattermost to up to 200,000 users. @@ -57,7 +57,7 @@ At a high level, each deployment size was fixed (Mattermost server node count/si Tests were defined by configuration of the actions executed by each simulated user (and the frequency of these actions) where the coordinator metrics define a health system under load. Tests were performed using the Mattermost v9.5 Extended Support Release (ESR). Job servers weren't used. All tests with more than a single app node had an NGINX proxy running in front of them. -For the last test of 200K users, further infrastructure changes were made. Elasticsearch nodes were added. A Redis instance was added, and multiple NGINX proxies were used to distribute traffic evenly across all nodes in the cluster. More details can be found on the [scale to 200000 users](/deployment-guide/reference-architecture/scale/scale-to-200000-users) documentation page. +For the last test of 200K users, further infrastructure changes were made. Elasticsearch nodes were added. A Redis instance was added, and multiple NGINX proxies were used to distribute traffic evenly across all nodes in the cluster. More details can be found on the [scale to 200000 users](/deployment-guide/scale/scale-to-200000-users) documentation page. Full testing methodology, configuration, and setup is available, incluidng a [fixed database dump with 100 million posts](https://us-east-1.console.aws.amazon.com/backup/home?region=us-east-1#/resources/arn%3Aaws%3Ards%3Aus-east-1%3A729462591288%3Acluster%3Adb-pg-100m-posts-v9-5-5). Visit the [Mattermost Community](https://community.mattermost.com/) and join the [Developers: Performance channel](https://community.mattermost.com/core/channels/developers-performance) for details. diff --git a/docs/main/deployment-guide/reference-architecture/scale/server-architecture.mdx b/docs/main/deployment-guide/scale/server-architecture.mdx similarity index 90% rename from docs/main/deployment-guide/reference-architecture/scale/server-architecture.mdx rename to docs/main/deployment-guide/scale/server-architecture.mdx index dd378a722c3e..0f0e6c1a92dd 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/server-architecture.mdx +++ b/docs/main/deployment-guide/scale/server-architecture.mdx @@ -5,7 +5,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -The following diagrams detail suggested architecture configurations of [high availability Mattermost deployments](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment#deployment-guide) at different scales. Hardware and infrastructure requirements will vary significantly based on usage and policies. See the [scaling for enterprise](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) documentation for reference architecture guidance at scale, including hardware and infrastructure requirements. +The following diagrams detail suggested architecture configurations of [high availability Mattermost deployments](/deployment-guide/server/high-availability-cluster-based-deployment#deployment-guide) at different scales. Hardware and infrastructure requirements will vary significantly based on usage and policies. See the [scaling for enterprise](/deployment-guide/scale/scaling-for-enterprise) documentation for reference architecture guidance at scale, including hardware and infrastructure requirements. High availability in Mattermost consists of running redundant Mattermost application servers, redundant database servers, and redundant load balancers so that failure of any one of these components does not interrupt operation of the system. Upon failure of one component, the remaining application servers, database servers, and load balancers must be sized and configured to carry the full load of the system. If this requirement is not met, an outage of one component can result in an overload of the remaining components, causing a complete system outage. @@ -19,7 +19,7 @@ You can apply most configuration changes and dot release security updates withou ## Designed for scale -Mattermost is designed to be able to handle a large number of concurrent users, and the architecture can be scaled up or down as needed. The architecture is also designed to be flexible, allowing for the addition of new components or services as needed. The following diagrams show the recommended architecture for Mattermost deployments at 5,000, 10,000, 25,000, and 50,000 users. The diagrams are organized by user count and include a general diagram, AWS and Azure versions of each diagram, and an Oracle diagram for 5,000 users. See the [scaling for enterprise](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) documentation for more information on scaling Mattermost deployments. +Mattermost is designed to be able to handle a large number of concurrent users, and the architecture can be scaled up or down as needed. The architecture is also designed to be flexible, allowing for the addition of new components or services as needed. The following diagrams show the recommended architecture for Mattermost deployments at 5,000, 10,000, 25,000, and 50,000 users. The diagrams are organized by user count and include a general diagram, AWS and Azure versions of each diagram, and an Oracle diagram for 5,000 users. See the [scaling for enterprise](/deployment-guide/scale/scaling-for-enterprise) documentation for more information on scaling Mattermost deployments. - Each generalized diagram represents a full High Availability deployment across all critical components. The proxy, database, file storage, and Elasticsearch layers can be replaced by cloud services. - Each AWS diagram represents a full High Availability deployment on Amazon Web Services making full use of the available services. diff --git a/docs/main/deployment-guide/server/containers/fips-stig.mdx b/docs/main/deployment-guide/server/containers/fips-stig.mdx index bd0473655e4f..f1cb47a4504b 100644 --- a/docs/main/deployment-guide/server/containers/fips-stig.mdx +++ b/docs/main/deployment-guide/server/containers/fips-stig.mdx @@ -22,6 +22,6 @@ All application-level code uses only FIPS-approved algorithms, ensuring that cry - The Mattermost FIPS image includes only prepackaged Boards, Playbooks, and Agents. Additional plugins can be added to the Mattermost FIPS image, but they will run in non-FIPS mode. -- Existing Docker or Kubernetes-based deployments can change the image from `mattermost/mattermost-enterprise-edition` to `mattermost/mattermost-enterprise-fips-edition`. See [Migrate an existing deployment to FIPS-compliant images](/deployment-guide/server/fips-migration) for step-by-step instructions. +- Existing Docker or Kubernetes-based deployments can change the image from `mattermost/mattermost-enterprise-edition` to `mattermost/mattermost-enterprise-fips-edition`. See [Migrate an existing deployment to FIPS-compliant images](/administration-guide/manage/admin/fips-migration) for step-by-step instructions. diff --git a/docs/main/deployment-guide/server/deploy-containers.mdx b/docs/main/deployment-guide/server/deploy-containers.mdx index 6d21eeb7882b..d84f4ce02452 100644 --- a/docs/main/deployment-guide/server/deploy-containers.mdx +++ b/docs/main/deployment-guide/server/deploy-containers.mdx @@ -244,7 +244,7 @@ docker exec -ti mattermost-preview /bin/bash -See the [deployment troubleshooting](/deployment-guide/deployment-troubleshooting) documentation for resolutions to common deployment issues. +See [Docker deployment troubleshooting](/deployment-guide/server/docker-troubleshooting) for resolutions to common container issues, or [Deployment troubleshooting](/deployment-guide/server/troubleshooting) for issues that aren't specific to containers. diff --git a/docs/main/deployment-guide/server/deploy-linux.mdx b/docs/main/deployment-guide/server/deploy-linux.mdx index f65bd8206ac4..a6b5daca3682 100644 --- a/docs/main/deployment-guide/server/deploy-linux.mdx +++ b/docs/main/deployment-guide/server/deploy-linux.mdx @@ -34,8 +34,8 @@ Mattermost Server runs on any 64-bit Linux system. For production, run Mattermos The Ubuntu/Debian, Red Hat (RHEL), and manual (tarball) methods all require you to bring your own host and database: - A 64-bit Linux host with at least **1 vCPU and 2 GB RAM** (supports up to ~1,000 users) -- **PostgreSQL 14+** — either local to the host, on a separate server, or a managed service. See [PostgreSQL Migration](/deployment-guide/postgres-migration) if you're moving from MySQL. -- Inbound ports **80** and **443** (HTTPS) and **8065** (System Console). See [Preparations](/deployment-guide/server/preparations) for the full pre-install checklist. +- **PostgreSQL 14+** — either local to the host, on a separate server, or a managed service. See [Set up the database](/deployment-guide/server/prepare-database), or [PostgreSQL Migration](/administration-guide/manage/admin/postgres-migration) if you're moving from MySQL. +- Inbound ports **80** and **443** (HTTPS) and **8065** (System Console). See [Network ports](/deployment-guide/server/prepare-network) for the full list, and [Prepare](/deployment-guide/server/preparations) for the pre-install checklist. - Outbound port **10025** if you'll send notification email through a relay. The Azure Native VM method provisions its own compute, managed PostgreSQL, and storage from the Azure Marketplace — see its [prerequisites](/deployment-guide/server/linux/deploy-azure-native-vm#prerequisites) instead. @@ -46,12 +46,12 @@ Once Mattermost is running, complete these steps before exposing it to users: - [Set up an NGINX reverse proxy](/deployment-guide/server/setup-nginx-proxy) and [terminate TLS](/deployment-guide/server/setup-tls) at the proxy. Don't run Mattermost as an internet-facing service without a proxy. - Configure [pre-authentication secrets](/deployment-guide/server/pre-authentication-secrets) if your environment requires them. -- Review the [post-install configuration checklist](/deployment-guide/server/server-deployment-planning) under Server deployment planning. +- Work through [Configure Mattermost](/administration-guide/configure/configure-index) and [onboard your users](/administration-guide/onboard/onboard-index). :::tip Air-gapped environments If you're deploying into a network-isolated enclave, see [Air-Gapped Operations](/deployment-guide/air-gapped-operations/quick-start-runbook) instead of the connected install paths above. It covers package mirroring and the configuration changes needed on top of the standard install. ::: :::note[Troubleshooting] -See [Deployment Troubleshooting](/deployment-guide/deployment-troubleshooting) for common install failures. +See [Deployment troubleshooting](/deployment-guide/server/troubleshooting) for common install failures. ::: diff --git a/docs/main/deployment-guide/server/deploy-server.mdx b/docs/main/deployment-guide/server/deploy-server.mdx new file mode 100644 index 000000000000..c5796eb830e7 --- /dev/null +++ b/docs/main/deployment-guide/server/deploy-server.mdx @@ -0,0 +1,77 @@ +--- +title: "Deploy the Mattermost server" +--- +All three deployment methods below install the same Mattermost Server. They differ in how you provision and operate the host, whether high availability is available, and which Mattermost plan you need. Choose one, then follow its install path. + +Before you get here, work through [Plan](/deployment-guide/server/server-deployment-planning) to size the deployment, and [Prepare](/deployment-guide/server/preparations) to stand up the database, file storage, reverse proxy, and TLS. + + + +## Deployment options + +### Kubernetes + + + +Deploying with the [Mattermost Kubernetes Operator](/deployment-guide/server/deploy-kubernetes) is our recommended approach for production, because it offers: + +- High availability and horizontal scaling across multiple app nodes +- Automated updates and rollbacks +- Infrastructure as code +- Built-in monitoring and logging +- Integration with existing DevOps workflows + +The Operator works on any conformant cluster. Mattermost publishes a dedicated guide for [Oracle Kubernetes Engine (OKE)](/deployment-guide/server/kubernetes/deploy-k8s-oke); guidance for Azure Kubernetes Service has been withdrawn, so deploy on AKS with the Operator as you would on any other cluster. + +### Linux + +[Installing directly on Linux](/deployment-guide/server/deploy-linux) gives you full control over the host and doesn't require a container platform. Choose it when: + +- Containers or Kubernetes aren't available or aren't preferred in your environment +- You want a straightforward setup on a host you already manage +- You're deploying into an air-gapped enclave from the release tarball + +High availability is available on this path too, but you configure and operate the cluster yourself. See [High availability cluster-based deployment](/deployment-guide/server/high-availability-cluster-based-deployment). + +Install methods: [Ubuntu/Debian](/deployment-guide/server/linux/deploy-ubuntu), [RHEL and derivatives](/deployment-guide/server/linux/deploy-rhel), [manual tarball](/deployment-guide/server/linux/deploy-tar), and [Azure Native VM](/deployment-guide/server/linux/deploy-azure-native-vm) from the Azure Marketplace. + +### Containers + +[Docker Compose deployments](/deployment-guide/server/deploy-containers) get a Mattermost instance running quickly without provisioning the infrastructure yourself. Use this path for exploring functionality, testing, and development. + + + +Container deployments aren't supported for production. Docker lacks automatic failover, shared storage, and load balancing, so it can't provide clustered or High Availability deployments out of the box. Deploy on [Kubernetes](/deployment-guide/server/deploy-kubernetes) for production HA. Docker deployments are officially supported on Linux only; macOS and Windows are for testing and development. + + + +A FIPS-compliant, STIG-hardened variant of every container image is published for regulated environments. See [FIPS and STIG container builds](/deployment-guide/server/containers/fips-stig). + +## Don't want to deploy it yourself? + +Third-party and community-maintained solutions can deploy and upgrade Mattermost for you. See [Deployment Solution Programs](/get-help/deployment-solution-programs) for the recognition tiers and what each commits to. + +## What's next + +After the server is running: + +- [Secure your deployment](/deployment-guide/encryption-options) with encryption at rest and [in transit](/deployment-guide/transport-encryption). +- [Scale](/deployment-guide/scale/scaling-for-enterprise) with clustering, search infrastructure, and Redis caching. +- [Back up and recover](/deployment-guide/backup-disaster-recovery) to set the backup strategy before you have users. +- If the install fails, see [Deployment troubleshooting](/deployment-guide/server/troubleshooting). diff --git a/docs/main/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment.mdx b/docs/main/deployment-guide/server/high-availability-cluster-based-deployment.mdx similarity index 97% rename from docs/main/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment.mdx rename to docs/main/deployment-guide/server/high-availability-cluster-based-deployment.mdx index 4a0e51309e74..1b5ec5900cf3 100644 --- a/docs/main/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment.mdx +++ b/docs/main/deployment-guide/server/high-availability-cluster-based-deployment.mdx @@ -30,14 +30,14 @@ Moreover, search replicas are also supported to handle search queries. ## Preparation -- Review [available reference architectures](/deployment-guide/reference-architecture/scale/scaling-for-enterprise#scaling-for-enterprise) for guidance on scaling Mattermost for the applicable number of users. Reference architecture guidance includes recommendations for the number of Mattermost nodes, database writer and reader nodes, Elasticsearch nodes, and proxy nodes, as well as file storage estimates depending on anticipated usage patterns. +- Review [available reference architectures](/deployment-guide/scale/scaling-for-enterprise#available-reference-architectures) for guidance on scaling Mattermost for the applicable number of users. Reference architecture guidance includes recommendations for the number of Mattermost nodes, database writer and reader nodes, Elasticsearch nodes, and proxy nodes, as well as file storage estimates depending on anticipated usage patterns. - Determine whether the file storage configuration for Mattermost will be Amazon S3, an S3-compatible file storage service, or network-attached storage (NAS) mounted on each Mattermost node. If Mattermost nodes are left configured with local file system storage on the host file system on each node rather than a NAS location, high availability will not function correctly and may corrupt your file storage. - For Kubernetes deployments, review [Deploy Mattermost on Kubernetes](/deployment-guide/server/deploy-kubernetes). - For non-Kubernetes deployments, install or upgrade Mattermost to the desired version on one server provisioned for Mattermost. Refer to [Deploy Mattermost on Linux](/deployment-guide/server/deploy-linux) for installation details. [Install a license key](/administration-guide/manage/admin/installing-license-key) to apply an Enterprise or Enterprise Advanced license key to the installed node. - **Recommended:** If using `config.json` for Mattermost configuration, refer to [Store configuration in your database](/administration-guide/configure/configuration-in-your-database) to migrate the Mattermost instance to using the database for configuration. It is also possible to continue using `config.json` files. However, when high availability is enabled, the System Console is set to read-only mode to ensure all the `config.json` files on the Mattermost servers are always identical. - Review [Calls self-hosted deployment](/deployment-guide/calls/calls-deployment-guide) to develop an appropriately-scaled Calls deployment plan. -- If you anticipate your Mattermost server reaching more than 2.5 million posts, review [Enterprise search](/deployment-guide/reference-architecture/scale/enterprise-search) for options to ensure optimum search performance. -- For Mattermost deployments for more than 100,000 users, review the [Redis](/deployment-guide/reference-architecture/scale/redis) deployment guide. +- If you anticipate your Mattermost server reaching more than 2.5 million posts, review [Enterprise search](/deployment-guide/scale/enterprise-search) for options to ensure optimum search performance. +- For Mattermost deployments for more than 100,000 users, review the [Redis](/deployment-guide/scale/redis) deployment guide. ## Deployment guide @@ -979,7 +979,7 @@ rm /tmp/search-replica-config.json Search replicas use the same PostgreSQL configuration as regular read replicas. When configured, all search queries are distributed among the search replicas. If search replicas are unavailable, queries fall back to read replicas, and ultimately to the primary database. -For deployments requiring advanced search capabilities, see [Enterprise search](/deployment-guide/reference-architecture/scale/enterprise-search) for information on Elasticsearch integration. +For deployments requiring advanced search capabilities, see [Enterprise search](/deployment-guide/scale/enterprise-search) for information on Elasticsearch integration. #### Database sizing @@ -1059,11 +1059,11 @@ If you're using Mattermost Calls for voice and screen sharing communication, rev **Enterprise search** -For deployments expected to exceed 2.5 million posts, consider implementing [Enterprise search](/deployment-guide/reference-architecture/scale/enterprise-search) with Elasticsearch. Elasticsearch provides significantly faster search performance and advanced search capabilities for large-scale deployments. +For deployments expected to exceed 2.5 million posts, consider implementing [Enterprise search](/deployment-guide/scale/enterprise-search) with Elasticsearch. Elasticsearch provides significantly faster search performance and advanced search capabilities for large-scale deployments. **Redis integration** -For deployments serving more than 100,000 users, implement [Redis](/deployment-guide/reference-architecture/scale/redis) to improve session management, caching, and real-time communication performance across your cluster. +For deployments serving more than 100,000 users, implement [Redis](/deployment-guide/scale/redis) to improve session management, caching, and real-time communication performance across your cluster. **Performance monitoring** @@ -1153,7 +1153,7 @@ When you reinstall a plugin in v5.14, the previous **Enabled** or **Disabled** s ### CLI and High Availability -The CLI is run in a single node which bypasses the mechanisms that a [high availability environment](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) uses to perform actions across all nodes in the cluster. As a result, when running [CLI commands](/administration-guide/manage/command-line-tools) in a High Availability environment, tasks such as updating and deleting users or changing configuration settings require a server restart. +The CLI is run in a single node which bypasses the mechanisms that a [high availability environment](/deployment-guide/server/high-availability-cluster-based-deployment) uses to perform actions across all nodes in the cluster. As a result, when running [CLI commands](/administration-guide/manage/command-line-tools) in a High Availability environment, tasks such as updating and deleting users or changing configuration settings require a server restart. We recommend using [mmctl](/administration-guide/manage/mmctl-command-line-tool) in a high availability environment instead since a server restart is not required. These changes are made through the API layer, so the node receiving the change request notifies all other nodes in the cluster. diff --git a/docs/main/deployment-guide/server/kubernetes/deploy-k8s.mdx b/docs/main/deployment-guide/server/kubernetes/deploy-k8s.mdx index 1550aa3388c3..7ed82b2dd472 100644 --- a/docs/main/deployment-guide/server/kubernetes/deploy-k8s.mdx +++ b/docs/main/deployment-guide/server/kubernetes/deploy-k8s.mdx @@ -15,7 +15,7 @@ Before you begin, ensure you have the following: - A functioning Kubernetes cluster (see the [Kubernetes setup guide](https://kubernetes.io/docs/setup/)). Your cluster should be running a [supported Kubernetes version](https://kubernetes.io/releases/). - The kubectl command-line tool installed on your local machine (see the [kubectl installation guide](https://kubernetes.io/docs/reference/kubectl/)). - A fundamental understanding of Kubernetes concepts, such as deployments, pods, and applying manifests. -- Sufficient Kubernetes resources allocated based on your expected user load. Consult the [scaling for Enterprise](/deployment-guide/reference-architecture/scale/scaling-for-enterprise#available-reference-architectures) documentation for resource requirements at different scales. +- Sufficient Kubernetes resources allocated based on your expected user load. Consult the [scaling for Enterprise](/deployment-guide/scale/scaling-for-enterprise#available-reference-architectures) documentation for resource requirements at different scales. ## Installation steps @@ -66,7 +66,7 @@ The Mattermost Kubernetes Operator can be installed using Helm. - A Mattermost Enterprise license is required for multi-server deployments. -- For single-server deployments without an Enterprise license, add `Replicas: 1` to the `spec` section in step 2 below. See the [high availability documentation](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) for more on highly-available deployments. +- For single-server deployments without an Enterprise license, add `Replicas: 1` to the `spec` section in step 2 below. See the [high availability documentation](/deployment-guide/server/high-availability-cluster-based-deployment) for more on highly-available deployments. @@ -297,7 +297,7 @@ This command can be used to review the Mattermost Operator or Mattermost server - While using managed cloud services is generally simpler to maintain and our recommended approach for production deployments, using self-managed S3-compatible storage services and CloudNative PG for PostgreSQL are also valid options if you have the expertise to manage them. - If you choose to use self-managed components, you'll need to adapt the instructions accordingly, pointing to your internal services instead. - To customize your production deployment, refer to the [configuration settings documentation](/administration-guide/configure/configuration-settings). -- If you encounter issues during deployment, consult the [deployment troubleshooting guide](/deployment-guide/deployment-troubleshooting). +- If you encounter issues during deployment, consult the [deployment troubleshooting guide](/deployment-guide/server/troubleshooting). diff --git a/docs/main/deployment-guide/server/linux/deploy-azure-native-vm.mdx b/docs/main/deployment-guide/server/linux/deploy-azure-native-vm.mdx index 5fff2e5a7977..7be0de63e9ea 100644 --- a/docs/main/deployment-guide/server/linux/deploy-azure-native-vm.mdx +++ b/docs/main/deployment-guide/server/linux/deploy-azure-native-vm.mdx @@ -46,7 +46,7 @@ On the **Basics** tab, configure the following: On the **Application** tab, configure how the Mattermost application is sized and how administrators access the VMs. -1. **Scaling tier:** Pick the user scale you are planning for. The wizard uses this to suggest sensible defaults for the **VMSS instance count**, **VM size**, and **PostgreSQL SKU**, and to determine whether **read replicas** are created for the database. The dropdown shows the recommended node count and VM SKU for each tier. For the underlying sizing rationale, see [available reference architectures](/deployment-guide/reference-architecture/scale/scaling-for-enterprise#available-reference-architectures). +1. **Scaling tier:** Pick the user scale you are planning for. The wizard uses this to suggest sensible defaults for the **VMSS instance count**, **VM size**, and **PostgreSQL SKU**, and to determine whether **read replicas** are created for the database. The dropdown shows the recommended node count and VM SKU for each tier. For the underlying sizing rationale, see [available reference architectures](/deployment-guide/scale/scaling-for-enterprise#available-reference-architectures). 2. **VMSS instance count:** Number of Mattermost application nodes (1–5). Defaults to the suggested value for your scaling tier; adjust if needed. 3. **Enterprise license file:** Required when the instance count is greater than 1 (multi-node high-availability clustering). Upload your Mattermost Enterprise license file. The license is optional for single-node deployments. 4. **VM SKU:** Size of each VMSS instance. The wizard surfaces recommended Linux sizes first; you can select any supported Linux size available in your region. @@ -111,7 +111,7 @@ Congratulations! You've successfully deployed a production-ready Mattermost stac ## Next steps -- For sizing guidance and reference architectures, see [high-availability-cluster-based-deployment](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) and [server architecture](/deployment-guide/reference-architecture/scale/server-architecture). +- For sizing guidance and reference architectures, see [high-availability-cluster-based-deployment](/deployment-guide/server/high-availability-cluster-based-deployment) and [server architecture](/deployment-guide/scale/server-architecture). - For ongoing operations (upgrades, backups, monitoring), follow the standard Mattermost server administration documentation. ## Runbooks diff --git a/docs/main/deployment-guide/server/linux/deploy-rhel.mdx b/docs/main/deployment-guide/server/linux/deploy-rhel.mdx index 7a86f615f15f..2a4c5bede2cf 100644 --- a/docs/main/deployment-guide/server/linux/deploy-rhel.mdx +++ b/docs/main/deployment-guide/server/linux/deploy-rhel.mdx @@ -12,7 +12,7 @@ Install Mattermost Server on Red Hat Enterprise Linux (RHEL), Rocky Linux, AlmaL - **Operating system**: RHEL 7+, Rocky / Alma 8+, Oracle Linux 7+, CentOS Stream 8+. - **Hardware**: 1 vCPU and 2 GB RAM (supports up to ~1,000 users). -- **Database**: [PostgreSQL 14+](/deployment-guide/postgres-migration). +- **Database**: [PostgreSQL 14+](/administration-guide/manage/admin/postgres-migration). - **Network**: TCP 80/443 inbound (TLS), 8065 inbound (System Console), 10025 outbound (SMTP relay if used). @@ -27,7 +27,7 @@ Choose one of: ## Step 2: Prepare the database -Follow the [database preparation](/deployment-guide/server/preparations#database-preparation) instructions to create the Mattermost database, user, and grants. +Follow the [database preparation](/deployment-guide/server/prepare-database) instructions to create the Mattermost database, user, and grants. ## Step 3: Download the Mattermost Server tarball @@ -320,7 +320,7 @@ allow perm=execute exe=/opt/rtcd/bin/rtcd : dir=/opt/rtcd all trust=0 allow perm=execute exe=/usr/lib/systemd/systemd trust=1 : dir=/opt/rtcd/ all trust=0 ``` -Then reload fapolicyd as above. See [RTCD setup and configuration](/deployment-guide/calls/calls-rtcd-setup) for the full rtcd install path. +Then reload fapolicyd as above. See [RTCD Setup and Configuration](/deployment-guide/calls/calls-rtcd-setup) for the full rtcd install path. @@ -354,4 +354,3 @@ sudo userdel mattermost - [Set up an NGINX reverse proxy](/deployment-guide/server/setup-nginx-proxy) - [Set up TLS](/deployment-guide/server/setup-tls) -- [DISA STIG mapping](/security-guide/compliance-frameworks/disa-stig) if this deployment is bound for a regulated environment diff --git a/docs/main/deployment-guide/server/linux/deploy-tar.mdx b/docs/main/deployment-guide/server/linux/deploy-tar.mdx index b322106ccc8a..90e05c738238 100644 --- a/docs/main/deployment-guide/server/linux/deploy-tar.mdx +++ b/docs/main/deployment-guide/server/linux/deploy-tar.mdx @@ -23,7 +23,7 @@ If you're on **Ubuntu / Debian**, use the [APT-based install](./deploy-ubuntu) f - **Operating system**: any 64-bit Linux distribution with `systemd` (or a comparable service manager). - **Hardware**: 1 vCPU and 2 GB RAM (supports up to ~1,000 users). -- **Database**: [PostgreSQL 14+](/deployment-guide/postgres-migration). +- **Database**: [PostgreSQL 14+](/administration-guide/manage/admin/postgres-migration). - **Network**: TCP 80/443 inbound (TLS), 8065 inbound (System Console), 10025 outbound (SMTP relay if used). @@ -38,7 +38,7 @@ Choose one of: ## Step 2: Prepare the database -Follow the [database preparation](/deployment-guide/server/preparations#database-preparation) instructions to create the Mattermost database, user, and grants. +Follow the [database preparation](/deployment-guide/server/prepare-database) instructions to create the Mattermost database, user, and grants. ## Step 3: Download the Mattermost Server tarball @@ -68,7 +68,7 @@ Enterprise and Team Edition releases are listed in the [version archive](/produc -In an air-gapped environment, stage the tarball on your operator workstation, verify the SHA-256 and PGP signature, then transfer it across the boundary. See [Air-Gapped Operations → Deployment Overview](/deployment-guide/air-gapped-operations/quick-start-runbook) for the full procedure. +In an air-gapped environment, stage the tarball on your operator workstation, verify the SHA-256 and PGP signature, then transfer it across the boundary. See the [air-gapped deployment runbook](/deployment-guide/air-gapped-operations/quick-start-runbook) for the full procedure. @@ -197,4 +197,4 @@ sudo userdel mattermost - [Set up an NGINX reverse proxy](/deployment-guide/server/setup-nginx-proxy) - [Set up TLS](/deployment-guide/server/setup-tls) -- For air-gapped deployments: [Air-Gapped Deployment Overview](/deployment-guide/air-gapped-operations/quick-start-runbook), [Configure for Air-Gapped Operation](/deployment-guide/air-gapped-operations/disable-phone-home-features) +- For air-gapped deployments: [Air-gapped deployment runbook](/deployment-guide/air-gapped-operations/quick-start-runbook), [Configure for Air-Gapped Operation](/deployment-guide/air-gapped-operations/disable-phone-home-features) diff --git a/docs/main/deployment-guide/server/linux/deploy-ubuntu.mdx b/docs/main/deployment-guide/server/linux/deploy-ubuntu.mdx index 068bf0133b45..4f48b9bcb925 100644 --- a/docs/main/deployment-guide/server/linux/deploy-ubuntu.mdx +++ b/docs/main/deployment-guide/server/linux/deploy-ubuntu.mdx @@ -11,7 +11,7 @@ Install Mattermost Server on Ubuntu or Debian from the signed Mattermost APT rep :::info[Minimum requirements] - **Operating system**: Ubuntu 20.04 / 22.04 / 24.04 LTS, or Debian (current stable). Other Debian-family distributions usually work but aren't tested by Mattermost. - **Hardware**: 1 vCPU and 2 GB RAM (supports up to ~1,000 users). -- **Database**: [PostgreSQL 14+](/deployment-guide/postgres-migration). +- **Database**: [PostgreSQL 14+](/administration-guide/manage/admin/postgres-migration). - **Network**: TCP 80/443 inbound (TLS), 8065 inbound (System Console), 10025 outbound (SMTP relay if used). ::: @@ -25,7 +25,7 @@ Mattermost requires PostgreSQL. Choose one of: ## Step 2: Prepare the database -Follow the [database preparation](/deployment-guide/server/preparations#database-preparation) instructions to create the Mattermost database, user, and grants. +Follow the [database preparation](/deployment-guide/server/prepare-database) instructions to create the Mattermost database, user, and grants. ## Step 3: Add the Mattermost APT repository @@ -141,4 +141,4 @@ This removes the package but leaves `/opt/mattermost/data`, `/opt/mattermost/log - [Set up an NGINX reverse proxy](/deployment-guide/server/setup-nginx-proxy) - [Set up TLS](/deployment-guide/server/setup-tls) -- [Server deployment planning](/deployment-guide/server/server-deployment-planning) for the full post-install checklist +- [Configure Mattermost](/administration-guide/configure/configure-index) and [onboard your users](/administration-guide/onboard/onboard-index) diff --git a/docs/main/deployment-guide/server/preparations.mdx b/docs/main/deployment-guide/server/preparations.mdx index fae7d754afaf..8b7ab717ca6d 100644 --- a/docs/main/deployment-guide/server/preparations.mdx +++ b/docs/main/deployment-guide/server/preparations.mdx @@ -1,370 +1,45 @@ --- title: "Prepare your Mattermost Server environment" -sidebar_label: "Preparations" --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -This guide outlines the key preparation steps required before installing the Mattermost Server, focusing on setting up the database and file storage systems. - -Before installing Mattermost Server, review the following preparation requirements: - -- [Review software and hardware requirements](/deployment-guide/software-hardware-requirements) - Ensure your system meets the minimum requirements for Mattermost deployment. -- [Set up an NGINX proxy](/deployment-guide/server/setup-nginx-proxy) - Configure NGINX as a reverse proxy for enhanced security and performance. -- [Set up TLS](/deployment-guide/server/setup-tls) - Enable secure communication with SSL/TLS encryption. -- [Use an image proxy](/deployment-guide/server/image-proxy) - Configure image proxy for enhanced privacy and security. - -## Database preparation - -PostgreSQL v14+ is required for Mattermost server installations. [MySQL database support](/deployment-guide/server/prepare-mattermost-mysql-database) is being deprecated starting with Mattermost v11. See the [PostgreSQL migration](/deployment-guide/postgres-migration) documentation for guidance on migrating from MySQL to PostgreSQL. - -1. Create an PostgreSQL server instance. See the [PostgreSQL documentation](https://www.postgresql.org/download/) for details. When the installation is complete, the PostgreSQL server is running, and a Linux user account called postgres has been created. - -2. Create the Mattermost database and user: - - 1. Access PostgreSQL by running: - - ``` sh - sudo -u postgres psql - ``` - - 2. Create the database: - - ``` sql - CREATE DATABASE mattermost WITH ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE=template0; - ``` - - If this steps fails with an error message like `invalid LC_COLLATE locale name: "en_US.UTF-8"`, you need to generate the locale first using `locale-gen en_US.UTF-8`. - - 3. Create the Mattermost user with a secure password: - - ``` sql - CREATE USER mmuser WITH PASSWORD 'mmuser-password'; - ``` - - 4. Grant database access to the user: - - ``` sql - GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser; - ``` - - 5. If using PostgreSQL v15.x or later, additional grants are required: - - ``` text - ALTER DATABASE mattermost OWNER TO mmuser; - -- Connect to the mattermost database so the schema grants below apply to the right schema - \c mattermost - ALTER SCHEMA public OWNER TO mmuser; - GRANT USAGE, CREATE ON SCHEMA public TO mmuser; - ``` - -3. Configure PostgreSQL for remote connections (if database is on a separate server): - - 1. Edit `postgresql.conf` to allow remote connections: - - - - -Edit `/etc/postgresql/{version}/main/postgresql.conf`: - - ``` text - listen_addresses = '*' - ``` - - - - -Edit `/var/lib/pgsql/{version}/data/postgresql.conf`: - - ``` text - listen_addresses = '*' - ``` - - - - - - 2. Configure client authentication by editing `pg_hba.conf`: - - Add the following line, replacing `{mattermost-server-IP}`: - - ``` text - host all all {mattermost-server-IP}/32 md5 - ``` - -4. Restart the PostgreSQL service to apply the configuration changes: - - - - -``` sh -sudo systemctl restart postgresql -``` - - - - -``` sh -sudo systemctl restart postgresql -``` - - - - - - - -If you are upgrading a major version of PostgreSQL, see [Upgrade PostgreSQL](/administration-guide/upgrade/upgrading-postgres) for the full upgrade procedure and post-upgrade steps. - - - -Once you've completed the database preparation, return to the [Linux deployment](/deployment-guide/server/deploy-linux) documentation to continue with your Mattermost server installation. - -## File storage preparation - -Mattermost requires a file storage system for storing user files, images, and attachments. You have several options, including: - -- S3-compatibile object storage (recommended) -- Network file storage -- Local file storage - -### S3-compatible object storage (Recommended) - -For production environments, we recommend using S3-compatible object storage such as: - -- Amazon S3 -- Digital Ocean Spaces -- Other S3-compatible services - -When using S3 storage, you'll need: - -1. A bucket created specifically for Mattermost -2. Access credentials (Access Key and Secret Key) -3. Appropriate bucket policies configured -4. The following information for configuration: - - Bucket name - - Region (if applicable) - - Access Key - - Secret Key - - Endpoint URL (for non-AWS S3 services) - -### Network file storage - -For production environments that cannot use S3-compatible object storage, we recommend using a Network Addressable Storage (NAS) solution with Network File System (NFS). - -You'll need to prepare an NFS server with a dedicated share for Mattermost (e.g. /mnt/mattermost_data) and mount it on all servers that will be running Mattermost. - -### Local file storage - -For simple deployments, you can use local file storage. However, we don't recommend this for production environments or multi-node deployments. - -1. Create a directory for file storage: - - ``` sh - sudo mkdir -p /opt/mattermost/data - ``` - -2. Set appropriate permissions: - - ``` sh - sudo chown -R mattermost:mattermost /opt/mattermost/data - ``` - -### (Optional) Use an image proxy - -Using an [image proxy](/deployment-guide/server/image-proxy) means that all requests for images made by Mattermost clients will go through the proxy instead of contacting third-party servers directly. This helps protect user privacy by preventing third-party servers from tracking who views an image. This also prevents the use of tracking pixels (invisible images that do the same thing without the user even seeing an image). - -Certain proxy servers also provide a layer of caching which can make loading images faster and more reliable. This caching also helps preserve posts by protecting them from dead images. - -## Network preparation - -The following table outlines the network ports and protocols required for Mattermost server: - -
password stringA password for the user. Can be present only when password-based authentication is used. When password-based authentication is used and the password is not present, the bulk loader generates a password.A password for the user. Can be present only when password-based authentication is used. When password-based authentication is used and the password is not present, the bulk import command generates a password. Yes No
Experimental Bleve Search functionality has been retired. If Bleve is enabled, search will not work until DisableDatabaseSearch is set to false. See more details in this forum post.
Support for MySQL has ended. Our Migration Guide outlines the steps, tools and support available for migrating to PostgreSQL. See more details in this forum post.Support for MySQL has ended. Our Migration Guide outlines the steps, tools and support available for migrating to PostgreSQL. See more details in this forum post.
The registerPostDropdownMenuComponent hook in the web app’s plugin API has been removed in favour of registerPostDropdownMenuAction. See more details in this forum post.
-------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Service NameConfig SettingPort (default)ProtocolDirectionInfo
HTTP/WebsocketServiceSettings.ListenAddress8065/80/443 (TLS)TCPInboundExternal (no proxy) / Internal (with proxy) Usually this requires port 80 and 443 when running HTTPS.
ClusterClusterSettings.GossipPort8074TCP/UDPInboundInternal
MetricsMetricsSettings.ListenAddress8067TCPInboundExternal (no proxy) / Internal (with proxy)
DatabaseSqlSettings.DataSource5432 (PostgreSQL) / 3306 (MySQL)TCPOutboundUsually internal (recommended)
LDAPLdapSettings.LdapPort389TCP/UDPOutbound
S3 StorageFileSettings.AmazonS3Endpoint443 (TLS)TCPOutbound
SMTPEmailSettings.SMTPPort10025TCP/UDPOutbound
Push NotificationsEmailSettings.PushNotificationServer443 (TLS)TCPOutbound
- - - -- All outbound ports may vary based on your specific configuration -- Mattermost can be configured to use an outbound proxy for any HTTP/HTTPS traffic (see below) -- Calls service may require additional ports - - - -### Outbound proxy configuration - -If your deployment requires using an outbound proxy, you can configure Mattermost using environment variables: - -1. Configure the proxy settings in your service configuration: - - ``` text - Environment=HTTP_PROXY=http://proxy.example.com:3128 - Environment=HTTPS_PROXY=https://proxy.example.com:3128 - Environment=NO_PROXY=localhost,127.0.0.1,.internal.example.com - ``` - -2. For authenticated proxies, include credentials in the URL: - - ``` text - Environment=HTTP_PROXY=http://username:password@proxy.example.com:3128 - Environment=HTTPS_PROXY=https://username:password@proxy.example.com:3128 - ``` - -3. The `NO_PROXY` variable can include: - - - IP addresses (e.g., `1.2.3.4`) - - CIDR ranges (e.g., `1.2.3.4/8`) - - Domain names (e.g., `example.com`) - - Subdomains (e.g., `.example.com`) - - - -When using an HTTPS proxy, ensure your Mattermost server has the proxy's root certificate configured to avoid connection issues. - -Example systemd Service Configuration - -``` ini -[Unit] -Description=Mattermost -After=network.target -After=postgresql.service -BindsTo=postgresql.service - -[Service] -Type=notify -ExecStart=/opt/mattermost/bin/mattermost -TimeoutStartSec=3600 -KillMode=mixed -Restart=always -RestartSec=10 -WorkingDirectory=/opt/mattermost -User=mattermost -Group=mattermost -LimitNOFILE=49152 - -# Configure proxy settings if needed -#Environment=HTTP_PROXY=http://proxy.example.com:3128 -#Environment=HTTPS_PROXY=https://proxy.example.com:3128 -#Environment=NO_PROXY=localhost,127.0.0.1,.internal.example.com - -# Recommended security options -ProtectSystem=full -PrivateTmp=true -NoNewPrivileges=true - -[Install] -WantedBy=postgresql.service -``` - - - -## System requirements - -Ensure your system meets these minimum requirements: - -- Operating System: 64-bit Linux distribution -- Hardware: 1 vCPU/core with 2GB RAM (supports up to 1,000 users) -- Storage: Minimum 10GB available space -- Database: PostgreSQL v14+ -- Network: Reliable internet connection with sufficient bandwidth - -See the [software and hardware requirements](/deployment-guide/software-hardware-requirements) documentation for additional requirements. +Everything in this section has to exist before you run the installer. The database, file storage, and network access are hard prerequisites, because the install fails or the server won't start without them. The reverse proxy and TLS are prerequisites for a production deployment specifically: don't expose Mattermost to users without them. + +Work through the pages in order. If you haven't sized the deployment yet, start with [Plan](/deployment-guide/server/server-deployment-planning) and confirm your hosts against the [software and hardware requirements](/deployment-guide/software-hardware-requirements) first. + + + +## Prepare for production + +The pages above get a server running. These make it safe to put in front of users: + +- [Set up an NGINX proxy](/deployment-guide/server/setup-nginx-proxy) - Configure NGINX as a reverse proxy for enhanced security and performance. Recommended for all production deployments. +- [Set up TLS](/deployment-guide/server/setup-tls) - Enable secure communication with SSL/TLS encryption, terminated at the proxy. +- [Use an image proxy](/deployment-guide/server/image-proxy) - Load external images through a proxy so third-party servers can't track who viewed them. +- [Set pre-authentication secrets](/deployment-guide/server/pre-authentication-secrets) - Require a shared secret before clients can reach the server. + +Running an existing MySQL deployment? See [Set up the Mattermost MySQL database](/deployment-guide/server/prepare-mattermost-mysql-database). MySQL support is being removed in Mattermost v11, so new deployments must use PostgreSQL. ## Next steps -Once you've completed these preparation steps, you can proceed with installing the Mattermost server. Choose your preferred installation method: +Once the prerequisites are in place, choose your install method: - [Deploy with Kubernetes](/deployment-guide/server/deploy-kubernetes) - [Deploy on Linux](/deployment-guide/server/deploy-linux) - [Deploy with Containers](/deployment-guide/server/deploy-containers) + +The trade-offs between the three are compared in [Deploy the Mattermost server](/deployment-guide/server/deploy-server#deployment-options). diff --git a/docs/main/deployment-guide/server/prepare-database.mdx b/docs/main/deployment-guide/server/prepare-database.mdx new file mode 100644 index 000000000000..2b8a2b539b5e --- /dev/null +++ b/docs/main/deployment-guide/server/prepare-database.mdx @@ -0,0 +1,146 @@ +--- +title: "Set up the Mattermost PostgreSQL database" +sidebar_label: "Set up the database" +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +PostgreSQL v14+ is required for Mattermost server installations. Create the database, user, and grants before you install Mattermost Server, so the installer has something to connect to. + +You can run PostgreSQL on the same host as Mattermost, on a separate server, or as a managed service such as Amazon RDS or Azure Database for PostgreSQL. See the [database software](/deployment-guide/software-hardware-requirements#database-software) documentation for the supported versions and the minimum version policy. + + + +[MySQL database support](/deployment-guide/server/prepare-mattermost-mysql-database) is being deprecated starting with Mattermost v11. See the [PostgreSQL migration](/administration-guide/manage/admin/postgres-migration) documentation for guidance on migrating from MySQL to PostgreSQL. + + + +## Create the database and user + +1. Create an PostgreSQL server instance. See the [PostgreSQL documentation](https://www.postgresql.org/download/) for details. When the installation is complete, the PostgreSQL server is running, and a Linux user account called postgres has been created. + +2. Create the Mattermost database and user: + + 1. Access PostgreSQL by running: + + ``` sh + sudo -u postgres psql + ``` + + 2. Create the database: + + ``` sql + CREATE DATABASE mattermost WITH ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE=template0; + ``` + + If this steps fails with an error message like `invalid LC_COLLATE locale name: "en_US.UTF-8"`, you need to generate the locale first using `locale-gen en_US.UTF-8`. + + 3. Create the Mattermost user with a secure password: + + ``` sql + CREATE USER mmuser WITH PASSWORD 'mmuser-password'; + ``` + + 4. Grant database access to the user: + + ``` sql + GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser; + ``` + + 5. If using PostgreSQL v15.x or later, additional grants are required: + + ``` text + ALTER DATABASE mattermost OWNER TO mmuser; + -- Connect to the mattermost database so the schema grants below apply to the right schema + \c mattermost + ALTER SCHEMA public OWNER TO mmuser; + GRANT USAGE, CREATE ON SCHEMA public TO mmuser; + ``` + +## Allow remote connections + +Complete this section only if the database runs on a different host from Mattermost Server. A database local to the application host needs no additional configuration. + +1. Edit `postgresql.conf` to allow remote connections: + + + + +Edit `/etc/postgresql/{version}/main/postgresql.conf`: + + ``` text + listen_addresses = '*' + ``` + + + + +Edit `/var/lib/pgsql/{version}/data/postgresql.conf`: + + ``` text + listen_addresses = '*' + ``` + + + + +2. Configure client authentication by editing `pg_hba.conf`. + + Add the following line, replacing `{mattermost-server-IP}`: + + ``` text + host all all {mattermost-server-IP}/32 md5 + ``` + + Restrict the source to the Mattermost server's address rather than a wider range, so the database only accepts connections from the application layer. + +3. Restart the PostgreSQL service to apply the configuration changes: + + ``` sh + sudo systemctl restart postgresql + ``` + + + +If you are upgrading a major version of PostgreSQL, see [Upgrade PostgreSQL](/administration-guide/upgrade/upgrading-postgres) for the full upgrade procedure and post-upgrade steps. + + + +## Troubleshooting + +### Mattermost can't use a fresh PostgreSQL v15 installation + +PostgreSQL v15 introduces changes that may affect compatibility with previous releases. If you're deploying a fresh installation of PostgreSQL v15 and Mattermost can't create its schema, run this command to ensure that you can use Mattermost: + +``` sql +GRANT CREATE ON SCHEMA public TO PUBLIC; +``` + +### Full-text search doesn't use indexes with a non-English `default_text_search_config` + +Mattermost uses `default_text_search_config` for full-text search in PostgreSQL databases, as opposed to a hardcoded text search config. However, indexes are still created with a hardcoded text search config (english) and as a result, full-text search may never use the indexes. + +Some of the tables in Mattermost, like `Posts` or `Users`, contain GIN indexes to improve the database full-text search feature in PostgreSQL. + +These indexes need to be built against a specific language, and when they're created they're hard-coded to English. Full-text search queries are always performed using the `default_text_search_config` database setting. In order for the full-text search feature to leverage the indexes, the language specified in the query needs to match the language specified in the index. + +If the `default_text_search_config` is not set to `english`, the GIN indexes will not be used. Database administrators can work around this by dropping the specific GIN index they're interested in and rebuilding it with the value of `default_text_search_config`. + +For example, if the default language of your server is Spanish: + +``` sql +-- Create the new index with a new name before dropping the old one +CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_posts_message_txt_spanish ON posts USING gin(to_tsvector('spanish', message)); + +-- Check that the new index does work. If it does, drop the old one and rename the new one: +DROP INDEX CONCURRENTLY IF EXISTS idx_posts_message_txt; +ALTER INDEX idx_posts_message_txt_spanish RENAME TO idx_posts_message_txt; +``` + +### Change the PostgreSQL username and password + +We recommend changing the PostgreSQL username and password in the `.env` file. + +## Next steps + +Once the database is ready, continue with the rest of the [preparation checklist](/deployment-guide/server/preparations), or go straight to your install method: [Kubernetes](/deployment-guide/server/deploy-kubernetes), [Linux](/deployment-guide/server/deploy-linux), or [containers](/deployment-guide/server/deploy-containers). diff --git a/docs/main/deployment-guide/server/prepare-file-storage.mdx b/docs/main/deployment-guide/server/prepare-file-storage.mdx new file mode 100644 index 000000000000..d07ab4d435fb --- /dev/null +++ b/docs/main/deployment-guide/server/prepare-file-storage.mdx @@ -0,0 +1,61 @@ +--- +title: "Set up file storage" +sidebar_label: "Set up file storage" +--- +Mattermost requires a file storage system for storing user files, images, and attachments. Choose one of the following before you install, because moving between them later means migrating existing files: + +- S3-compatible object storage (recommended) +- Network file storage +- Local file storage + +For guidance on how much storage to provision, see [backing storage benchmarks](/deployment-guide/scale/backing-storage-benchmarks). + +## S3-compatible object storage (Recommended) + +For production environments, we recommend using S3-compatible object storage such as: + +- Amazon S3 +- Digital Ocean Spaces +- Other S3-compatible services + +When using S3 storage, you'll need: + +1. A bucket created specifically for Mattermost +2. Access credentials (Access Key and Secret Key) +3. Appropriate bucket policies configured +4. The following information for configuration: + - Bucket name + - Region (if applicable) + - Access Key + - Secret Key + - Endpoint URL (for non-AWS S3 services) + +You configure these values in **System Console > Environment > File Storage**. See the [file storage configuration settings](/administration-guide/configure/environment-configuration-settings#file-storage) documentation for details. + +## Network file storage + +For production environments that cannot use S3-compatible object storage, we recommend using a Network Addressable Storage (NAS) solution with Network File System (NFS). + +You'll need to prepare an NFS server with a dedicated share for Mattermost (e.g. /mnt/mattermost_data) and mount it on all servers that will be running Mattermost. + +## Local file storage + +For simple deployments, you can use local file storage. However, we don't recommend this for production environments or multi-node deployments, because the files aren't shared between application servers and aren't covered by a separate backup target. + +1. Create a directory for file storage: + + ``` sh + sudo mkdir -p /opt/mattermost/data + ``` + +2. Set appropriate permissions: + + ``` sh + sudo chown -R mattermost:mattermost /opt/mattermost/data + ``` + +## Next steps + +- [Use an image proxy](/deployment-guide/server/image-proxy) to keep clients from contacting third-party servers directly when they load external images. +- Set your [encryption at rest](/deployment-guide/encryption-options) approach for whichever storage system you chose. +- Return to the [preparation checklist](/deployment-guide/server/preparations). diff --git a/docs/main/deployment-guide/server/prepare-mattermost-mysql-database.mdx b/docs/main/deployment-guide/server/prepare-mattermost-mysql-database.mdx index 2258559a534b..6f74258901e4 100644 --- a/docs/main/deployment-guide/server/prepare-mattermost-mysql-database.mdx +++ b/docs/main/deployment-guide/server/prepare-mattermost-mysql-database.mdx @@ -1,5 +1,6 @@ --- title: "Set up the Mattermost MySQL database" +unlisted: true --- import useBaseUrl from '@docusaurus/useBaseUrl'; import Tabs from '@theme/Tabs'; @@ -12,7 +13,7 @@ import TabItem from '@theme/TabItem'; - From Mattermost v11, Mattermost completely stops support MySQL as a database driver. MySQL support has been completely removed from the codebase, and the product will throw an invalid configuration error. -- PostgreSQL is our preferred database of choice. See the [database software](/deployment-guide/software-hardware-requirements#database-software) documentation for details on database version support, and see the [Migrate from MySQL to PostgreSQL](/deployment-guide/postgres-migration) documentation for details on migrating from MySQL to PostgreSQL. +- PostgreSQL is our preferred database of choice. See the [database software](/deployment-guide/software-hardware-requirements#database-software) documentation for details on database version support, and see the [Migrate from MySQL to PostgreSQL](/administration-guide/manage/admin/postgres-migration) documentation for details on migrating from MySQL to PostgreSQL. - MySQL 8.0.22 contains an [issue with JSON column types](https://bugs.mysql.com/bug.php?id=101284) changing string values to integers which is preventing Mattermost from working properly. Users are advised to avoid this database version. diff --git a/docs/main/deployment-guide/server/prepare-network.mdx b/docs/main/deployment-guide/server/prepare-network.mdx new file mode 100644 index 000000000000..d7609f2ec03d --- /dev/null +++ b/docs/main/deployment-guide/server/prepare-network.mdx @@ -0,0 +1,147 @@ +--- +title: "Network ports and outbound proxy" +sidebar_label: "Prepare your network" +--- +Open the ports Mattermost needs before you install, and note the outbound destinations your deployment will reach. If your environment blocks direct outbound access, configure an outbound proxy at the same time. + +## Network ports + +The following table outlines the network ports and protocols required for Mattermost server: + + ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service NameConfig SettingPort (default)ProtocolDirectionInfo
HTTP/WebsocketServiceSettings.ListenAddress8065/80/443 (TLS)TCPInboundExternal (no proxy) / Internal (with proxy) Usually this requires port 80 and 443 when running HTTPS.
ClusterClusterSettings.GossipPort8074TCP/UDPInboundInternal
MetricsMetricsSettings.ListenAddress8067TCPInboundExternal (no proxy) / Internal (with proxy)
DatabaseSqlSettings.DataSource5432 (PostgreSQL) / 3306 (MySQL)TCPOutboundUsually internal (recommended)
LDAPLdapSettings.LdapPort389TCP/UDPOutbound
S3 StorageFileSettings.AmazonS3Endpoint443 (TLS)TCPOutbound
SMTPEmailSettings.SMTPPort10025TCP/UDPOutbound
Push NotificationsEmailSettings.PushNotificationServer443 (TLS)TCPOutbound
+ + + +- All outbound ports may vary based on your specific configuration +- Mattermost can be configured to use an outbound proxy for any HTTP/HTTPS traffic (see below) +- Calls service may require additional ports. See the [Calls deployment guide](/deployment-guide/calls/calls-deployment-guide) for details. + + + +Only the inbound ports your readers actually reach need to be exposed externally. When Mattermost runs behind [an NGINX reverse proxy](/deployment-guide/server/setup-nginx-proxy), expose 80 and 443 at the proxy and keep 8065, 8067, and 8074 internal. + +## Outbound proxy configuration + +If your deployment requires using an outbound proxy, you can configure Mattermost using environment variables: + +1. Configure the proxy settings in your service configuration: + + ``` text + Environment=HTTP_PROXY=http://proxy.example.com:3128 + Environment=HTTPS_PROXY=https://proxy.example.com:3128 + Environment=NO_PROXY=localhost,127.0.0.1,.internal.example.com + ``` + + These lines go in the `[Service]` section of the `mattermost.service` systemd unit. See your install method's page for the complete unit file: [Ubuntu/Debian](/deployment-guide/server/linux/deploy-ubuntu), [RHEL](/deployment-guide/server/linux/deploy-rhel), or [manual tarball](/deployment-guide/server/linux/deploy-tar). + +2. For authenticated proxies, include credentials in the URL: + + ``` text + Environment=HTTP_PROXY=http://username:password@proxy.example.com:3128 + Environment=HTTPS_PROXY=https://username:password@proxy.example.com:3128 + ``` + + Anyone who can read the unit file can read these credentials. Restrict the file's permissions, or supply the values through a separate `EnvironmentFile` that only root can read. + +3. The `NO_PROXY` variable can include: + + - IP addresses (e.g., `1.2.3.4`) + - CIDR ranges (e.g., `1.2.3.4/8`) + - Domain names (e.g., `example.com`) + - Subdomains (e.g., `.example.com`) + + + +When using an HTTPS proxy, ensure your Mattermost server has the proxy's root certificate configured to avoid connection issues. + + + +## Next steps + +- [Set up an NGINX proxy](/deployment-guide/server/setup-nginx-proxy) and [set up TLS](/deployment-guide/server/setup-tls) so users connect over HTTPS. +- Return to the [preparation checklist](/deployment-guide/server/preparations). diff --git a/docs/main/deployment-guide/server/server-deployment-planning.mdx b/docs/main/deployment-guide/server/server-deployment-planning.mdx index 6db4e9ffb094..ce301c82f1a5 100644 --- a/docs/main/deployment-guide/server/server-deployment-planning.mdx +++ b/docs/main/deployment-guide/server/server-deployment-planning.mdx @@ -1,139 +1,35 @@ --- -title: "Server deployment planning" +title: "Plan your deployment" --- -This section provides comprehensive guidance on deploying and managing your Mattermost server. Mattermost is a flexible, high-performance messaging platform built with Go and React, designed to provide secure team collaboration at scale. Use the navigation below to learn more about how Mattermost supports a wide range of deployment options, from single-server installations to complex, distributed architectures: - -- [Preparations](/deployment-guide/server/preparations) - Software and hardware requirements, proxy setup, TLS configuration, and other pre-deployment tasks. -- [Deploy with Kubernetes](/deployment-guide/server/deploy-kubernetes) - Scalable deployment on various Kubernetes platforms with high availability support. -- [Deploy with Linux](/deployment-guide/server/deploy-linux) - Direct installation on Linux servers for full control over the deployment. -- [Deploy with Containers](/deployment-guide/server/deploy-containers) - Docker-based deployment suitable for smaller installations. -- [Migrate to FIPS-compliant images](/deployment-guide/server/fips-migration) - Switch an existing Docker or Kubernetes deployment to the FIPS-compliant Mattermost images. -- [Pre-authentication secrets](/deployment-guide/server/pre-authentication-secrets) - Configure reverse proxy validation for mobile and desktop applications using pre-authentication headers. -- [Deployment Solution Programs](/deployment-guide/server/orchestration) - Automated deployment tools and orchestration solutions. - -## Core technology stack - -Mattermost's architecture is built on modern, reliable technologies: - -- **Backend**: Written in Go, providing high performance and concurrent processing -- **Frontend**: React-based web application and mobile apps -- **Database**: PostgreSQL for primary data storage -- **Search**: Elasticsearch (optional) for advanced search capabilities -- **File Storage**: Local filesystem, network storage using NFS, or cloud storage (S3 or S3-compatible services) for media and attachments -- **Caching**: Built-in support for Redis for enhanced performance - -## Deployment options - -Mattermost offers several deployment options to suit your organization's needs: - -1. [Kubernetes (Recommended)](/deployment-guide/server/deploy-kubernetes) - - Our recommended approach for production deployments offers: - - - Scalability and high availability - - Automated updates and rollbacks - - Infrastructure as code - - Built-in monitoring and logging - - Easy integration with existing DevOps workflows - -2. [Linux Server Installation](/deployment-guide/server/deploy-linux) - - A direct installation on Linux servers offers: - - - Simple, straightforward setup - - Full control over the installation - - For situations where containers aren't preferred - -3. [Container-Based Deployment](/deployment-guide/server/deploy-containers) - - Docker containers are suitable for smaller deployments only as it offers: - - - Simplified installation and updates - - Consistent environments - - Easy dependency management - - No support for high availability - -## Prerequisites - -Before deploying Mattermost, ensure you have reviewed the [software and hardware requirements](/deployment-guide/software-hardware-requirements), and have: - -- A supported Linux distribution -- Database server (PostgreSQL 14+) -- Reverse proxy (NGINX recommended) -- SSL/TLS certificates for secure communication -- Adequate storage for files and database -- Network access and firewall configurations -- System requirements met based on expected user load - -## Plan your deployment - -When planning your Mattermost deployment, consider the following when choosing the deployment method that best aligns with your organization's requirements, technical expertise, and infrastructure capabilities: - -- Expected user count and growth -- High availability requirements -- Backup and disaster recovery needs -- Integration with existing systems -- Security and compliance requirements -- Monitoring and maintenance strategy - -The following server, desktop, and mobile application sections provide detailed instructions for each deployment approach. - -### Minimum database version policy - -To make planning easier and ensure your Mattermost deployment remains fast and secure, we are introducing a policy for updating the minimum supported version of PostgreSQL. The oldest supported PostgreSQL version Mattermost supports will match the oldest version supported by the PostgreSQL community. This ensures you benefit from the latest features and security updates. - -This policy change takes effect from Mattermost v10.6, where the minimum PostgreSQL version required will be PostgreSQL 13. This aligns with the PostgreSQL community's support policy, which provides 5 years of support for each major version. - - - -Mattermost v10.6 is not an [Extended Support Release (ESR)](/product-overview/release-policy#extended-support-releases). Going forward, this database version support policy will only apply to ESR releases. - - - -When a PostgreSQL version reaches its end of life (EOL), Mattermost will require a newer version starting with the next scheduled ESR release. This means the following future PostgreSQL minimum version increases as follows: - - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Mattermost VersionRelease DateMinimum PostgreSQL Version
v9.11 ESR2024-8-1511.x
v10.5 ESR2025-2-1511.x
v10.62025-3-1513.x
v10.11 ESR2025-8-1513.x
v11.5 ESR *2026-2-1514.x (EOL 2026-11-12)
- -`*` Forcasted release version and date. - -Customers will have 9 months to plan, test, and upgrade their PostgreSQL version before the new requirement takes effect. This policy aims to provide clarity and transparency so you can align database upgrades with the Mattermost release schedule. Contact a [Mattermost Expert](https://mattermost.com/contact-sales/). to discuss your options. +Everything in this section is a decision you make before touching a server: what the components are, how big each one needs to be, and what the requirements are for the versions you'll run. Work through the pages in order. + + + +## What to decide here + +Sizing depends on more than user count. Before you move on to [Prepare](/deployment-guide/server/preparations), settle: + +- **Expected user count and growth.** Sizing is driven by concurrent users, not registered users. [Size your deployment](/deployment-guide/deployment-architecture) maps a scale tier to a bill of materials. +- **Whether you need high availability.** HA changes the topology, the licensing, and the deployment method. See [High availability cluster-based deployment](/deployment-guide/server/high-availability-cluster-based-deployment). +- **Your backup and disaster recovery requirements.** These are deployment-time architecture decisions, not day-2 tasks. See [Back up and recover](/deployment-guide/backup-disaster-recovery). +- **Which deployment method fits your environment.** Kubernetes, Linux, or containers. The trade-offs are compared in [Deploy the Mattermost server](/deployment-guide/server/deploy-server#deployment-options). +- **Security and compliance constraints.** If you're deploying air-gapped, into a coalition network, or under a compliance framework, start from [Deployment Scenarios](/deployment-guide/deployment-scenarios/deployment-scenarios-index), because those constraints shape every decision that follows. +- **Integrations with existing systems.** Identity provider, SMTP relay, push notification service, and search infrastructure all need to exist before you cut over users. + +Not deploying it yourself? [Deployment Solution Programs](/get-help/deployment-solution-programs) covers the third-party and community-maintained solutions that deploy Mattermost for you, and the standards each recognition tier commits to. diff --git a/docs/main/deployment-guide/server/trouble-postgres.mdx b/docs/main/deployment-guide/server/trouble-postgres.mdx deleted file mode 100644 index 88301cafd115..000000000000 --- a/docs/main/deployment-guide/server/trouble-postgres.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "PostgreSQL installation troubleshooting" ---- -From Mattermost v8.0, [PostgreSQL](/deployment-guide/software-hardware-requirements#database-software) is our database of choice for Mattermost to enhance the platform’s performance and capabilities. - -PostgreSQL v15 introduces changes that may affect compatibility with previous releases. If you're deploying a fresh installation of PostgreSQL v15, run this command: `GRANT CREATE ON SCHEMA public TO PUBLIC` to ensure that you can use Mattermost. - -## PostgreSQL full-text search fails to use indexes with non-English `default_text_search_config` - -Mattermost uses `default_text_search_config` for full-text search in PostgreSQL databases, as opposed to a hardcoded text search config. However, indexes are still created with a hardcoded text search config (english) and as a result, full-text search may never use the indexes. - -Some of the tables in Mattermost, like `Posts` or `Users`, contain GIN indexes to improve the database full-text search feature in PostgreSQL. - -These indexes need to be built against a specific language, and when they're created they're hard-coded to English. Full-text search queries are always performed using the `default_text_search_config` database setting. In order for the full-text search feature to leverage the indexes, the language specified in the query needs to match the language specified in the index. - -If the `default_text_search_config` is not set to `english`, the GIN indexes will not be used. Database administrators can work around this by dropping the specific GIN index they're interested in and rebuilding it with the value of `default_text_search_config`. - -For example, if the default language of your server is Spanish: - -`` `sql # Create the new index with a new name before dropping the old one CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_posts_message_txt_spanish ON posts USING gin(to_tsvector('spanish', message)); # Check that the new index does work. If it does, drop the old one and rename the new one: DROP INDEX CONCURRENTLY IF EXISTS idx_posts_message_txt; ALTER INDEX idx_posts_message_txt_spanish RENAME TO idx_posts_message_txt; ``\` - -## Change the PostgreSQL username and password - -We recommend changing the PostgreSQL username and password in the `.env` file. diff --git a/docs/main/deployment-guide/server/trouble_mysql.mdx b/docs/main/deployment-guide/server/trouble_mysql.mdx index e97e703177e2..185256e1987c 100644 --- a/docs/main/deployment-guide/server/trouble_mysql.mdx +++ b/docs/main/deployment-guide/server/trouble_mysql.mdx @@ -1,10 +1,11 @@ --- title: "MySQL installation troubleshooting" +unlisted: true --- - From Mattermost v11, Mattermost completely stops support MySQL as a database driver. MySQL support has been completely removed from the codebase, and the product will throw an invalid configuration error. -- PostgreSQL is our preferred database of choice. See the [database software](/deployment-guide/software-hardware-requirements#database-software) documentation for details on database version support, and see the [Migrate from MySQL to PostgreSQL](/deployment-guide/postgres-migration) documentation for details on migrating from MySQL to PostgreSQL. +- PostgreSQL is our preferred database of choice. See the [database software](/deployment-guide/software-hardware-requirements#database-software) documentation for details on database version support, and see the [Migrate from MySQL to PostgreSQL](/administration-guide/manage/admin/postgres-migration) documentation for details on migrating from MySQL to PostgreSQL. diff --git a/docs/main/deployment-guide/server/troubleshooting.mdx b/docs/main/deployment-guide/server/troubleshooting.mdx index a7090777a6b7..50428a4a35c4 100644 --- a/docs/main/deployment-guide/server/troubleshooting.mdx +++ b/docs/main/deployment-guide/server/troubleshooting.mdx @@ -1,7 +1,14 @@ --- -title: "General deployment troubleshooting" +title: "Deployment troubleshooting" --- -This document summarizes common deployment troubleshooting issues and resolutions. Some of these suggestions can be done directly, and others may need consultation from your network administrator. +This document summarizes common deployment troubleshooting issues and resolutions, and describes the diagnostic data to gather before opening a support ticket. Some of these suggestions can be done directly, and others may need consultation from your network administrator. + +If you already know which part of your deployment is failing, start with the guide for that layer: + +- [PostgreSQL troubleshooting](/deployment-guide/server/prepare-database#troubleshooting), on the database setup page under **Prepare**. +- [Docker deployment troubleshooting](/deployment-guide/server/docker-troubleshooting), alongside the container deployment steps under **Choose a deployment method**. +- [Desktop app troubleshooting](/deployment-guide/desktop/desktop-troubleshooting), at the end of **Desktop app deployment**. +- [Mobile deployment troubleshooting](/deployment-guide/mobile/mobile-troubleshooting), at the end of **Mobile app deployment**. ## Start Mattermost at system boot diff --git a/docs/main/deployment-guide/software-hardware-requirements.mdx b/docs/main/deployment-guide/software-hardware-requirements.mdx index 8046db36ce2c..fccb70d7a73f 100644 --- a/docs/main/deployment-guide/software-hardware-requirements.mdx +++ b/docs/main/deployment-guide/software-hardware-requirements.mdx @@ -1,12 +1,11 @@ --- title: "Software and hardware requirements" -sidebar_label: "Software & hardware requirements" --- This guide outlines minimum software and hardware requirements for deploying Mattermost. Requirements may vary based on utilization and observing performance of pilot projects is recommended prior to scale out. ## Deployment overview -Please see the [Application architecture](/deployment-guide/reference-architecture/application-architecture) documentation for a summary of software systems and components whose requirements are described in this document. +Please see the [Application architecture](/deployment-guide/application-architecture) documentation for a summary of software systems and components whose requirements are described in this document. ## Software requirements @@ -173,7 +172,7 @@ While community support exists for Fedora, FreeBSD, and Arch Linux, Mattermost d - PostgreSQL 14.0+ -Amazon Aurora equivalents of PostgreSQL is also supported. Our [Migration Guide](https://docs.mattermost.com/deployment-guide/postgres-migration.html) outlines the steps, tools and support available for migrating from MySQL to PostgreSQL. +Amazon Aurora equivalents of PostgreSQL is also supported. Our [Migration Guide](https://docs.mattermost.com/administration-guide/manage/admin/postgres-migration.html) outlines the steps, tools and support available for migrating from MySQL to PostgreSQL. @@ -248,11 +247,11 @@ Search limitations on PostgreSQL: - Terms containing a dash return incorrect results as dashes are ignored in the search query. - Limitations set by [PostgreSQL itself](https://www.postgresql.org/docs/current/textsearch-limitations.html): - One of them is: `The length of a tsvector (lexemes + positions) must be less than 1 megabyte`, which means that, based on the file content, even files with content less than 1 MB won't be searchable if they hit the `tsvector` limit of 1 MB. -- If any of the above is an issue, you can [set up and enable enterprise search](/deployment-guide/reference-architecture/scale/enterprise-search). +- If any of the above is an issue, you can [set up and enable enterprise search](/deployment-guide/scale/enterprise-search). ##### MySQL Support -[MySQL database support](/deployment-guide/server/prepare-mattermost-mysql-database) is being deprecated starting with Mattermost v11. See the [PostgreSQL migration](/deployment-guide/postgres-migration) documentation for guidance on migrating from MySQL to PostgreSQL. +[MySQL database support](/deployment-guide/server/prepare-mattermost-mysql-database) is being deprecated starting with Mattermost v11. See the [PostgreSQL migration](/administration-guide/manage/admin/postgres-migration) documentation for guidance on migrating from MySQL to PostgreSQL. - Search limitations on MySQL: Hashtags or recent mentions of usernames containing a dot do not return search results. - The migration system requires the MySQL database user to have additional EXECUTE, CREATE ROUTINE, ALTER ROUTINE and REFERENCES privileges to run schema migrations. @@ -305,7 +304,7 @@ Most small to medium Mattermost team deployments can be supported on a single se #### Scale requirements -For Enterprise Edition deployments with a multi-server setup, see [our scaling guide](/deployment-guide/reference-architecture/scale/scaling-for-enterprise). +For Enterprise Edition deployments with a multi-server setup, see [our scaling guide](/deployment-guide/scale/scaling-for-enterprise). It is highly recommended that pilots are run before enterprise-wide deployments in order to estimate full scale usage based on your specific organizational needs. You can use the Mattermost open source load testing framework to simulate usage of your system: [https://github.com/mattermost/mattermost-load-test-ng](https://github.com/mattermost/mattermost-load-test-ng). @@ -317,5 +316,5 @@ For Enterprise Edition deployments with a multi-server setup, we highly recommen - Prometheus to track system health of your Mattermost deployment, through [performance monitoring feature](/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring) available in Mattermost Enterprise. - Grafana to visualize the system health metrics collected by Prometheus with the [performance monitoring feature](/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring). Grafana 5.0.0 and later is recommended. -- Elasticsearch to support highly efficient database searches in a cluster environment. Elasticsearch v8.x and v9.x are supported, and Elasticsearch v9.x or AWS OpenSearch is recommended. [Learn more](/deployment-guide/reference-architecture/scale/enterprise-search). +- Elasticsearch to support highly efficient database searches in a cluster environment. Elasticsearch v8.x and v9.x are supported, and Elasticsearch v9.x or AWS OpenSearch is recommended. [Learn more](/deployment-guide/scale/enterprise-search). - AWS S3 or any S3-compatible service. Mattermost is compatible with object storage systems which implement the S3 API. You can also use local storage or a network drive using NFS. Learn more about file storage configuration options [in our documentation](/administration-guide/configure/environment-configuration-settings#file-storage). diff --git a/docs/main/end-user-guide/access/client-availability.mdx b/docs/main/end-user-guide/access/client-availability.mdx index 784917e5f35e..678b164ed858 100644 --- a/docs/main/end-user-guide/access/client-availability.mdx +++ b/docs/main/end-user-guide/access/client-availability.mdx @@ -1,5 +1,5 @@ --- -title: "Client Availability" +title: "Client availability" --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/main/end-user-guide/agents.mdx b/docs/main/end-user-guide/agents.mdx index d09722fe317f..e937a1aaccd0 100644 --- a/docs/main/end-user-guide/agents.mdx +++ b/docs/main/end-user-guide/agents.mdx @@ -12,3 +12,8 @@ import AgentsUserGuideBody from '../agents/docs/_user_guide_partial.mdx'; Mattermost Agents is formerly known as Mattermost Copilot. + +## Learn more + +- [Agents usage tips and best practices](/agents/docs/usage_tips) - Get more out of your interactions with Mattermost Agents. +- [Agents context management](/end-user-guide/collaborate/agents-context-management) - Learn what information Agents sends to the LLM, and how your data stays private. diff --git a/docs/main/end-user-guide/collaborate/audio-and-screensharing.mdx b/docs/main/end-user-guide/collaborate/audio-and-screensharing.mdx index bff8bce013ed..ad5098ae8dd1 100644 --- a/docs/main/end-user-guide/collaborate/audio-and-screensharing.mdx +++ b/docs/main/end-user-guide/collaborate/audio-and-screensharing.mdx @@ -1,5 +1,5 @@ --- -title: "Audio and Screensharing" +title: "Audio and screen sharing" --- diff --git a/docs/main/end-user-guide/collaborate/collaborate-index.mdx b/docs/main/end-user-guide/collaborate/collaborate-index.mdx index 443a4b59587d..e436bcc975e2 100644 --- a/docs/main/end-user-guide/collaborate/collaborate-index.mdx +++ b/docs/main/end-user-guide/collaborate/collaborate-index.mdx @@ -10,13 +10,10 @@ This Mattermost end user documentation is designed for anyone who wants guidance ## Getting Started -- [Organize using teams](/end-user-guide/collaborate/organize-using-teams) - Learn about team-based organization in Mattermost. -- [Organize using custom user groups](/end-user-guide/collaborate/organize-using-custom-user-groups) - Learn about creating and managing custom user groups in Mattermost. - [Invite people to your workspace](/end-user-guide/collaborate/invite-people) - Learn how to add new users to Mattermost and add users to existing teams and channels. -- [Learn about Mattermost user roles](/end-user-guide/collaborate/learn-about-roles) - Learn about the 6 user roles in Mattermost and what they can do. -- [View system information](/end-user-guide/collaborate/view-system-information) - View technical details about your Mattermost server, including version information and system metrics. -- [Collaborate within channels](/end-user-guide/collaborate/collaborate-within-channels) - Learn how to get started collaborating within Mattermost channels. -- [Communicate with messages and threads](/end-user-guide/collaborate/communicate-with-messages) Learn how to get started collaborating within Mattermost channels. -- [Collaborate within Microsoft Teams](/end-user-guide/collaborate/collaborate-within-connected-microsoft-teams) - Learn how to get started collaborating within Microsoft Teams. -- [Keyboard shortcuts](/end-user-guide/collaborate/keyboard-shortcuts) - Make a more efficient use of your keyboard with keyboard shortcuts. -- [Extend Mattermost with integrations](/end-user-guide/collaborate/extend-mattermost-with-integrations) - Find open-source integrations to common tools in the Mattermost Marketplace, and learn how to interact with rich integration messages. +- [Channels](/end-user-guide/collaborate/collaborate-within-channels) - Learn how channels work, and how to create, join, organize, and manage them. +- [Messages and threads](/end-user-guide/collaborate/communicate-with-messages) - Learn how to send, format, and find messages, and how to keep conversations organized in threads. +- [Calls and screen sharing](/end-user-guide/collaborate/audio-and-screensharing) - Learn about Mattermost's self-hosted audio calls with screen sharing, and the video conferencing integrations Mattermost supports. +- [Teams, groups, and roles](/end-user-guide/collaborate/organize-using-teams) - Learn about team-based organization, custom user groups, and what each Mattermost user role can do. +- [Integrations and connected apps](/end-user-guide/collaborate/extend-mattermost-with-integrations) - Find open-source integrations to common tools in the Mattermost Marketplace, and learn how to collaborate from within Microsoft Teams. +- [Keyboard shortcuts and accessibility](/end-user-guide/collaborate/keyboard-shortcuts) - Make more efficient use of your keyboard, and learn how to navigate Mattermost without a mouse. diff --git a/docs/main/end-user-guide/collaborate/flag-messages.mdx b/docs/main/end-user-guide/collaborate/flag-messages.mdx index 73aba3f5125b..31bc14c95992 100644 --- a/docs/main/end-user-guide/collaborate/flag-messages.mdx +++ b/docs/main/end-user-guide/collaborate/flag-messages.mdx @@ -1,5 +1,5 @@ --- -title: "Quarantine for Review" +title: "Quarantine messages for review" --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/main/end-user-guide/collaborate/mark-channels-unread.mdx b/docs/main/end-user-guide/collaborate/mark-channels-unread.mdx index 44c2c7031dd4..99abf26469a7 100644 --- a/docs/main/end-user-guide/collaborate/mark-channels-unread.mdx +++ b/docs/main/end-user-guide/collaborate/mark-channels-unread.mdx @@ -1,5 +1,5 @@ --- -title: "Mark messages as unread" +title: "Mark channels as unread" --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/main/end-user-guide/end-user-guide-index.mdx b/docs/main/end-user-guide/end-user-guide-index.mdx index 91c16137e31a..934826f9c94b 100644 --- a/docs/main/end-user-guide/end-user-guide-index.mdx +++ b/docs/main/end-user-guide/end-user-guide-index.mdx @@ -5,13 +5,13 @@ If you're using Mattermost to connect and collaborate, build repeatable, automat In this documentation, you'll learn about using Mattermost. Your Mattermost system admin has deployed Mattermost for your organization. A live Mattermost instance is ready for you to log into using your user credentials. Your Mattermost workspace is where you'll send and receive messages, see activity notifications, create, run, and participate in playbook runs, and where you'll customize look and feel through workspace preferences. -- [Access Your Workspace](/end-user-guide/access/access-your-workspace) - Learn how to access Mattermost using web, desktop, or mobile apps, and authenticate with your credentials. -- [Messaging Collaboration](/end-user-guide/collaborate/collaborate-index) - Learn how to use Mattermost to connect and collaborate with your teammates. +- [Access your workspace](/end-user-guide/access/access-your-workspace) - Learn how to access Mattermost using web, desktop, or mobile apps, and authenticate with your credentials. +- [Collaborate](/end-user-guide/collaborate/collaborate-index) - Learn how to use Mattermost to connect and collaborate with your teammates through channels, messages and threads, and audio calls with screen sharing. - [Workflow Automation](/end-user-guide/workflow-automation/workflow-automation-index) - Learn how to use Mattermost Playbooks to build repeatable processes, move faster, and make fewer mistakes with checklist-based automations. -- [Audio and Screensharing](/end-user-guide/collaborate/audio-and-screensharing) - Learn about Mattermost's self-hosted audio calls plugin with screen sharing and the many video conferencing integrations Mattermost supports. -- [Project and Task Management](/end-user-guide/project-management/project-management-index) - Learn how to use Mattermost Boards to coordinate operational work with Kanban-style planning. - [AI Agents](/end-user-guide/agents) - Learn how to use AI agents to help you make decisions, find information, and automate repetitive tasks. -- [Customize Your Preferences](/end-user-guide/preferences/preferences-index) - Learn how to make Mattermost match the way you prefer to work. +- [Project Management](/end-user-guide/project-management/project-management-index) - Learn how to use Mattermost Boards to coordinate operational work with Kanban-style planning. +- [Preferences](/end-user-guide/preferences/preferences-index) - Learn how to make Mattermost match the way you prefer to work. +- [View system information](/end-user-guide/view-system-information) - Check your Mattermost version and server details when you need them for troubleshooting or a support request. ![An example of the Mattermost screen that includes teams, the channel sidebar, an active conversation in the center pane, reply threads in the right-hand pane.](/images/Channels_Hero.png) diff --git a/docs/main/end-user-guide/preferences/preferences-index.mdx b/docs/main/end-user-guide/preferences/preferences-index.mdx index 22441249a935..fec3a52a9468 100644 --- a/docs/main/end-user-guide/preferences/preferences-index.mdx +++ b/docs/main/end-user-guide/preferences/preferences-index.mdx @@ -14,15 +14,22 @@ Download [this guide to customizing Mattermost for technical teams](https://matt ## Learn more +- [Manage your Mattermost profile](/end-user-guide/preferences/manage-your-profile) - Configure your Mattermost profile. +- [Set your status and availability](/end-user-guide/preferences/set-your-status-availability) - Let your team know whether you’re available. +- [Manage your security preferences](/end-user-guide/preferences/manage-your-security-preferences) - Configure your Mattermost security preferences. - [Manage your notifications](/end-user-guide/preferences/manage-your-notifications) - Learn how Mattermost notifications work by default and how to customize notifications based on how you prefer to work. + - [Manage your @mention and keyword notifications](/end-user-guide/preferences/manage-your-mentions-keywords-notifications) - Choose the words that get your attention. + - [Manage your thread reply notifications](/end-user-guide/preferences/manage-your-thread-reply-notifications) - Choose when replies to a thread notify you. + - [Manage your channel-specific notifications](/end-user-guide/preferences/manage-your-channel-specific-notifications) - Override your global settings for a single channel. + - [Manage your desktop notifications](/end-user-guide/preferences/manage-your-desktop-notifications) - Customize notifications in the desktop app. + - [Manage your mobile notifications](/end-user-guide/preferences/manage-your-mobile-notifications) - Customize push notifications on iOS and Android. + - [Manage your web notifications](/end-user-guide/preferences/manage-your-web-notifications) - Customize notifications in a web browser. + - [Troubleshoot notifications](/end-user-guide/preferences/troubleshoot-notifications) - Find out why you're not receiving the notifications you expect. - [Customize your Mattermost theme](/end-user-guide/preferences/customize-your-theme) - Learn how to change the look and feel of Mattermost based on your preferences. +- [Manage your display options](/end-user-guide/preferences/manage-your-display-options) - Customize your Mattermost display to suit your preferences. - [Customize your channel sidebar](/end-user-guide/preferences/customize-your-channel-sidebar) - Organize conversations in the sidebar to keep your workspace efficient. -- [Manage your profile](/end-user-guide/preferences/manage-your-profile) - Configure your Mattermost profile. -- [Manage your security preferences](/end-user-guide/preferences/manage-your-security-preferences) - Configure your Mattermost security preferences. -- [Set your status and availability](/end-user-guide/preferences/set-your-status-availability) - Let your team know whether you’re available. -- [Customize your display options](/end-user-guide/preferences/manage-your-display-options) - Customize your Mattermost display to suit your preferences. - [Manage your sidebar options](/end-user-guide/preferences/manage-your-sidebar-options) - Customize your Mattermost channel sidebar to suit your preferences. - [Manage advanced options](/end-user-guide/preferences/manage-advanced-options) - Customize advanced Mattermost user options to suit your preferences. - [Manage your plugin preferences](/end-user-guide/preferences/manage-your-plugin-preferences) - Customize Mattermost plugin preferences for Microsoft Teams and Calls. -- [Customize your desktop app experience](/end-user-guide/preferences/customize-desktop-app-experience) - Learn about additional preferences available only in the desktop app. +- [Customize your Desktop App experience](/end-user-guide/preferences/customize-desktop-app-experience) - Learn about additional preferences available only in the desktop app. - [Connect to multiple Mattermost workspaces](/end-user-guide/preferences/connect-multiple-workspaces) - Learn how to connect to multiple Mattermost workspaces using the Mattermost desktop or mobile app. diff --git a/docs/main/end-user-guide/project-management/boards-settings.mdx b/docs/main/end-user-guide/project-management/boards-settings.mdx index 77254cb4e2c8..97993b791d3f 100644 --- a/docs/main/end-user-guide/project-management/boards-settings.mdx +++ b/docs/main/end-user-guide/project-management/boards-settings.mdx @@ -1,5 +1,5 @@ --- -title: "Settings" +title: "Boards settings" --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/main/end-user-guide/project-management/project-management-index.mdx b/docs/main/end-user-guide/project-management/project-management-index.mdx index 40b1e7d8ee98..cbc9bb329026 100644 --- a/docs/main/end-user-guide/project-management/project-management-index.mdx +++ b/docs/main/end-user-guide/project-management/project-management-index.mdx @@ -31,12 +31,12 @@ When working with cards, you can manage properties, add descriptions, attach ima Learn more about working with boards by visiting the following documentation pages: -- [Work with boards](/end-user-guide/project-management/work-with-boards) - Work with boards. -- [Work with cards](/end-user-guide/project-management/work-with-cards) - Work with cards. -- [Work with views](/end-user-guide/project-management/work-with-views) - Work with views. -- [Work with groups, filter, and sort](/end-user-guide/project-management/groups-filter-sort) - Work with groups, filter, and sort. -- [Work with calculations](/end-user-guide/project-management/calculations) - Work with calculations. -- [Share and collaborate](/end-user-guide/project-management/share-and-collaborate) - Share and collaborate +- [Navigate boards](/end-user-guide/project-management/navigate-boards) - Find your way around the Boards interface. +- [Work with boards](/end-user-guide/project-management/work-with-boards) - Create boards, and display them as kanban, table, calendar, or gallery views. +- [Work with cards](/end-user-guide/project-management/work-with-cards) - Track individual work items, and customize their properties. +- [Work with saved views](/end-user-guide/project-management/work-with-views) - Save a board's layout, filters, and sorting to return to later. +- [Work with groups, filter, and sort](/end-user-guide/project-management/groups-filter-sort) - Organize the cards on a board to focus on the work that matters now. +- [Work with calculations](/end-user-guide/project-management/calculations) - Summarize card properties across a board or a group. +- [Share and collaborate on boards](/end-user-guide/project-management/share-and-collaborate) - Manage who can see and edit a board. - [Import, export, and migrate](/end-user-guide/project-management/migrate-to-boards) - Migrate your data from other tools into Mattermost Boards. -- [Navigate boards](/end-user-guide/project-management/navigate-boards) - Navigate boards. - [Boards settings](/end-user-guide/project-management/boards-settings) - Adjust language and emoji settings, and restart the product tour. diff --git a/docs/main/end-user-guide/project-management/share-and-collaborate.mdx b/docs/main/end-user-guide/project-management/share-and-collaborate.mdx index a8a39c55364f..18d3d57491b8 100644 --- a/docs/main/end-user-guide/project-management/share-and-collaborate.mdx +++ b/docs/main/end-user-guide/project-management/share-and-collaborate.mdx @@ -1,5 +1,5 @@ --- -title: "Share and collaborate" +title: "Share and collaborate on boards" --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/main/end-user-guide/collaborate/view-system-information.mdx b/docs/main/end-user-guide/view-system-information.mdx similarity index 100% rename from docs/main/end-user-guide/collaborate/view-system-information.mdx rename to docs/main/end-user-guide/view-system-information.mdx diff --git a/docs/main/end-user-guide/workflow-automation/metrics-and-goals.mdx b/docs/main/end-user-guide/workflow-automation/metrics-and-goals.mdx index efa8eab7b639..dc8359895eac 100644 --- a/docs/main/end-user-guide/workflow-automation/metrics-and-goals.mdx +++ b/docs/main/end-user-guide/workflow-automation/metrics-and-goals.mdx @@ -1,5 +1,5 @@ --- -title: "Metrics and goals" +title: "Work with metrics and goals" --- diff --git a/docs/main/end-user-guide/workflow-automation/notifications-and-updates.mdx b/docs/main/end-user-guide/workflow-automation/notifications-and-updates.mdx index 6a9c2d0ca1bd..45c7fde8525a 100644 --- a/docs/main/end-user-guide/workflow-automation/notifications-and-updates.mdx +++ b/docs/main/end-user-guide/workflow-automation/notifications-and-updates.mdx @@ -1,5 +1,5 @@ --- -title: "Notifications and updates" +title: "Work with notifications and updates" --- import useBaseUrl from '@docusaurus/useBaseUrl'; import Tabs from '@theme/Tabs'; diff --git a/docs/main/end-user-guide/workflow-automation/share-and-collaborate.mdx b/docs/main/end-user-guide/workflow-automation/share-and-collaborate.mdx index 8129ebe2671c..20653025eb38 100644 --- a/docs/main/end-user-guide/workflow-automation/share-and-collaborate.mdx +++ b/docs/main/end-user-guide/workflow-automation/share-and-collaborate.mdx @@ -1,5 +1,5 @@ --- -title: "Share and collaborate" +title: "Share and collaborate on playbooks" --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/main/end-user-guide/workflow-automation/workflow-automation-index.mdx b/docs/main/end-user-guide/workflow-automation/workflow-automation-index.mdx index 34ff8934ca82..fbda3fbeb6fa 100644 --- a/docs/main/end-user-guide/workflow-automation/workflow-automation-index.mdx +++ b/docs/main/end-user-guide/workflow-automation/workflow-automation-index.mdx @@ -57,11 +57,11 @@ Walk through our [Incident Response playbook demonstration](https://mattermost.c This end user documentation is for anyone who wants guidance on building repeatable processes in Mattermost. -- [Overview](/end-user-guide/workflow-automation/learn-about-playbooks) - Learn what collaborative playbooks are and how they're used. +- [Learn about collaborative playbooks](/end-user-guide/workflow-automation/learn-about-playbooks) - Learn what collaborative playbooks are and how they're used. - [Work with collaborative playbooks](/end-user-guide/workflow-automation/work-with-playbooks) - Customize a playbook for successful runs. - [Work with runs](/end-user-guide/workflow-automation/work-with-runs) - Edit triggers and actions in an active run. - [Work with tasks](/end-user-guide/workflow-automation/work-with-tasks) - Work with tasks and the task inbox. - [Work with notifications and updates](/end-user-guide/workflow-automation/notifications-and-updates) - Keep track of all your active runs and tasks. - [Work with metrics and goals](/end-user-guide/workflow-automation/metrics-and-goals) - Unlock insights about the performance of collaborative workflows across organizations with workflow dashboards. -- [Share and collaborate](/end-user-guide/workflow-automation/share-and-collaborate) - Reuse and share collaborative playbooks with your organization. -- [Interact with collaborative playbooks](/end-user-guide/workflow-automation/interact-with-playbooks) - Interact with collaborative playbooks using slash commands and the REST API. +- [Share and collaborate on playbooks](/end-user-guide/workflow-automation/share-and-collaborate) - Reuse and share collaborative playbooks with your organization. +- [Interact with playbooks](/end-user-guide/workflow-automation/interact-with-playbooks) - Interact with collaborative playbooks using slash commands and the REST API. diff --git a/docs/main/for/air-gapped-operator.mdx b/docs/main/for/air-gapped-operator.mdx index 0903d9c3d0b2..a99727761c0d 100644 --- a/docs/main/for/air-gapped-operator.mdx +++ b/docs/main/for/air-gapped-operator.mdx @@ -18,7 +18,7 @@ Every page linked from here works without internet access. Stage artifacts on an ## Start here @@ -27,9 +27,9 @@ Every page linked from here works without internet access. Stage artifacts on an ## Other personas diff --git a/docs/main/for/compliance-officer.mdx b/docs/main/for/compliance-officer.mdx index f4cd0f2a9baf..0a14dc2f5b3b 100644 --- a/docs/main/for/compliance-officer.mdx +++ b/docs/main/for/compliance-officer.mdx @@ -15,18 +15,18 @@ You collect audit evidence, respond to audits, and map regulatory mandates to Ma ## Common tasks diff --git a/docs/main/for/developer.mdx b/docs/main/for/developer.mdx index 106c870a52f1..e7f615cb7dc7 100644 --- a/docs/main/for/developer.mdx +++ b/docs/main/for/developer.mdx @@ -22,12 +22,12 @@ You build plugins, hit the REST API, or integrate Mattermost with other systems. ## Common tasks ## Other personas diff --git a/docs/main/for/security-architect.mdx b/docs/main/for/security-architect.mdx index 889c512a56a0..e2993384d141 100644 --- a/docs/main/for/security-architect.mdx +++ b/docs/main/for/security-architect.mdx @@ -14,19 +14,20 @@ You evaluate Mattermost for use in regulated, classified, or DISC (Defense, Inte ## Start here ## Common tasks ## Other personas diff --git a/docs/main/for/sre.mdx b/docs/main/for/sre.mdx index 50f86ddb7ed3..4ae498f592c1 100644 --- a/docs/main/for/sre.mdx +++ b/docs/main/for/sre.mdx @@ -14,7 +14,7 @@ You own Mattermost's deployment, scaling, and operations. This page is a curated ## Start here @@ -22,7 +22,7 @@ You own Mattermost's deployment, scaling, and operations. This page is a curated ## Common tasks diff --git a/docs/main/integrations-guide/github.mdx b/docs/main/integrations-guide/github.mdx index 021feda8bda6..4a888b7abc00 100644 --- a/docs/main/integrations-guide/github.mdx +++ b/docs/main/integrations-guide/github.mdx @@ -1,5 +1,6 @@ --- title: "Connect GitHub to Mattermost" +sidebar_label: "GitHub" --- import useBaseUrl from '@docusaurus/useBaseUrl'; import Tabs from '@theme/Tabs'; diff --git a/docs/main/integrations-guide/gitlab.mdx b/docs/main/integrations-guide/gitlab.mdx index ad4799758d0e..81d7d9dbb28f 100644 --- a/docs/main/integrations-guide/gitlab.mdx +++ b/docs/main/integrations-guide/gitlab.mdx @@ -1,5 +1,6 @@ --- title: "Connect GitLab to Mattermost" +sidebar_label: "GitLab" --- import useBaseUrl from '@docusaurus/useBaseUrl'; import Tabs from '@theme/Tabs'; diff --git a/docs/main/integrations-guide/jira.mdx b/docs/main/integrations-guide/jira.mdx index 4aa5c522534d..d333bfcc7f28 100644 --- a/docs/main/integrations-guide/jira.mdx +++ b/docs/main/integrations-guide/jira.mdx @@ -1,5 +1,6 @@ --- title: "Connect Jira to Mattermost" +sidebar_label: "Jira" --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/main/integrations-guide/mattermost-mission-collaboration-for-m365.mdx b/docs/main/integrations-guide/mattermost-mission-collaboration-for-m365.mdx index 96bedf3abbeb..4673f505ad2d 100644 --- a/docs/main/integrations-guide/mattermost-mission-collaboration-for-m365.mdx +++ b/docs/main/integrations-guide/mattermost-mission-collaboration-for-m365.mdx @@ -1,11 +1,12 @@ --- title: "Connect Microsoft 365, Teams, and Outlook with Mattermost" +sidebar_label: "Microsoft 365 and Outlook" --- Mattermost Mission Collaboration for Microsoft extends Microsoft for mission-critical coordination, command and control, incident response, and DevSecOps workflows in demanding environments, including air-gapped and classified networks by embedding Mattermost inside Teams. Use data-sovereign tools like secure chat, Playbooks, and Calls directly within M365, Teams, and Outlook. -This app is designed to work with Microsoft 365, Teams, and Outlook and is currently in [Beta](/administration-guide/manage/feature-labels#beta). From Mattermost v10.7.1, this integration supports Entra ID-based Single Sign-On (SSO) for automatic authentication. Users must exist in both Mattermost and Microsoft with matching email addresses; the integration handles authentication but does not automatically provision new users. See the [user provisioning](/administration-guide/manage/admin/user-provisioning) product documentation for details on setting up SSO. +This app is designed to work with Microsoft 365, Teams, and Outlook and is currently in [Beta](/administration-guide/manage/feature-labels#beta). From Mattermost v10.7.1, this integration supports Entra ID-based Single Sign-On (SSO) for automatic authentication. Users must exist in both Mattermost and Microsoft with matching email addresses; the integration handles authentication but does not automatically provision new users. See the [single sign-on](/administration-guide/onboard/corporate-directory-integration) product documentation for details on setting up SSO. ![Mattermost embedded as a Microsoft Teams app.](/images/mattermost-in-msteams-2.png) diff --git a/docs/main/integrations-guide/microsoft-calendar.mdx b/docs/main/integrations-guide/microsoft-calendar.mdx index 594f2d659697..3b7e2d359cec 100644 --- a/docs/main/integrations-guide/microsoft-calendar.mdx +++ b/docs/main/integrations-guide/microsoft-calendar.mdx @@ -1,5 +1,6 @@ --- title: "Connect Microsoft Calendar to Mattermost" +sidebar_label: "Microsoft Calendar" --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/main/integrations-guide/microsoft-teams-meetings.mdx b/docs/main/integrations-guide/microsoft-teams-meetings.mdx index 391ca804a30f..d09ad87baf39 100644 --- a/docs/main/integrations-guide/microsoft-teams-meetings.mdx +++ b/docs/main/integrations-guide/microsoft-teams-meetings.mdx @@ -1,5 +1,6 @@ --- title: "Connect Microsoft Teams Meetings to Mattermost" +sidebar_label: "Microsoft Teams Meetings" --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/main/integrations-guide/microsoft-teams-sync.mdx b/docs/main/integrations-guide/microsoft-teams-sync.mdx index f304e1ce557a..c6be298f5a65 100644 --- a/docs/main/integrations-guide/microsoft-teams-sync.mdx +++ b/docs/main/integrations-guide/microsoft-teams-sync.mdx @@ -1,5 +1,6 @@ --- title: "Connect Microsoft Teams to Mattermost" +sidebar_label: "Microsoft Teams Sync" --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/main/integrations-guide/plugins.mdx b/docs/main/integrations-guide/plugins.mdx index 7bcf7a53bf06..7d422e10d91d 100644 --- a/docs/main/integrations-guide/plugins.mdx +++ b/docs/main/integrations-guide/plugins.mdx @@ -7,7 +7,7 @@ title: "Plugins" Mattermost's pre-built plugins make it simple for teams to extend Mattermost with powerful integrations for project management, incident response, monitoring, and collaboration. With simple configuration steps, you can quickly connect Mattermost to widely used tools such as Jira, GitHub, GitLab, Zoom, ServiceNow and others, enabling powerful integrations that enhance collaboration and streamline workflows out of the box. -Learn more about what popular [pre-built integrations are available and how to install them](/integrations-guide/popular-integrations). +Learn more about which [pre-built integrations are available and how to install them](/integrations-guide/popular-integrations), including the first-party Mattermost plugins. As a system admin, see the [install and manage plugins](/administration-guide/configure/manage-plugins) documentation for step-by-step instructions on installing, enabling, configuring, updating, and removing plugins. diff --git a/docs/main/integrations-guide/popular-integrations.mdx b/docs/main/integrations-guide/popular-integrations.mdx index a6e71c5b42c0..83c94dca697b 100644 --- a/docs/main/integrations-guide/popular-integrations.mdx +++ b/docs/main/integrations-guide/popular-integrations.mdx @@ -1,11 +1,11 @@ --- -title: "Popular Pre-Built Integrations" +title: "Pre-built integrations" --- import useBaseUrl from '@docusaurus/useBaseUrl'; Accelerate your operational and technical workflows by connecting Mattermost with your mission-critical tools through pre-built integrations. -## Mattermost Integrations +## Mattermost integrations Designed for teams that need reliability, auditability, and ownership of their collaboration stack, the following Mattermost collaboration integrations keep your data all inside your secure Mattermost ecosystem. Reduce tool sprawl, strengthen security, improve compliance posture, all with a seamless user experience. @@ -16,7 +16,7 @@ Designed for teams that need reliability, auditability, and ownership of their c | [Mattermost Metrics](/administration-guide/scale/collect-performance-metrics) | Product menu icon > **App Marketplace** | Shows numbers about system performance when people use Mattermost. | | [Mattermost User Survey](/administration-guide/configure/manage-user-surveys) | Product menu icon > **App Marketplace** | Collects feedback by asking questions directly in Mattermost channels. | -## Microsoft Integrations +## Microsoft integrations If your organization relies on Microsoft tools, Mattermost offers deep integrations with M365, Teams, Outlook, and Calendar to keep collaboration seamless and secure. These integrations allow you to enhance and extend Microsoft tools while maintaining Mattermost as your central hub. By connecting Mattermost with Microsoft apps, you reduce context switching, strengthen reliability through secure fallback options, and ensure your workflows stay efficient across both platforms. @@ -27,6 +27,8 @@ If your organization relies on Microsoft tools, Mattermost offers deep integrati | [Microsoft Teams Meetings](/integrations-guide/microsoft-teams-meetings) | Product menu icon > **App Marketplace** | Lets you start or join Microsoft Teams meetings directly from Mattermost. | | [Microsoft Teams Sync](/integrations-guide/microsoft-teams-sync) | Product menu icon > **App Marketplace** | Copies messages from Microsoft Teams into Mattermost (one-way) to keep conversations in sync. | +## Third-party integrations + The following integrations bring key external tools (DevOps, ITSM, monitoring, and meetings) into Mattermost, so teams can see updates, take action, and collaborate faster without leaving their secure chat environment. | Third-Party Integration | Where to Get It | What It Does | diff --git a/docs/main/integrations-guide/servicenow.mdx b/docs/main/integrations-guide/servicenow.mdx index 73b60f6366a5..ae4232cdae89 100644 --- a/docs/main/integrations-guide/servicenow.mdx +++ b/docs/main/integrations-guide/servicenow.mdx @@ -1,5 +1,6 @@ --- title: "Connect ServiceNow to Mattermost" +sidebar_label: "ServiceNow" --- import useBaseUrl from '@docusaurus/useBaseUrl'; diff --git a/docs/main/integrations-guide/zoom.mdx b/docs/main/integrations-guide/zoom.mdx index 20a61e9c35ce..04c490c03973 100644 --- a/docs/main/integrations-guide/zoom.mdx +++ b/docs/main/integrations-guide/zoom.mdx @@ -1,5 +1,6 @@ --- title: "Connect Zoom to Mattermost" +sidebar_label: "Zoom" --- import useBaseUrl from '@docusaurus/useBaseUrl'; import Tabs from '@theme/Tabs'; diff --git a/docs/main/product-overview/certifications-and-compliance.mdx b/docs/main/product-overview/certifications-and-compliance.mdx index 4d075f11cc02..f0f01d195bc0 100644 --- a/docs/main/product-overview/certifications-and-compliance.mdx +++ b/docs/main/product-overview/certifications-and-compliance.mdx @@ -54,7 +54,7 @@ Mattermost supports features that ensure data management and data portability. #### Data portability -- **Data Import:** Use the [bulk loading tool](/administration-guide/onboard/bulk-loading-data) to migrate data from an existing messaging system, or for pre-populating a new installation with data. [Review our migrate from Slack guidance](/administration-guide/onboard/migrate-from-slack) which summarizes the different approaches and meets the [Right to Data Portability](https://gdpr-info.eu/art-20-gdpr/) principle. +- **Data Import:** Use the [bulk import tool](/administration-guide/onboard/bulk-loading-data) to migrate data from an existing messaging system, or for pre-populating a new installation with data. [Review our migrate from Slack guidance](/administration-guide/onboard/migrate-from-slack) which summarizes the different approaches and meets the [Right to Data Portability](https://gdpr-info.eu/art-20-gdpr/) principle. - **Data Export:** Use [compliance exports](/administration-guide/comply/compliance-export) to export conversations from public, private and direct message channels in XML or EML format. Those in Team Edition can export conversations directly from the database, both in PostgreSQL and in MySQL. ## Accessibility compliance diff --git a/docs/main/product-overview/cloud-supported-integrations.mdx b/docs/main/product-overview/cloud-supported-integrations.mdx index d1182352fce6..bb6a995f287f 100644 --- a/docs/main/product-overview/cloud-supported-integrations.mdx +++ b/docs/main/product-overview/cloud-supported-integrations.mdx @@ -1,5 +1,8 @@ --- +unlisted: true --- +{/* Snippet include; not intended to be a standalone page */} + - [Microsoft Teams Sync](/integrations-guide/microsoft-teams-sync) - [Microsoft Calendar Integration](/integrations-guide/microsoft-calendar) - [Microsoft Teams Meetings](/integrations-guide/microsoft-teams-meetings) diff --git a/docs/main/product-overview/common-esr-support-rst.mdx b/docs/main/product-overview/common-esr-support-rst.mdx index d1e98e244573..64460ba25645 100644 --- a/docs/main/product-overview/common-esr-support-rst.mdx +++ b/docs/main/product-overview/common-esr-support-rst.mdx @@ -1,5 +1,8 @@ --- +unlisted: true --- +{/* Snippet include; not intended to be a standalone page */} + Support for Mattermost Server v10.11 [Extended Support Release](/product-overview/release-policy#extended-support-releases) has come to the end of its life cycle on August 15, 2026. Upgrading to [Mattermost Server v11.7 or later](/product-overview/mattermost-server-releases) is required. diff --git a/docs/main/product-overview/common-esr-support-upgrade.mdx b/docs/main/product-overview/common-esr-support-upgrade.mdx index 2befe922a4b8..a66b5d3b2a40 100644 --- a/docs/main/product-overview/common-esr-support-upgrade.mdx +++ b/docs/main/product-overview/common-esr-support-upgrade.mdx @@ -1,4 +1,5 @@ --- +unlisted: true --- {/* Snippet include; not intended to be a standalone page */} diff --git a/docs/main/product-overview/common-esr-support.mdx b/docs/main/product-overview/common-esr-support.mdx index 0bdb8a91e89b..9e863a1bbdd9 100644 --- a/docs/main/product-overview/common-esr-support.mdx +++ b/docs/main/product-overview/common-esr-support.mdx @@ -1,4 +1,5 @@ --- +unlisted: true --- {/* Snippet include; not intended to be a standalone page */} diff --git a/docs/main/product-overview/deprecated-features.mdx b/docs/main/product-overview/deprecated-features.mdx index 06e976113a98..eb873a54b19f 100644 --- a/docs/main/product-overview/deprecated-features.mdx +++ b/docs/main/product-overview/deprecated-features.mdx @@ -54,7 +54,7 @@ This page describes features that are removed from support for Mattermost, or wi - Experimental Bleve Search functionality has been retired. If Bleve is enabled, search will not work until `DisableDatabaseSearch` is set to `false`. See more details in [this forum post](https://forum.mattermost.com/t/transitioning-from-bleve-search-in-mattermost-v11/22982). -- Support for MySQL has ended. Our [Migration Guide](https://docs.mattermost.com/deployment-guide/postgres-migration.html) outlines the steps, tools and support available for migrating to PostgreSQL. See more details in [this forum post](https://forum.mattermost.com/t/transition-to-postgresql/19551). +- Support for MySQL has ended. Our [Migration Guide](https://docs.mattermost.com/administration-guide/manage/admin/postgres-migration.html) outlines the steps, tools and support available for migrating to PostgreSQL. See more details in [this forum post](https://forum.mattermost.com/t/transition-to-postgresql/19551). - The `registerPostDropdownMenuComponent` hook in the web app’s plugin API has been removed in favour of `registerPostDropdownMenuAction`. See more details in [this forum post](https://forum.mattermost.com/t/deprecating-a-post-dropdown-menu-component-plugin-api-v11/25001). diff --git a/docs/main/product-overview/editions-and-offerings.mdx b/docs/main/product-overview/editions-and-offerings.mdx index 578567d6794d..ba4b85f8997a 100644 --- a/docs/main/product-overview/editions-and-offerings.mdx +++ b/docs/main/product-overview/editions-and-offerings.mdx @@ -41,13 +41,13 @@ Built for **multi-domain secure operations**, Enterprise Advanced builds on all - [Classified and Sensitive Information Controls](/end-user-guide/collaborate/display-channel-banners) - [Zero Trust Security](/administration-guide/manage/admin/attribute-based-access-control) with dynamic attribute-based policy controls, environmental atributes, and User Authoritative Source integration - [Mobile security](/security-guide/mobile-security) controls -- [Air-gapped deployment workflows](/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment) +- [Air-gapped deployment workflows](/deployment-guide/deployment-scenarios/air-gapped-deployment) ## Mattermost Enterprise Mattermost Enterprise supports large-scale, mission-critical **secure collaborative workflows** with robust security, compliance, and productivity tooling. It builds on core ChatOps capabilities from the Professional offering, plus: -- [Enterprise-scale search with dedicated indexing and usage resourcing via cluster support](/deployment-guide/reference-architecture/scale/enterprise-search). +- [Enterprise-scale search with dedicated indexing and usage resourcing via cluster support](/deployment-guide/scale/enterprise-search). - [Sychronization of access controls, channels, and teams with AD/LDAP Groups](/administration-guide/onboard/ad-ldap-groups-synchronization). - [eDiscovery and compliance export automation](/administration-guide/comply/compliance-export). - [Enterprise mobile device management with custom EMM support via AppConfig](/deployment-guide/mobile/deploy-mobile-apps-using-emm-provider). @@ -60,8 +60,8 @@ Mattermost Enterprise supports large-scale, mission-critical **secure collaborat - [Channel export](/administration-guide/comply/export-mattermost-channel-data) - [Enhanced compliance controls and granular audit logs with data export](/administration-guide/manage/logging#audit-logging). - [Advanced collaboration with connected workspaces across Mattermost instances](/administration-guide/onboard/connected-workspaces). -- [High availability support with multi-node database deployment](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment). -- [Horizontal scaling through cluster-based deployment](/deployment-guide/reference-architecture/scale/scaling-for-enterprise). +- [High availability support with multi-node database deployment](/deployment-guide/server/high-availability-cluster-based-deployment). +- [Horizontal scaling through cluster-based deployment](/deployment-guide/scale/scaling-for-enterprise). - [Advanced performance monitoring](/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring). - [Server health checks](/administration-guide/manage/request-server-health-check). - [Eligibility for Premier Support add-on](https://mattermost.com/support/). diff --git a/docs/main/product-overview/faq-enterprise.mdx b/docs/main/product-overview/faq-enterprise.mdx index 6111b5575484..1399a0412155 100644 --- a/docs/main/product-overview/faq-enterprise.mdx +++ b/docs/main/product-overview/faq-enterprise.mdx @@ -1,5 +1,6 @@ --- title: "Enterprise Edition" +sidebar_label: "Enterprise" --- ## What is Mattermost Enterprise Edition? @@ -66,7 +67,7 @@ Growing your Mattermost installation from supporting a team to supporting an ent **Functional Scaling:** Scaling from a team to an enterprise is like going from a "virtual office" to a "virtual campus". Advanced features like enterprise authentication, granular permissions, compliance and auditing, and advanced reporting become increasingly important as organizations grow beyond teams. Organizations needing this flexibility can easily upgrade from Mattermost Team Edition to Mattermost Enterprise Edition as well as downgrade without data loss, should their needs change. -For more information on how Mattermost scales, technically, and functionally, talk to a [Mattermost Expert](https://mattermost.com/contact-sales/), and [read about scaling for Enterprise](/deployment-guide/reference-architecture/scale/scaling-for-enterprise). +For more information on how Mattermost scales, technically, and functionally, talk to a [Mattermost Expert](https://mattermost.com/contact-sales/), and [read about scaling for Enterprise](/deployment-guide/scale/scaling-for-enterprise). ## What does it take to manage a Mattermost deployment? diff --git a/docs/main/product-overview/faq-federal-procurement.mdx b/docs/main/product-overview/faq-federal-procurement.mdx index 81e7d4abb33f..3b20e0fe3ecc 100644 --- a/docs/main/product-overview/faq-federal-procurement.mdx +++ b/docs/main/product-overview/faq-federal-procurement.mdx @@ -1,5 +1,6 @@ --- title: "U.S. Federal Procurement FAQ" +sidebar_label: "Federal Procurement" --- ## Is Mattermost FedRAMP authorized (High or Moderate)? @@ -27,7 +28,7 @@ Yes. Mattermost supports configurable retention policies, audit logs, legal hold ## Do you support air-gapped or self-hosted deployments? -Yes. Mattermost can be deployed on-premises, in private clouds, or air-gapped networks, ensuring data sovereignty and control. See the [server deployment planning](/deployment-guide/server/server-deployment-planning) guide for more information. +Yes. Mattermost can be deployed on-premises, in private clouds, or air-gapped networks, ensuring data sovereignty and control. See the [Deployment Guide](/deployment-guide/deployment-guide-index) for more information. ## Is CAC/SAML/LDAP integration available? diff --git a/docs/main/product-overview/faq-general.mdx b/docs/main/product-overview/faq-general.mdx index 7418e3cab89f..dc25b89ec36f 100644 --- a/docs/main/product-overview/faq-general.mdx +++ b/docs/main/product-overview/faq-general.mdx @@ -1,5 +1,6 @@ --- title: "General Mattermost" +sidebar_label: "General" --- ## Why was Mattermost created? diff --git a/docs/main/product-overview/faq-mattermost-source-available-license.mdx b/docs/main/product-overview/faq-mattermost-source-available-license.mdx index 9cc4cd60b399..0aac230653e1 100644 --- a/docs/main/product-overview/faq-mattermost-source-available-license.mdx +++ b/docs/main/product-overview/faq-mattermost-source-available-license.mdx @@ -1,5 +1,6 @@ --- title: "Mattermost Source Available License" +sidebar_label: "Source Available License" --- ## What is the Mattermost Source Available License? diff --git a/docs/main/product-overview/mattermost-v11-changelog.mdx b/docs/main/product-overview/mattermost-v11-changelog.mdx index 412bc6781db6..209dc16b8771 100644 --- a/docs/main/product-overview/mattermost-v11-changelog.mdx +++ b/docs/main/product-overview/mattermost-v11-changelog.mdx @@ -323,7 +323,7 @@ See [this blog post](https://mattermost.com/blog/mattermost-v11-9-is-now-availab - Removed legacy interactive dialog code path on webapp. - Added a channel-guard enforcement for scheduled posts and drafts. - Added Phase 2, 3, 4, 5, 8b, 8c, 8d, 8e, 8f, 8h, 12, and 12e of the ``mbe-tech-preview``. - - Added a ``mattermost db ping`` [subcommand](https://docs.mattermost.com/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment.html) that waits for the database to become reachable, with configurable ``--timeout`` and ``--retry-interval`` flags. + - Added a ``mattermost db ping`` [subcommand](https://docs.mattermost.com/deployment-guide/deployment-scenarios/air-gapped-deployment.html) that waits for the database to become reachable, with configurable ``--timeout`` and ``--retry-interval`` flags. - Added a new "rank" [custom profile attribute](https://docs.mattermost.com/administration-guide/manage/admin/abac-system-wide-policies.html#define-access-control-policies) type whose options carry an explicit ordering. System Admins can create and manage ranked attributes in the **System Console** and assign ranked values to users, enabling attribute-based access control policies that compare clearance- or classification-style attributes with ordinal operators (for example, "is at least Secret") instead of enumerating every qualifying value. - Added a new ``ClusterReliableFallbackLength`` [metric](https://docs.mattermost.com/administration-guide/scale/performance-monitoring-metrics.html) with the total length in bytes of the ``SendBestEffort`` calls (UDP) that had to fallback to TCP because of the message length. - Made ``SendBestEffort`` cluster messages fall back to using TCP when their length is larger than a UDP datagram. @@ -1662,7 +1662,7 @@ See [this blog post](https://mattermost.com/blog/mattermost-v11-1-is-now-availab - The ``TeamSettings.ExperimentalViewArchivedChannels`` setting has been deprecated. Archived channels will always be accessible, subject to normal channel membership. The server will fail to start if this setting is set to ``false``. To deny access to archived channels, mark them as private and remove affected channel members. See more details in [this forum post](https://forum.mattermost.com/t/viewing-accessing-archived-channels-v11/22626). - Playbooks has been deprecated from Team Edition. Entry, Professional, Enterprise, and Enterprise Advanced plans are automatically upgraded to Playbooks v2 with no expected downtime. See more details in [this forum post](https://forum.mattermost.com/t/clarification-and-update-on-the-playbooks-plugin-v11/25192). - Experimental Bleve Search functionality has been retired. If Bleve is enabled, search will not work until ``DisableDatabaseSearch`` is set to ``false``. See more details in [this forum post](https://forum.mattermost.com/t/transitioning-from-bleve-search-in-mattermost-v11/22982). - - Support for MySQL has ended. Our [Migration Guide](https://docs.mattermost.com/deployment-guide/postgres-migration.html) outlines the steps, tools and support available for migrating to PostgreSQL. See more details in [this forum post](https://forum.mattermost.com/t/transition-to-postgresql/19551). + - Support for MySQL has ended. Our [Migration Guide](https://docs.mattermost.com/administration-guide/manage/admin/postgres-migration.html) outlines the steps, tools and support available for migrating to PostgreSQL. See more details in [this forum post](https://forum.mattermost.com/t/transition-to-postgresql/19551). - The ``registerPostDropdownMenuComponent`` hook in the web app’s plugin API has been removed in favour of ``registerPostDropdownMenuAction``. See more details in [this forum post](https://forum.mattermost.com/t/deprecating-a-post-dropdown-menu-component-plugin-api-v11/25001). - The web app is no longer exposing the [Styled Components](https://styled-components.com/) dependency for use by web app plugins. See more details in [this forum post](https://forum.mattermost.com/t/removing-styled-components-export-for-web-app-plugins-v11/25002). - Omnibus support has been deprecated. The last ``mattermost-omnibus`` release was v10.12. See more details in [this forum post](https://forum.mattermost.com/t/mattermost-omnibus-to-reach-end-of-life-v11/25175). diff --git a/docs/main/product-overview/plans.mdx b/docs/main/product-overview/plans.mdx index 64ca379f26a2..4ae64325a75a 100644 --- a/docs/main/product-overview/plans.mdx +++ b/docs/main/product-overview/plans.mdx @@ -332,7 +332,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; IncludedIncludedv10.9+ - Air-gapped deployment workflows: Specialized deployment workflows and procedures for completely disconnected and air-gapped environments with no external network connectivity. + Air-gapped deployment workflows: Specialized deployment workflows and procedures for completely disconnected and air-gapped environments with no external network connectivity. IncludedIncludedv10.9+ @@ -370,7 +370,7 @@ See a [complete list of features](https://mattermost.com/pricing) on the Matterm -Mattermost Enterprise Advanced requires a Mattermost Server running v10.9 or later and a PostgreSQL database. Enterprise plugins must be updated to support the new license (most of which are pre-packaged from v10.9). +Mattermost Enterprise Advanced requires a Mattermost Server running v10.9 or later and a PostgreSQL database. Enterprise plugins must be updated to support the new license (most of which are pre-packaged from v10.9). diff --git a/docs/main/security-guide/cmmc-compliance.mdx b/docs/main/security-guide/cmmc-compliance.mdx index 5f39c55844de..2aed3dd95172 100644 --- a/docs/main/security-guide/cmmc-compliance.mdx +++ b/docs/main/security-guide/cmmc-compliance.mdx @@ -53,7 +53,7 @@ Under CMMC Level 2, companies must establish and maintain an effective Incident [Incident Playbooks](/end-user-guide/workflow-automation/learn-about-playbooks): Collaborative workflows managed through Mattermost Playbooks allow teams to codify their incident response plans and checklists directly in the platform. For example, you can create a playbook for “Cyber Incident Response” that automatically spins up a dedicated incident channel, assigns tasks to responders, notifies stakeholders, and tracks investigation steps when an incident is declared. This ensures a standardized response process, fulfilling the requirement to establish an operational incident-handling capability (IR 3.6.1) with defined preparation, detection, containment, and recovery steps. -**Dedicated Incident Channels**: Mattermost enables the creation of [private, invite-only channels](/end-user-guide/collaborate/channel-types#private-channels) for incident responders. During an incident (e.g. a network breach or system outage), teams can coordinate in a secure Mattermost channel that is isolated from potentially compromised systems. Mattermost’s self-hosted or air-gapped deployment options allow it to serve as an [out-of-band communication](/deployment-guide/reference-architecture/deployment-scenarios/deploy-oob)) platform if primary systems or networks are affected. This approach helps contain incidents by preventing adversaries from monitoring or disrupting incident comms, and supports IR 3.6.1’s requirement for effective coordination during an incident. +**Dedicated Incident Channels**: Mattermost enables the creation of [private, invite-only channels](/end-user-guide/collaborate/channel-types#private-channels) for incident responders. During an incident (e.g. a network breach or system outage), teams can coordinate in a secure Mattermost channel that is isolated from potentially compromised systems. Mattermost’s self-hosted or air-gapped deployment options allow it to serve as an [out-of-band communication](/deployment-guide/deployment-scenarios/deploy-oob) platform if primary systems or networks are affected. This approach helps contain incidents by preventing adversaries from monitoring or disrupting incident comms, and supports IR 3.6.1’s requirement for effective coordination during an incident. **Real-Time Notifications and Integrations**: Mattermost can integrate with monitoring tools and security systems to streamline detection and response. For instance, a SIEM or IDS can post an alert to a Mattermost channel (via webhooks or integrations) to notify the team of a potential incident. Mattermost [Playbooks](/end-user-guide/workflow-automation/learn-about-playbooks) support [automated incident notifications](/end-user-guide/workflow-automation/notifications-and-updates) – triggering alerts to responders when certain conditions are met. This real-time alerting and centralization of incident communication assists with prompt detection and reporting of incidents (IR 3.6.2). Team members can discuss and analyze the threat in Mattermost, accelerating triage. @@ -73,7 +73,7 @@ CMMC Level 2 includes controls to safeguard information during storage and trans **Network Access Control and Segmentation**: Mattermost can be deployed in a manner that controls network access to the system. In self-hosted deployments, organizations often place Mattermost servers in a secure enclave or DMZ with firewalls controlling ingress/egress. For cloud deployments, Mattermost Cloud offers [IP allowlisting](/administration-guide/manage/cloud-ip-filtering) (Enterprise plan) to restrict access to known IP ranges. These configurations address SC 3.13.1 and SC 3.13.2 by allowing Mattermost to reside within a protected network segment and ensuring only trusted networks or VPN users can reach it. Additionally, within Mattermost, data is segmented by [Teams](/end-user-guide/collaborate/organize-using-teams) and [Channels](/end-user-guide/collaborate/channel-types) – you can create separate teams for different projects or clearance levels, and mark channels as private to restrict membership. This “micro-segmentation” of conversations ensures that sensitive discussions (e.g. about a specific CUI program) are isolated to authorized individuals, reducing inadvertent information exposure. -[Self-Hosted](/deployment-guide/server/server-deployment-planning#deployment-options) and [Air-Gapped Deployment](/deployment-guide/deployment-guide-index): Unlike many collaboration tools, Mattermost can be fully self-hosted on-premises or in a sovereign cloud, giving organizations complete control over data locality. DoD contractors can [deploy Mattermost in an air-gapped environment](/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment) with no outside internet connectivity if required. This supports compliance when handling CUI that cannot be exposed to external systems. By keeping Mattermost within the same secured IT boundary as other CUI systems, contractors address concerns of SC 3.13.5 (isolate system components from external access). Mattermost’s deployment flexibility (on-prem, GovCloud, etc.) allows alignment with DoD requirements (e.g. hosting at IL4/IL5 for sensitive data, if using cloud infrastructure). All user data resides in the infrastructure you control, aiding data sovereignty and compliance with any [FedRAMP](https://www.fedramp.gov/) or [ITAR](https://www.pmddtc.state.gov/ddtc_public/ddtc_public?id=ddtc_public_portal_itar_landing) restrictions that may apply in addition to CMMC. +[Self-Hosted](/deployment-guide/server/deploy-server#deployment-options) and [Air-Gapped Deployment](/deployment-guide/deployment-guide-index): Unlike many collaboration tools, Mattermost can be fully self-hosted on-premises or in a sovereign cloud, giving organizations complete control over data locality. DoD contractors can [deploy Mattermost in an air-gapped environment](/deployment-guide/deployment-scenarios/air-gapped-deployment) with no outside internet connectivity if required. This supports compliance when handling CUI that cannot be exposed to external systems. By keeping Mattermost within the same secured IT boundary as other CUI systems, contractors address concerns of SC 3.13.5 (isolate system components from external access). Mattermost’s deployment flexibility (on-prem, GovCloud, etc.) allows alignment with DoD requirements (e.g. hosting at IL4/IL5 for sensitive data, if using cloud infrastructure). All user data resides in the infrastructure you control, aiding data sovereignty and compliance with any [FedRAMP](https://www.fedramp.gov/) or [ITAR](https://www.pmddtc.state.gov/ddtc_public/ddtc_public?id=ddtc_public_portal_itar_landing) restrictions that may apply in addition to CMMC. **Data Loss Prevention Measures**: While Mattermost does not natively include a full DLP suite, administrators can enforce certain restrictions to prevent unauthorized sharing or retention of data. For example, [public link sharing](/administration-guide/configure/site-configuration-settings#public-links) (for files) can be disabled or restricted, ensuring that shared files are not exposed to untrusted users. [File Upload Settings](/administration-guide/configure/site-configuration-settings#file-sharing-and-downloads) and [Plugin Whitelisting](/administration-guide/configure/plugins-configuration-settings#enable-remote-marketplace) allow you to control what types of files can be shared or which integrations are allowed, supporting SC 3.13.4 (control of information flows). Additionally, the [Push Notification contents](/administration-guide/configure/site-configuration-settings#push-notification-contents) can be configured to omit message text, so that if mobile push notifications are used, they do not leak sensitive message content to device lock screens or external services. For more advanced DLP, Mattermost’s open [APIs](https://developers.mattermost.com/api-documentation/) and [webhooks](https://developers.mattermost.com/integrate/webhooks/) enable integration with external DLP solutions or content filtering systems (e.g. a script could detect and remove messages containing certain keywords or PII). These measures help fulfill AC 3.1.3 / SC 3.13.4 by controlling the flow of CUI and preventing it from leaving authorized channels. diff --git a/docs/main/security-guide/compliance-frameworks/disa-stig.mdx b/docs/main/security-guide/compliance-frameworks/disa-stig.mdx deleted file mode 100644 index 9fa7bd899d72..000000000000 --- a/docs/main/security-guide/compliance-frameworks/disa-stig.mdx +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: "DISA STIG" -sidebar_label: "DISA STIG" -description: Mattermost's posture against the DISA Security Technical Implementation Guide (STIG) and Security Requirements Guide (SRG) hardening framework. ---- - - - - - - -# DISA STIG - -This page documents Mattermost's posture against the DISA Security Technical Implementation Guides (STIG) and the underlying Security Requirements Guides (SRG) — the hardening framework DoD and federal civilian customers use to validate that a product is configured to known-secure defaults. - -:::important[Status] -Current status is **Roadmap** — see the `` badge above. Mattermost does not publish a dedicated Mattermost STIG today. The applicable framework for Mattermost configuration is the **Application Server SRG** and **Application Security and Development SRG**, with operating system hardening covered by the OS-specific STIG (RHEL 9, Ubuntu 22.04 LTS, Windows Server, etc.). - -This page documents the gap honestly: which SRG requirements are met by Mattermost's default and recommended configuration today, which require explicit customer configuration, and what's not addressed. -::: - -## Applicable STIGs and SRGs for a Mattermost deployment - -A Mattermost deployment crosses multiple STIG/SRG boundaries. The customer's authorization package typically references all of: - -| Layer | Document | Source | -|---|---|---| -| Operating system | RHEL 9 STIG / Ubuntu 22.04 LTS STIG / Windows Server STIG | [DISA STIG library](https://public.cyber.mil/stigs/downloads/) | -| Database | PostgreSQL 13+ STIG | [DISA STIG library](https://public.cyber.mil/stigs/downloads/) | -| Reverse proxy | NGINX is covered by the Web Server SRG (no NGINX-specific STIG) | DISA SRG library | -| Application server | Application Server SRG | DISA SRG library | -| Application | Application Security and Development SRG | DISA SRG library | -| Container runtime (if used) | Container Image SRG, Kubernetes STIG | DISA STIG library | - -Mattermost's contribution is the configuration at the application + application-server tiers. OS, database, and proxy layers are customer-hardened per their respective STIGs. - -## Application Security and Development SRG mapping - -The Application Security and Development SRG defines ~280 requirements. The summary below groups them by control family and identifies Mattermost's coverage. Full per-requirement mapping is a roadmap item. - -### Access Control (AC) — Application Security and Development SRG - -| Requirement category | Mattermost configuration | -|---|---| -| SRG-APP-000033 — Application authentication | SAML 2.0, OIDC, AD/LDAP; PIV/CAC via IdP. See [Onboard Users](../../administration-guide/onboard/sso-saml). | -| SRG-APP-000038 — Application access enforcement | RBAC (System / Team / Channel) + ABAC (Enterprise Advanced). See [Manage Permissions](../../administration-guide/manage/admin/user-management). | -| SRG-APP-000068 — Account lockout after unsuccessful login attempts | `ServiceSettings.MaximumLoginAttempts` config setting. | -| SRG-APP-000133 — Session timeout | `ServiceSettings.SessionLengthWebInHours` config setting. | -| SRG-APP-000148 — Multi-factor authentication enforcement | Enforced via the IdP. | -| SRG-APP-000164 — Account inactivity disabling | Customer-managed via the IdP. | - -### Audit and Accountability (AU) - -| Requirement category | Mattermost configuration | -|---|---| -| SRG-APP-000091 — Audit record generation | JSON audit log emitted by default. See [Comply](../../administration-guide/comply/compliance-export). | -| SRG-APP-000095 — Audit record content (who, what, when, where, source) | Audit log schema includes timestamp, user, action, resource, source IP, session ID. See Audit Log Reference (Phase 2). | -| SRG-APP-000099 — Audit record review and analysis | Customer-managed SIEM integration. | -| SRG-APP-000118 — Audit log capacity and overflow handling | Customer-managed at the SIEM tier; Mattermost emits to local files or remote endpoints. | -| SRG-APP-000119 — Audit log integrity protection | Customer-managed at the SIEM tier; Mattermost does not sign audit entries at emission today. | - -### Identification and Authentication (IA) - -| Requirement category | Mattermost configuration | -|---|---| -| SRG-APP-000148 — User identity assurance | SAML federation to a STIG-compliant IdP. | -| SRG-APP-000164 — Account management | Provisioning via SCIM (Enterprise Advanced) + IdP-driven onboarding. | -| SRG-APP-000172 — Cryptographic identity protection | FIPS 140-3 validated module — deploy using the FIPS-compliant container image. See [FIPS / STIG container builds](../../deployment-guide/server/containers/fips-stig). | -| SRG-APP-000516 — Replay-resistant authentication | SAML with signed assertions + short-lived session tokens. | - -### System and Communications Protection (SC) - -| Requirement category | Mattermost configuration | -|---|---| -| SRG-APP-000014 — Cryptographic protection of transmitted information | TLS 1.2+ enforced. See [Transport Encryption](../../deployment-guide/transport-encryption). | -| SRG-APP-000142 — Network access by default deny | NGINX-level configuration + System Console IP filtering (Cloud). | -| SRG-APP-000231 — Protection of information at rest | Database-tier + file-storage-tier encryption. See [Encryption Options](../../deployment-guide/encryption-options). | -| SRG-APP-000439 — Mobile device protection | EMM/MAM integration (Intune, etc.). See [Mobile Security](../mobile-security). | - -### Configuration Management (CM) - -| Requirement category | Mattermost configuration | -|---|---| -| SRG-APP-000033 — Configuration baseline | `config.json` version-controlled by customer + Mattermost Operator CRDs for Kubernetes. | -| SRG-APP-000516 — Removal of unsupported components | Disable unused plugins, integrations, and features. See [Disable Phone-Home Features](../../deployment-guide/air-gapped-operations/disable-phone-home-features). | - -### System and Information Integrity (SI) - -| Requirement category | Mattermost configuration | -|---|---| -| SRG-APP-000274 — Software integrity verification | Mattermost releases are PGP-signed; verify before install. | -| SRG-APP-000345 — Boundary protection (image proxy) | Image proxy disabled in air-gapped mode. See [Disable Phone-Home Features](../../deployment-guide/air-gapped-operations/disable-phone-home-features). | -| SRG-APP-000456 — Flaw remediation cadence | Mattermost ESR cadence and security advisory feed — see [Release Policy](../../product-overview/release-policy). | - -## Roadmap items - -The following are not yet supported in product or documentation: - -- **Mattermost-specific STIG checklist** — a `.ckl`-format STIG checklist file mapping each SRG requirement to a Mattermost-specific finding. Roadmap. -- **Pre-hardened reference deployment** — an Ansible / Terraform module that applies the STIG-aligned configuration as a single deployable unit. Roadmap. -- **Audit log signing at emission** — cryptographic signing of audit log entries inside Mattermost (currently relies on the SIEM tier for tamper-evidence). Roadmap. -- **Automated SCAP scanning support** — emitting machine-readable configuration state for SCAP scanner ingestion. Not on roadmap. - -## Hardening checklist (interim) - -While the full STIG checklist is on the roadmap, customers can begin hardening today by: - -1. **Apply OS STIG** for the host OS (RHEL 9 / Ubuntu 22.04 / Windows Server). -2. **Apply PostgreSQL STIG** for the database tier. -3. **Apply Web Server SRG** to the NGINX reverse proxy. -4. **Deploy using the FIPS-compliant container image** — see [FIPS / STIG container builds](../../deployment-guide/server/containers/fips-stig). -5. **Disable internet-dependent features** — see [Configure for Air-Gapped Operation](../../deployment-guide/air-gapped-operations/disable-phone-home-features). -6. **Configure audit log export** to a STIG-compliant SIEM. -7. **Configure IdP-side** policies for MFA, PIV/CAC, session lifetime, account lockout. - -## Customer responsibility - -DISA STIG compliance is **deployment-specific and customer-led**. Mattermost provides: - -- Default configurations aligned with SRG requirements where Mattermost owns the control. -- This mapping document for the controls Mattermost contributes to. -- Documented configuration guidance for the [DoD IL4 / IL5](./dod-il-4-5) baseline, which shares many SRG requirements. - -Customers are responsible for OS-tier, database-tier, proxy-tier, and CAP-tier hardening, plus the assessment + authorization process. - -## References - -- [DISA STIG library](https://public.cyber.mil/stigs/downloads/) — canonical source. -- [Application Security and Development SRG](https://public.cyber.mil/stigs/srg-stig-tools/) — the primary applicable SRG. -- [DoD IL4 / IL5](./dod-il-4-5) — companion compliance page; STIG and IL4/IL5 are typically pursued together. diff --git a/docs/main/security-guide/compliance-frameworks/dod-il-4-5.mdx b/docs/main/security-guide/compliance-frameworks/dod-il-4-5.mdx deleted file mode 100644 index 1acddacb7692..000000000000 --- a/docs/main/security-guide/compliance-frameworks/dod-il-4-5.mdx +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: "DoD Impact Level 4 / Impact Level 5" -sidebar_label: "DoD IL4 / IL5" -description: Mattermost's posture against the DoD Cloud Computing Security Requirements Guide (CC SRG) Impact Level 4 and Impact Level 5 baselines. ---- - - - - - - -# DoD Impact Level 4 / Impact Level 5 - -This page documents Mattermost's posture against the DoD Cloud Computing Security Requirements Guide (CC SRG) Impact Level (IL) 4 and Impact Level 5 baselines. IL4 covers Controlled Unclassified Information (CUI) including export-controlled and mission-critical data. IL5 covers National Security Systems data and unclassified information requiring a higher level of protection than IL4. - -:::important Status -Current status is **Roadmap** — see the `` badge above. This page documents the gap honestly: what controls are met today, what additional controls IL4/IL5 require, and the customer's role in deploying Mattermost inside an authorized boundary. -::: - -## Authorization landscape - -| Level | Data classification | Network | Mattermost availability | -|---|---|---|---| -| **IL2** | Non-controlled, non-CUI | Internet-accessible | Standard Mattermost Cloud is suitable; no special configuration required. | -| **IL4** | CUI (including export-controlled, PHI, FOUO) | DISA NIPRNet boundary (CAP) | Self-Hosted Enterprise on AWS GovCloud (US) or Azure Government, customer-managed authorization boundary. | -| **IL5** | National Security Systems, mission-critical | DISA NIPRNet (dedicated) | Self-Hosted Enterprise on AWS GovCloud (US) or Azure Government, dedicated single-tenant infrastructure, US-citizen-only operational support, customer-managed authorization boundary. | -| **IL6** | Classified up to Secret | SIPRNet | Self-Hosted Enterprise in customer-managed enclave (out of scope for this page — see [Air-Gapped Operations](../../deployment-guide/air-gapped-operations/)). | - -## Baseline mapping - -The CC SRG explicitly maps DoD impact levels to NIST 800-53 baselines: - -- **IL4** ≈ FedRAMP Moderate + DoD-specific overlays. -- **IL5** ≈ FedRAMP High + DoD-specific overlays, with the additional dedicated-infrastructure and US-person operational support requirements. - -## Additional controls beyond FedRAMP Moderate - -### Cryptography - -| Requirement | Mattermost support | -|---|---| -| FIPS 140-3 validated cryptographic modules in all data paths | Deploy using the FIPS-compliant container image. See [FIPS / STIG container builds](../../deployment-guide/server/containers/fips-stig). | -| TLS 1.2+ exclusively; no TLS 1.0 / 1.1 | Configure in NGINX / reverse proxy per [Setup TLS](../../deployment-guide/server/setup-tls). | -| Data-at-rest encryption | See [Encryption Options](../../deployment-guide/encryption-options). | -| Key management aligned with NIST 800-57 | Customer-managed via HSM, AWS KMS, Azure Key Vault, or equivalent. | - -### Network boundary (Cloud Access Point — CAP) - -IL4 / IL5 require traffic to traverse a DISA CAP. Mattermost does not provide the CAP; customers deploy Mattermost behind their authorized CAP. - -- All inbound user traffic terminates at the CAP, not at the Mattermost reverse proxy. -- Outbound integrations (webhooks, push proxy egress, plugin marketplace) must be either disabled or routed through the CAP. Use [Disable Phone-Home Features](../../deployment-guide/air-gapped-operations/disable-phone-home-features) as the inventory of outbound calls. - -### Audit and logging - -| Requirement | Mattermost support | -|---|---| -| Audit log immutability and retention ≥ 1 year (IL4) / ≥ 3 years (IL5) | JSON audit log + customer-managed SIEM export. Configure retention at the SIEM and the storage tier. | -| Audit log content includes all NIST 800-53 AU-3 fields | Documented in Audit Log Reference (Phase 2). | -| Real-time audit log monitoring | Customer-managed via SIEM integration (Splunk, ELK, OpenSearch, etc.). | -| Tamper-evident audit log integrity controls | Customer-managed at the SIEM tier; Mattermost does not sign audit log entries at emission. | - -### Authentication and identity - -| Requirement | Mattermost support | -|---|---| -| PIV / CAC smart-card authentication | Supported via SAML federation with a customer-managed IdP that supports CAC (Entra ID + ADFS with CAC, Okta with CAC, etc.). | -| Multi-factor authentication for all users | Enforced via the IdP. Mattermost honors the IdP's MFA assertion. | -| Account inactivity lockout | Configured via the IdP. | -| Privileged account separation | Custom roles + ABAC (Enterprise Advanced). | - -### Personnel - -**IL5 specifically**: Operational support personnel with access to Mattermost infrastructure must be US citizens. Mattermost provides Enterprise support tiers; for IL5 deployments, customers either: - -- Self-operate Mattermost (most common — Mattermost is self-hosted) and use Mattermost commercial support for product issues only, not for direct production access. -- Engage Mattermost professional services for a US-person-only engagement (contact Mattermost sales). - -### Dedicated infrastructure (IL5 only) - -IL5 requires dedicated, non-shared infrastructure. Mattermost Cloud (multi-tenant) is not suitable for IL5. Self-Hosted on customer-dedicated infrastructure (AWS GovCloud single-tenant, Azure Government single-tenant, or on-premises) is the supported path. - -## Required configuration summary - -A Mattermost deployment aligned with IL4 / IL5 requires, at minimum: - -1. **Deployed using the FIPS-compliant container image** — see [FIPS / STIG container builds](../../deployment-guide/server/containers/fips-stig). -2. **TLS 1.2+ exclusively** with FIPS-approved cipher suites. -3. **Audit log retention ≥ 1 year (IL4) / ≥ 3 years (IL5)** via customer SIEM. -4. **PIV / CAC authentication** via SAML federation to a customer-managed IdP. -5. **CAP-fronted network boundary** — Mattermost behind, not in front of, the CAP. -6. **Phone-home features disabled** — see [Disable Phone-Home Features](../../deployment-guide/air-gapped-operations/disable-phone-home-features). -7. **Dedicated infrastructure (IL5 only)** — single-tenant AWS GovCloud / Azure Government / on-prem. -8. **US-person operational support (IL5 only)** — customer-controlled. - -## Customer responsibility - -DoD IL authorizations are **customer-led**. Mattermost provides the validated configuration and feature support documented on this page; customers are responsible for: - -- The authorization package (SSP, POA&M, ATO memo). -- Sponsorship by a DoD organization. -- Pen-testing within the authorization boundary. -- Continuous monitoring per the CC SRG. - -Mattermost will provide attestation letters, FIPS certificates, and configuration evidence to support a customer's authorization package on request via [https://mattermost.com/trust/](https://mattermost.com/trust/). - -## References - -- [DoD Cloud Computing Security Requirements Guide](https://public.cyber.mil/dccs/dccs-documents/) — the canonical CC SRG. -- [NIST SP 800-53 Rev. 5](https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final) — the underlying control catalog. -- [Mattermost Trust Portal](https://mattermost.com/trust/) — current attestation status and supporting evidence. diff --git a/docs/main/security-guide/compliance-frameworks/index.mdx b/docs/main/security-guide/compliance-frameworks/index.mdx deleted file mode 100644 index 60ca4eba51c3..000000000000 --- a/docs/main/security-guide/compliance-frameworks/index.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Compliance Frameworks -sidebar_position: 1 -description: Mattermost's posture and configuration guidance for FedRAMP, DoD IL, DISA STIG, FIPS, HIPAA, FINRA, CMMC, and related regulatory frameworks. ---- - -# Compliance Frameworks - -This section is the canonical home for **framework-specific** compliance documentation: FedRAMP, DoD IL4/IL5, DISA STIG, FIPS, HIPAA, FINRA, CMMC, and others. Each page below documents Mattermost's authorization posture, the configuration required to align with the framework, and (where applicable) the mapping from framework controls to specific Mattermost features and settings. - -:::note[Operational vs. framework content] -Compliance is documented in two places by design: -- **Frameworks** (here): authorization status, control mappings, configuration guidance. Target persona: **Security Architect / Accreditor** and **Compliance Officer**. -- **Operational machinery** ([Administration Guide → Comply](/administration-guide/comply/compliance-export)): step-by-step procedures for running compliance exports, eDiscovery searches, Legal Hold, data retention. Target persona: **Administrator** and **Compliance Officer**. - -Cross-link both ways when adding new content. -::: - -## Pages - -- [DoD IL4 / IL5](/security-guide/compliance-frameworks/dod-il-4-5) — Posture against DoD Cloud Computing Security Requirements Guide Impact Levels 4 and 5. -- [DISA STIG](/security-guide/compliance-frameworks/disa-stig) — Posture against the Application Security and Development SRG and applicable STIG layers. -- [CMMC Compliance](/security-guide/cmmc-compliance) — preserved at parent level pending Phase 2 re-organization. -- [HIPAA Compliance](/security-guide/hipaa-compliance) — preserved at parent level pending Phase 2 re-organization. -- [FINRA Compliance](/security-guide/finra-compliance) — preserved at parent level pending Phase 2 re-organization. - -## How this section is organized - -Each framework page leads with an `` badge stating Mattermost's current authorization posture (Authorized / In Process / Roadmap / Not Pursued). Pages with "In Process" or "Roadmap" status document the **gap honestly** — what controls are met today, what's not, and the expected timeline. - -For legally citable attestation letters, see the [Mattermost Trust Portal](https://mattermost.com/trust/) (external). The pages in this section describe **configuration and control mappings** — they do not substitute for the formal attestation artifacts. diff --git a/docs/main/security-guide/dependency-vulnerability-analysis.mdx b/docs/main/security-guide/dependency-vulnerability-analysis.mdx deleted file mode 100644 index e6cc1289d313..000000000000 --- a/docs/main/security-guide/dependency-vulnerability-analysis.mdx +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: "Dependency Vulnerability Analysis" ---- -This document provides context on why certain third-party dependencies in Mattermost, although flagged as vulnerable by security scanners, do not pose a risk in Mattermost deployments. - -This analysis is regularly updated as new vulnerability reports are received and evaluated. - -## Overview - -Mattermost regularly scans its dependencies for known vulnerabilities. Some dependencies may be flagged as vulnerable by security scanners, but these vulnerabilities might not be applicable to Mattermost due to: - -- How the dependency is used in Mattermost -- The specific version or configuration implemented -- Mitigations already in place -- False positives in the scanning process - -## Dependency Analysis Table - -Below is a list of dependencies flagged as vulnerable by security scanners for our latest release, along with the justification for why each issue is not relevant to Mattermost deployments: - - ----- - - - - - - - - - - - - - - - - - - - - - - - - -
Dependency / VersionVulnerabilityFalse Positive Justification
github.com/mattermost/ mattermost/server/v8Multiple CVE IDsMattermost uses Go module workspaces, which override go.mod dependency versions with local filesystem code at build time. The vulnerable versions are never included in final Docker images.
golang.org/x/crypto v0.44.0GHSA-f6x5-jh6r-wrfv CVE-2025-47914Mattermost doesn't utilize the vulnerable golang.org/x/crypto/ssh package. Upgrade is planned for v11.4
golang.org/x/crypto v0.44.0GGHSA-j5w8-q4qc-rx2x CVE-2025-58181Mattermost doesn't utilize the vulnerable golang.org/x/crypto/ssh package. Upgrade is planned for v11.4
diff --git a/docs/main/security-guide/security-guide-index.mdx b/docs/main/security-guide/security-guide-index.mdx index d8ae0860d26a..a2bacddc1169 100644 --- a/docs/main/security-guide/security-guide-index.mdx +++ b/docs/main/security-guide/security-guide-index.mdx @@ -21,7 +21,7 @@ We strongly recommend regularly rotating and securely storing encryption keys us ### Single Sign-On (SSO) -The mobile application integrates with Single Sign-On providers, allowing users to authenticate using their existing credentials from other trusted systems. This reduces the risk of password-related security breaches and streamlines the login process. Learn more about Mattermost [SSO](/administration-guide/manage/admin/user-provisioning). +The mobile application integrates with Single Sign-On providers, allowing users to authenticate using their existing credentials from other trusted systems. This reduces the risk of password-related security breaches and streamlines the login process. Learn more about Mattermost [SSO](/administration-guide/onboard/corporate-directory-integration). ### Multi-Factor Authentication (MFA) diff --git a/docs/main/security-guide/zero-trust.mdx b/docs/main/security-guide/zero-trust.mdx index 57c7791b0380..b307797e94f3 100644 --- a/docs/main/security-guide/zero-trust.mdx +++ b/docs/main/security-guide/zero-trust.mdx @@ -72,20 +72,20 @@ Zero Trust treats every network as hostile. Mattermost supports deployment model ### Advanced: resilient, distributed, and isolated deployment -- [High Availability Cluster-Based Deployment](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) [Enterprise] — Multiple redundant application servers, database servers, and load balancers ensure no single point of failure. Supports inter-node state synchronization and HA for WebSocket connections. -- [Horizontal Scalability Architecture](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) [Enterprise] — Stateless application nodes scale horizontally. Reference architectures support 5K, 10K, 25K, and 50K+ concurrent users. Load balancer distributes traffic across nodes transparently. +- [High Availability Cluster-Based Deployment](/deployment-guide/server/high-availability-cluster-based-deployment) [Enterprise] — Multiple redundant application servers, database servers, and load balancers ensure no single point of failure. Supports inter-node state synchronization and HA for WebSocket connections. +- [Horizontal Scalability Architecture](/deployment-guide/scale/scaling-for-enterprise) [Enterprise] — Stateless application nodes scale horizontally. Reference architectures support 5K, 10K, 25K, and 50K+ concurrent users. Load balancer distributes traffic across nodes transparently. - [Supported Kubernetes Deployment](/deployment-guide/server/deploy-kubernetes) [Enterprise] — Production deployments on EKS, AKS, GKE, and DigitalOcean Kubernetes using the Mattermost Kubernetes Operator and Helm. Enables declarative, auditable infrastructure configuration. -- [Air-Gapped & DDIL/CDO-L Environments](/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment) [Enterprise] — Offline installation packages, private container registries, and Kubernetes-based orchestration for fully disconnected or intermittent-connectivity environments. Integrates with on-premises LDAP, PostgreSQL, and Elasticsearch with no internet dependency. -- [Air-Gapped Deployment](/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment) [Enterprise] — Engineered for Amazon GovCloud, Azure Government Cloud (including IL5), and Oracle AGC. Supports classified government networks and U.S. federal defense agency requirements. -- [Offline Operation and Smart Resync](/deployment-guide/reference-architecture/deployment-scenarios/deploy-ddil-operations) [Enterprise] — Local collaboration continues when network connectivity is unavailable. All messages and updates are automatically synchronized once connectivity is restored, with zero data loss. +- [Air-Gapped & DDIL/CDO-L Environments](/deployment-guide/deployment-scenarios/air-gapped-deployment) [Enterprise] — Offline installation packages, private container registries, and Kubernetes-based orchestration for fully disconnected or intermittent-connectivity environments. Integrates with on-premises LDAP, PostgreSQL, and Elasticsearch with no internet dependency. +- [Air-Gapped Deployment](/deployment-guide/deployment-scenarios/air-gapped-deployment) [Enterprise] — Engineered for Amazon GovCloud, Azure Government Cloud (including IL5), and Oracle AGC. Supports classified government networks and U.S. federal defense agency requirements. +- [Offline Operation and Smart Resync](/deployment-guide/deployment-scenarios/deploy-ddil-operations) [Enterprise] — Local collaboration continues when network connectivity is unavailable. All messages and updates are automatically synchronized once connectivity is restored, with zero data loss. - [Shared Channels (Federated)](/administration-guide/onboard/connected-workspaces) [Enterprise] — Real-time message and file synchronization across separate Mattermost servers over HTTPS/VPN. Enables controlled inter-organizational information flow without merging identity namespaces. - [Federated Communications](/administration-guide/onboard/connected-workspaces) [Enterprise] — Cross-organizational workflows via connected workspaces and Matrix/XMPP bridge support for legacy system integration. ### Optimal: micro-segmented access with dynamic policy enforcement - [Zero Trust Channel Access](/administration-guide/manage/admin/abac-channel-access-rules) [Enterprise Advanced] — Administrators configure channel-level access policies using Common Expression Language (CEL) or a graphical interface. Access decisions evaluate credentials, clearances, device posture, network attributes, and environmental data at entry time. -- [Mission Partner Environments](/deployment-guide/reference-architecture/deployment-scenarios/deploy-mission-partner) [Enterprise Advanced] — Designed for multi-national and multi-domain operations. External partner users receive guest accounts with least-privilege access. DMZ deployment topology supports external federation with defense-in-depth architecture. -- [Ultra-High Resiliency](/deployment-guide/reference-architecture/scale/scale-to-200000-users) [Enterprise Advanced] — Supports up to 200,000 concurrent users via high-availability cluster architecture with dedicated Redis write-through caching and zero-downtime upgrades. Designed for operational continuity in DDIL and mission partner environments. +- [Mission Partner Environments](/deployment-guide/deployment-scenarios/deploy-mission-partner) [Enterprise Advanced] — Designed for multi-national and multi-domain operations. External partner users receive guest accounts with least-privilege access. DMZ deployment topology supports external federation with defense-in-depth architecture. +- [Ultra-High Resiliency](/deployment-guide/scale/scale-to-200000-users) [Enterprise Advanced] — Supports up to 200,000 concurrent users via high-availability cluster architecture with dedicated Redis write-through caching and zero-downtime upgrades. Designed for operational continuity in DDIL and mission partner environments. - [DDIL Microsoft Teams App](/integrations-guide/mattermost-mission-collaboration-for-m365) [Enterprise] — When Microsoft Teams is inaccessible in a DDIL environment, the embedded Mattermost experience within Teams and Outlook clients maintains workflow continuity independently. ## Applications and Workloads @@ -177,11 +177,11 @@ No organization starts at Optimal maturity, and no single product delivers Zero - [Set up attribute-based access controls](/administration-guide/manage/admin/attribute-based-access-control) - [Mobile security features](/deployment-guide/mobile/mobile-security-features) -- [Air-gapped deployment](/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment) +- [Air-gapped deployment](/deployment-guide/deployment-scenarios/air-gapped-deployment) - [Compliance export](/administration-guide/comply/compliance-export) - [FIPS 140-3 and encryption options](/deployment-guide/server/containers/fips-stig) - [STIG-hardened image and DoD IA standards](/deployment-guide/server/deploy-containers) -- [High availability cluster deployment](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) +- [High availability cluster deployment](/deployment-guide/server/high-availability-cluster-based-deployment) - [Sovereign AI implementation](/agents/docs/sovereign_ai) - [Content flagging and data spillage](/administration-guide/manage/admin/content-flagging) - [CMMC Compliance](/security-guide/cmmc-compliance) diff --git a/docs/main/use-case-guide/devops-collaboration.mdx b/docs/main/use-case-guide/devops-collaboration.mdx index 3fd028f39bce..53810f3c43f7 100644 --- a/docs/main/use-case-guide/devops-collaboration.mdx +++ b/docs/main/use-case-guide/devops-collaboration.mdx @@ -1,5 +1,6 @@ --- title: "Real-Time DevSecOps Collaboration" +sidebar_position: 6 --- Modern mission-driven software teams—ranging from critical infrastructure operators to government software factories—face the challenge of delivering and defending complex systems at speed. From CI/CD pipelines to incident response, secure collaboration is essential to ensure resilience, compliance, and operational success in environments where failure is not an option. @@ -29,7 +30,7 @@ Platform teams need streamlined, secure ways to deliver services and enable deve - **Centralize platform requests and updates** in [dedicated channels](/end-user-guide/collaborate/collaborate-index) that organize provisioning, support, and environment status discussions. - **Automate ticket triage and escalation workflows** using [Playbooks](/end-user-guide/workflow-automation/workflow-automation-index) to track response SLAs and ownership across platform operations. - **Monitor infrastructure health and changes** with integrated feeds from [Prometheus, Grafana](/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring), or custom observability tools—supporting faster feedback loops. -- **Support hybrid cloud and edge operations** through [deployment flexibility](/deployment-guide/server/server-deployment-planning#deployment-options) across public, private, and disconnected environments. +- **Support hybrid cloud and edge operations** through [deployment flexibility](/deployment-guide/server/deploy-server#deployment-options) across public, private, and disconnected environments. ## Secure Incident Response for Production Systems @@ -39,7 +40,7 @@ Real-time visibility and structured collaboration are critical during service de - **Automate incident handling** with [Playbooks](/end-user-guide/workflow-automation/workflow-automation-index) to track diagnostics, assign tasks, and issue updates—supporting NOC, SRE, and AppSec workflows. - **Accelerate containment and recovery** by [integrating alerting tools](/integrations-guide/integrations-guide-index#webhooks) like PagerDuty, Opsgenie, and custom webhooks into secure Mattermost channels. -- **Ensure communication continuity** during outages using [high availability architecture](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) and [support for disconnected environments](/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment). +- **Ensure communication continuity** during outages using [high availability architecture](/deployment-guide/server/high-availability-cluster-based-deployment) and [support for disconnected environments](/deployment-guide/deployment-scenarios/air-gapped-deployment). - **Enable forensic review and audit** with [logging and export capabilities](/administration-guide/manage/logging#audit-logging) that preserve all incident-related communications. ## Policy-Driven Collaboration in Regulated Environments @@ -51,7 +52,7 @@ Critical infrastructure DevSecOps must align with strict security, audit, and co - **Apply granular role-based access controls** using [advanced permissions](/administration-guide/onboard/advanced-permissions) and [channel-specific configurations](/administration-guide/manage/team-channel-members#advanced-access-controls) to protect sensitive workflows. - **Support supply chain security coordination** by using [Playbooks](/end-user-guide/workflow-automation/workflow-automation-index) to manage SBOM reviews, vendor risk analysis, and software intake workflows across internal and external teams. - **Enforce secure collaboration behavior** through [custom Terms of Service](/administration-guide/comply/custom-terms-of-service), [data retention policies](/administration-guide/comply/data-retention-policy), and user authentication tied to [SSO and Entra ID](/administration-guide/onboard/sso-entraid). -- **Deploy in line** with [Zero Trust](/security-guide/zero-trust) principles with [self-managed, segmented deployments](/deployment-guide/server/server-deployment-planning#deployment-options) that enforce identity, access, and policy boundaries—suitable for classified or sovereign cloud environments. +- **Deploy in line** with [Zero Trust](/security-guide/zero-trust) principles with [self-managed, segmented deployments](/deployment-guide/server/deploy-server#deployment-options) that enforce identity, access, and policy boundaries—suitable for classified or sovereign cloud environments. ## Get Started diff --git a/docs/main/use-case-guide/integrated-security-operations.mdx b/docs/main/use-case-guide/integrated-security-operations.mdx index 1a58074ed528..ce79cd8b2797 100644 --- a/docs/main/use-case-guide/integrated-security-operations.mdx +++ b/docs/main/use-case-guide/integrated-security-operations.mdx @@ -1,5 +1,6 @@ --- title: "Integrated Security Operations" +sidebar_position: 1 --- **Fragmented security operations create the blind spots attackers exploit. Deploy unified collaboration that coordinates your entire security ecosystem in real-time.** @@ -20,7 +21,7 @@ SOCs are the front lines of real-time monitoring, triage, and escalation. Coordi - **Accelerate triage and response workflows** with [Collaborative Playbooks](/end-user-guide/workflow-automation/workflow-automation-index) that automate escalations, task assignment, and ticket updates for consistent response execution. - **Integrate detection pipelines and observability tools** using the [Mattermost integrations platform](/integrations-guide/integrations-guide-index) to surface alerts from SIEM, SOAR, and log analysis systems into dedicated response channels. - **Maintain operational security and compliance** through [role-based permissions](/administration-guide/onboard/advanced-permissions) and [audit logging](/administration-guide/manage/logging#audit-logging) to safeguard sensitive incident data. -- **Operate in secure, classified, or hybrid environments** using Kubernetes or Linux on the infrastructure of your choice: Public cloud, organization data center, or fully air-gapped. [Explore deployment options](/deployment-guide/server/server-deployment-planning#deployment-options). +- **Operate in secure, classified, or hybrid environments** using Kubernetes or Linux on the infrastructure of your choice: Public cloud, organization data center, or fully air-gapped. [Explore deployment options](/deployment-guide/server/deploy-server#deployment-options). - **Meet regulatory compliance requirements** with a solution that adapts to your organization's security posture and regulatory requirements, incl. GDPR, FedRAMP, ISO 27001, and more. ## Computer Emergency Response Teams (CERTs) @@ -45,7 +46,7 @@ Cross-organizational threat intelligence teams,spanning sectors, regions, and pu - **Support multinational and sectoral collaboration** with [custom terms of service enforcement](/administration-guide/comply/custom-terms-of-service) and [localized UI settings](/end-user-guide/preferences/manage-your-display-options#language) for global partner access. - **Preserve operational trust and compliance** through [role-based access controls](/administration-guide/onboard/advanced-permissions) and [channel-specific permissions](/administration-guide/manage/team-channel-members#advanced-access-controls) that enforce jurisdictional and information-sharing agreements. - **Operationalize shared threat intelligence** by integrating IOCs, threat actor profiles, and shared playbooks into your Mattermost instance via the [integrations platform](/integrations-guide/integrations-guide-index). -- **Scale communication globally** with Mattermost's [high availability and horizontal scalability architecture](/deployment-guide/reference-architecture/scale/scaling-for-enterprise),supporting tens of thousands of users across enterprise, field, government, or classified environments. +- **Scale communication globally** with Mattermost's [high availability and horizontal scalability architecture](/deployment-guide/scale/scaling-for-enterprise),supporting tens of thousands of users across enterprise, field, government, or classified environments. ## Get Started diff --git a/docs/main/use-case-guide/maximize-microsoft-investments.mdx b/docs/main/use-case-guide/maximize-microsoft-investments.mdx index 1783ea3c2976..c26e59f9ed5f 100644 --- a/docs/main/use-case-guide/maximize-microsoft-investments.mdx +++ b/docs/main/use-case-guide/maximize-microsoft-investments.mdx @@ -1,5 +1,6 @@ --- title: "Maximize Your Microsoft Investments" +sidebar_position: 2 --- Unlock the full potential of your Microsoft Teams, M365, and Entra ID investment with Mattermost. Designed for operational teams that require advanced customization, secure workflows, and seamless deployment on segregated networks, Mattermost enhances your existing Microsoft solutions for critical mission success. @@ -39,7 +40,7 @@ Operational teams need to extend Microsoft capabilities to mission environments **Benefits** -- **Enable mission-critical coordination at the edge** by [deploying Mattermost in secure, on-prem or air-gapped environments](/deployment-guide/server/server-deployment-planning#deployment-options) [integrated with Microsoft Teams and Outlook](/integrations-guide/mattermost-mission-collaboration-for-m365). +- **Enable mission-critical coordination at the edge** by [deploying Mattermost in secure, on-prem or air-gapped environments](/deployment-guide/server/deploy-server#deployment-options) [integrated with Microsoft Teams and Outlook](/integrations-guide/mattermost-mission-collaboration-for-m365). - **Fuse data and decision-making across platforms** with support for [toolchain integration](/integrations-guide/integrations-guide-index), [audio/screen share](/end-user-guide/collaborate/make-calls), and [workflow automation](/end-user-guide/workflow-automation/workflow-automation-index) embedded into a dedicated Mission Operations Platform. - **Maintain coalition and partner alignment** through [interoperable Connected Workspaces](/administration-guide/onboard/connected-workspaces) supporting collaboration across mission partner networks. - **Accelerate action with mission-tuned AI** using secure Azure AI and [Mattermost Copilot](/end-user-guide/agents) to summarize context, guide decisions, and automate operational tasks. diff --git a/docs/main/use-case-guide/mission-ready-mobile.mdx b/docs/main/use-case-guide/mission-ready-mobile.mdx index aff2a40baf7a..1ebeffa5d516 100644 --- a/docs/main/use-case-guide/mission-ready-mobile.mdx +++ b/docs/main/use-case-guide/mission-ready-mobile.mdx @@ -1,5 +1,6 @@ --- title: "Mission-Ready Mobile" +sidebar_position: 3 --- Mission environments demand secure, reliable mobile collaboration, from intelligence briefings and operational coordination to incident response in disconnected regions. Traditional mobile communication tools fail to meet the demands of field-forward operations, exposing sensitive data to third-party systems, and increasing the risk of data leakage, non-compliance, and operational compromise. @@ -31,7 +32,7 @@ When personal devices are the only available channel—whether in partner nation - **Enable trusted communications on BYOD** using lightweight AppConfig policies with [EMM optionality](/deployment-guide/mobile/deploy-mobile-apps-using-emm-provider) that avoids intrusive control while ensuring essential security baselines. Pair with [Mobile Ephemeral Mode](/deployment-guide/mobile/mobile-security-features#mobile-ephemeral-mode) to enforce admin-controlled data lifecycle — automatically purging cached messages without requiring MDM connectivity. - **Prevent unauthorized data sharing**: Mitigate leakage with [screenshot and screen recording prevention](/deployment-guide/mobile/mobile-security-features#screenshot-and-screen-recording-prevention) and [jailbreak/root detection](/deployment-guide/mobile/mobile-security-features#jailbreak-and-root-detection) that block high-risk mobile behaviors. -- **Secure access without cloud dependency** via [self-hosted deployments](/deployment-guide/server/server-deployment-planning#deployment-options) or [air-gapped infrastructures](/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment) that prevent sensitive data from touching public networks. +- **Secure access without cloud dependency** via [self-hosted deployments](/deployment-guide/server/deploy-server#deployment-options) or [air-gapped infrastructures](/deployment-guide/deployment-scenarios/air-gapped-deployment) that prevent sensitive data from touching public networks. - **Deliver rapid alerts with low bandwidth impact** using [ID-only push notifications](/administration-guide/configure/push-notification-server-configuration-settings#id-only-push-notifications), ideal for DDIL (disconnected, intermittent, low-bandwidth) conditions. - **Support interagency or coalition workflows** in mission-partner environments through [Connected Workspaces](/administration-guide/onboard/connected-workspaces) with [role-based](/administration-guide/onboard/delegated-granular-administration) and [attribute-based access controls (ABAC)](/administration-guide/manage/admin/attribute-based-access-control). diff --git a/docs/main/use-case-guide/out-of-band-incident-response.mdx b/docs/main/use-case-guide/out-of-band-incident-response.mdx index cf5dfea28ccd..f5e216852188 100644 --- a/docs/main/use-case-guide/out-of-band-incident-response.mdx +++ b/docs/main/use-case-guide/out-of-band-incident-response.mdx @@ -1,5 +1,6 @@ --- title: "Out-of-Band Incident Response" +sidebar_position: 4 --- **Don't let attackers silence your incident response team. Deploy sovereign, encrypted collaboration that operates completely outside your compromised infrastructure.** @@ -17,7 +18,7 @@ Out-of-band collaboration provides a persistent, independent channel for coordin **Benefits** -- **Preserve communication during infrastructure failures** with secure, dedicated OOB deployments using Kubernetes Or Linux on the infrastructure of your choice: Public cloud, organization data center, or fully air-gapped. [Explore deployment options](/deployment-guide/server/server-deployment-planning#deployment-options). +- **Preserve communication during infrastructure failures** with secure, dedicated OOB deployments using Kubernetes Or Linux on the infrastructure of your choice: Public cloud, organization data center, or fully air-gapped. [Explore deployment options](/deployment-guide/server/deploy-server#deployment-options). - **Meet regulatory compliance requirements** with a solution that adapts to your organization's security posture and regulatory requirements, incl. GDPR, FedRAMP, ISO 27001, and more. - **Ensure data sovereignty** with flexible hosting options including EU-resident infrastructure, on-premises deployments, and air-gapped environments that maintain full control over sensitive communications. - **Maintain continuity across platforms** with [multi-device access](/deployment-guide/deployment-guide-index), including web, desktop, and mobile experiences, even when primary tools are offline. @@ -29,7 +30,7 @@ Outages and downtime threaten both productivity and revenue. In large enterprise **Benefits** -- **Scale communication globally** with Mattermost's [high availability and horizontal scalability architecture](/deployment-guide/reference-architecture/scale/scaling-for-enterprise), supporting tens of thousands of users across enterprise, field, government, or classified environments. +- **Scale communication globally** with Mattermost's [high availability and horizontal scalability architecture](/deployment-guide/scale/scaling-for-enterprise), supporting tens of thousands of users across enterprise, field, government, or classified environments. - **Accelerate outage recovery** using [Collaborative Playbooks](/end-user-guide/workflow-automation/workflow-automation-index) that automate response steps and ensure team accountability during time-critical events, reducing mean time to recovery (MTTR) by up to 50%. - **Demonstrate ROI through measurable outcomes** with built-in metrics tracking incident response times, team coordination efficiency, and compliance audit trails. diff --git a/docs/main/use-case-guide/purpose-built-collaboration.mdx b/docs/main/use-case-guide/purpose-built-collaboration.mdx index 0f64378a075e..163b8bdc802e 100644 --- a/docs/main/use-case-guide/purpose-built-collaboration.mdx +++ b/docs/main/use-case-guide/purpose-built-collaboration.mdx @@ -1,5 +1,6 @@ --- title: "Purpose-Built Collaboration" +sidebar_position: 5 --- From large-scale logistics operations to critical infrastructure defense, organizations are under pressure to act faster, with fewer resources and greater operational complexity. But legacy chat platforms and multi-purpose messaging tools can't keep pace with dynamic, high-stakes workflows. They lack the integration depth, security controls, and mission-specific configurability needed for real-time operational success. @@ -17,7 +18,7 @@ Coordinating logistics across continents, agencies, and time zones requires a se - **Enable real-time coordination** across supply chains, procurement, and field units with [channel-based messaging](/end-user-guide/collaborate/collaborate-index) and [playbook-driven workflows](/end-user-guide/workflow-automation/workflow-automation-index) that standardize communication and reduce friction. - **Connect systems across logistics networks** by integrating ERP, fleet tracking, maintenance management, and transportation tools via [webhooks, APIs, and plugins](/integrations-guide/integrations-guide-index). -- **Preserve operational continuity** during outages or disruptions using [self-hosted deployments](/deployment-guide/server/server-deployment-planning#deployment-options) and [high availability architecture](/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment) that eliminate reliance on third-party cloud services. +- **Preserve operational continuity** during outages or disruptions using [self-hosted deployments](/deployment-guide/server/deploy-server#deployment-options) and [high availability architecture](/deployment-guide/server/high-availability-cluster-based-deployment) that eliminate reliance on third-party cloud services. - **Support multilingual coordination** with [localized UI options](/end-user-guide/preferences/manage-your-display-options#language) in 20+ languages to ensure inclusive collaboration across global teams. ## Operational Technology and ICS Collaboration @@ -28,10 +29,10 @@ Mattermost enables secure collaboration across OT environments and field operati **Benefits** -- **Enable compliant, real-time OT communications** across operational zones and facilities using [secure, on-prem collaboration](/deployment-guide/server/server-deployment-planning#deployment-options) that keeps data within your control perimeter. +- **Enable compliant, real-time OT communications** across operational zones and facilities using [secure, on-prem collaboration](/deployment-guide/server/deploy-server#deployment-options) that keeps data within your control perimeter. - **Support field teams with hardened mobile access** using [EMM-based app provisioning](/deployment-guide/mobile/deploy-mobile-apps-using-emm-provider), [biometric authentication](/deployment-guide/mobile/mobile-security-features#biometric-authentication), [jailbreak detection](/deployment-guide/mobile/mobile-security-features#jailbreak-and-root-detection), and [ID-only push notifications](/administration-guide/configure/push-notification-server-configuration-settings#id-only-push-notifications)—ensuring that only authorized, uncompromised devices can access operational data. - **Integrate with industrial monitoring systems** like SCADA, PI historians, and plant analytics using [alert-driven webhook and plugin integrations](/integrations-guide/integrations-guide-index) that push system events to relevant mobile or desktop channels. -- **Ensure system and network isolation** with [air-gapped deployment support](/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment) that allows full collaboration within OT enclaves and disconnected environments. +- **Ensure system and network isolation** with [air-gapped deployment support](/deployment-guide/deployment-scenarios/air-gapped-deployment) that allows full collaboration within OT enclaves and disconnected environments. - **Prevent mobile data leakage** via [remote wipe capabilities](/security-guide/mobile-security#mobile-device-management-mdm)) and [screenshot/screen recording prevention](/deployment-guide/mobile/mobile-security-features#screenshot-and-screen-recording-prevention) for mobile devices used in the field. ## Technical Operational Command Centers diff --git a/docs/main/use-case-guide/secure-command-and-control.mdx b/docs/main/use-case-guide/secure-command-and-control.mdx index 2819fb70b96e..3b0e0d6b92f8 100644 --- a/docs/main/use-case-guide/secure-command-and-control.mdx +++ b/docs/main/use-case-guide/secure-command-and-control.mdx @@ -1,5 +1,6 @@ --- title: "Secure Command and Control" +sidebar_position: 7 --- Expanding adversarial risk across cyber and kinetic domains requires faster, more secure, and better-informed coordination across mission environments. Traditional communication systems often fall short in high-stakes operational contexts—where minutes matter, information must remain contained, and decision advantage is critical to mission success. In an age of contested networks, personal device sprawl, and fragmented toolsets, organizations need a unified, secure platform to bridge communication and coordination gaps. @@ -19,7 +20,7 @@ In high-stakes missions—including classified operations—real-time collaborat - **Integrate mission tooling and automation** via the [Mattermost integrations platform](/integrations-guide/integrations-guide-index)—connecting alerting, workflow engines, and tactical systems directly into operational channels. - **Strengthen mobile communication channels** through [enterprise mobility security](/security-guide/mobile-security) that reduce reliance on personal messaging apps, control data exposure, and ensure secure, compliant access. - **Coordinate operations with structured workflows** using [Collaborative Playbooks](/end-user-guide/workflow-automation/workflow-automation-index) that standardize task execution, streamline decision-making, and maintain continuity across teams and mission roles. -- **Deploy sovereign AI for operational intelligence** using [air-gapped and private AI operations](/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment) to power decision support and automation in disconnected or classified settings. +- **Deploy sovereign AI for operational intelligence** using [air-gapped and private AI operations](/deployment-guide/deployment-scenarios/air-gapped-deployment) to power decision support and automation in disconnected or classified settings. ## Disconnected, Intermittent, and Low-Bandwidth (DDIL) Collaboration @@ -32,7 +33,7 @@ Disconnected environments demand resilient tools that work without cloud access, - **Operate in air-gapped and disconnected networks** using [self-hosted Kubernetes deployments](/deployment-guide/server/deploy-kubernetes) and STIG-hardened container images for secure offline operations. - **Ensure secure mobile access on managed or BYOD devices** with [mobile security features](/deployment-guide/mobile/mobile-security-features), Zero Trust enforcement, and [ID-only push notifications](/administration-guide/configure/push-notification-server-configuration-settings#id-only-push-notifications) for sensitive alerts. - **Integrate with legacy and mission-specific systems** to maintain decision advantage in disconnected environments through [custom-built, self-hosted integrations](/integrations-guide/integrations-guide-index) tailored to your operational infrastructure. -- **Maintain command resilience** using [high availability cluster-based deployment](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) and [horizontal scalability](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) to support operational continuity at scale. +- **Maintain command resilience** using [high availability cluster-based deployment](/deployment-guide/server/high-availability-cluster-based-deployment) and [horizontal scalability](/deployment-guide/scale/scaling-for-enterprise) to support operational continuity at scale. - **Automate field workflows** with [Collaborative Playbooks](/end-user-guide/workflow-automation/workflow-automation-index) that track tasks, manage field updates, and orchestrate responses under DDIL constraints. - **Enable secure real-time collaboration with headquarters** using [Connected Workspaces](/administration-guide/onboard/connected-workspaces) to synchronize discussions, files, and reactions if connectivity is restored. @@ -56,7 +57,7 @@ Coordinating across departments, agencies, and external stakeholders—especiall **Benefits** -- **Unify mission stakeholders on a common-use platform** that supports [hybrid deployments](/deployment-guide/server/server-deployment-planning#deployment-options) across private cloud, edge environments, and [air-gapped infrastructure](/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment). +- **Unify mission stakeholders on a common-use platform** that supports [hybrid deployments](/deployment-guide/server/deploy-server#deployment-options) across private cloud, edge environments, and [air-gapped infrastructure](/deployment-guide/deployment-scenarios/air-gapped-deployment). - **Maintain data sovereignty and mission alignment** with deployments that avoid consumer infrastructure and retain control over all communications and file transfers—even in classified operations. - **Apply role-based separation of access** through [advanced permissions](/administration-guide/onboard/advanced-permissions) and [channel-level controls](/administration-guide/manage/team-channel-members#advanced-access-controls) to protect mission integrity across organizational boundaries. - **Enable secure real-time collaboration across entities** using [Connected Workspaces](/administration-guide/onboard/connected-workspaces) to synchronize discussions, files, and reactions between teams without compromising internal governance. diff --git a/docs/main/use-case-guide/self-sovereign-collaboration.mdx b/docs/main/use-case-guide/self-sovereign-collaboration.mdx index 5f512d19c636..6b474fb4d3e5 100644 --- a/docs/main/use-case-guide/self-sovereign-collaboration.mdx +++ b/docs/main/use-case-guide/self-sovereign-collaboration.mdx @@ -1,5 +1,6 @@ --- title: "Self-Sovereign Collaboration" +sidebar_position: 8 --- As data privacy laws tighten and geopolitical risk escalates, organizations must rethink how they control and protect communications. Cloud-centric collaboration platforms often introduce legal exposure, third-party monitoring, and cross-border compliance conflicts—putting operations and data at risk. Whether driven by internal policy, regulatory mandates, or national data sovereignty requirements, more organizations are moving toward self-sovereign collaboration models. @@ -16,7 +17,7 @@ Managing global operations means adhering to regional regulations—without comp **Benefits** - **Meet global compliance mandates** like GDPR and data localization laws by deploying Mattermost in [public, private, or sovereign cloud environments](/product-overview/cloud-subscriptions) tailored to national regulatory frameworks. -- **Ensure full data control and transparency** with [self-hosted deployment options](/deployment-guide/server/server-deployment-planning#deployment-options) that eliminate exposure to vendor-controlled infrastructure or telemetry. +- **Ensure full data control and transparency** with [self-hosted deployment options](/deployment-guide/server/deploy-server#deployment-options) that eliminate exposure to vendor-controlled infrastructure or telemetry. - **Audit and enforce compliance behavior** with [role-based access controls](/administration-guide/manage/team-channel-members#advanced-access-controls), [custom Terms of Service](/administration-guide/comply/custom-terms-of-service), and [audit logging](/administration-guide/manage/logging#audit-logging) to align with internal and regulatory standards. - **Protect identity and access** using [SSO integrations](/administration-guide/onboard/sso-entraid), [AD/LDAP synchronization](/administration-guide/onboard/ad-ldap-groups-synchronization), and [MFA enforcement](/administration-guide/onboard/multi-factor-authentication) for secure authentication across geographies and operational roles. @@ -28,7 +29,7 @@ From national critical infrastructure to defense-grade networks, Mattermost offe - **Deploy in classified, air-gapped, or disconnected environments** using [Kubernetes-based deployments](/deployment-guide/server/deploy-kubernetes) and STIG-hardened container images to support classified operations and sensitive data workflows. - **Eliminate third-party monitoring** with full control over infrastructure, encryption keys, access policies, and system-level logging. -- **Scale to meet operational growth** with [horizontal scalability architecture](/deployment-guide/reference-architecture/scale/scaling-for-enterprise) that supports tens of thousands of users in sovereign environments without degrading performance or control. +- **Scale to meet operational growth** with [horizontal scalability architecture](/deployment-guide/scale/scaling-for-enterprise) that supports tens of thousands of users in sovereign environments without degrading performance or control. - **Maintain operational continuity under cyber or supply chain disruption** using fully self-managed infrastructure that ensures collaboration continues even during cloud outages or external service failures. ## Interoperable Mission-Partner Collaboration @@ -50,7 +51,7 @@ Mattermost replaces legacy, on-premises communication systems with a modern, sov **Benefits** - **Modernize secure messaging and team coordination** with [channel-based collaboration](/end-user-guide/collaborate/collaborate-index), [threaded discussions](/end-user-guide/collaborate/organize-conversations), and [file sharing](/end-user-guide/collaborate/share-files-in-messages) that work across web, desktop, and mobile. -- **Replace outdated platforms** like Skype for Business with a scalable, [self-hosted architecture](/deployment-guide/server/server-deployment-planning#deployment-options) that delivers enhanced user experience, compliance, and cross-organizational flexibility. +- **Replace outdated platforms** like Skype for Business with a scalable, [self-hosted architecture](/deployment-guide/server/deploy-server#deployment-options) that delivers enhanced user experience, compliance, and cross-organizational flexibility. - **Protect sensitive information on mobile** using [enterprise-grade mobile security](/security-guide/mobile-security) including [biometric access](/deployment-guide/mobile/mobile-security-features#biometric-authentication), [jailbreak detection](/deployment-guide/mobile/mobile-security-features#jailbreak-and-root-detection), [screenshot prevention](/deployment-guide/mobile/mobile-security-features#screenshot-and-screen-recording-prevention), and remote wipe—ensuring secure access from personal or field-issued devices. - **Extend collaboration capabilities** using [integrated workflows and automations](/end-user-guide/workflow-automation/workflow-automation-index) to replace manual coordination with policy-driven processes. - **Unify teams around a secure, customizable platform** that evolves with your mission and integrates with internal systems via [webhooks, plugins, and APIs](/integrations-guide/integrations-guide-index). diff --git a/docs/pdf/books/administration-guide.json b/docs/pdf/books/administration-guide.json index a25a8a8018e6..b7e71d21ceab 100644 --- a/docs/pdf/books/administration-guide.json +++ b/docs/pdf/books/administration-guide.json @@ -18,6 +18,7 @@ "/administration-guide/configure/cloud-billing-account-settings", "/administration-guide/configure/configuration-in-your-database", "/administration-guide/configure/configuration-settings", + "/administration-guide/configure/configure-index", "/administration-guide/configure/custom-branding-tools", "/administration-guide/configure/customize-mattermost", "/administration-guide/configure/enabling-chinese-japanese-korean-search", @@ -53,17 +54,18 @@ "/administration-guide/manage/admin/error-codes", "/administration-guide/manage/admin/installing-license-key", "/administration-guide/manage/admin/migration", + "/administration-guide/manage/admin/postgres-migration", + "/administration-guide/manage/admin/postgres-migration-assist-tool", + "/administration-guide/manage/admin/manual-postgres-migration", + "/administration-guide/manage/admin/fips-migration", "/administration-guide/manage/admin/monitoring-and-performance", "/administration-guide/manage/admin/self-hosted-billing", - "/administration-guide/manage/admin/server-configuration", "/administration-guide/manage/admin/server-maintenance", "/administration-guide/manage/admin/user-attributes", "/administration-guide/manage/admin/user-management", - "/administration-guide/manage/admin/user-provisioning", "/administration-guide/onboard/ad-ldap", "/administration-guide/onboard/advanced-permissions", "/administration-guide/onboard/certificate-based-authentication", - "/administration-guide/onboard/common-converting-oauth-to-openidconnect", "/administration-guide/onboard/connected-workspaces", "/administration-guide/onboard/convert-oauth20-service-providers-to-openidconnect", "/administration-guide/onboard/guest-accounts", @@ -73,6 +75,7 @@ "/administration-guide/onboard/migrating-to-mattermost", "/administration-guide/onboard/migration-announcement-email", "/administration-guide/onboard/multi-factor-authentication", + "/administration-guide/onboard/onboard-index", "/administration-guide/onboard/ssl-client-certificate", "/administration-guide/onboard/sso-entraid", "/administration-guide/onboard/sso-gitlab", @@ -80,42 +83,19 @@ "/administration-guide/onboard/sso-openidconnect", "/administration-guide/onboard/sso-saml-adfs-msws2016", "/administration-guide/onboard/sso-saml-adfs", - "/administration-guide/onboard/sso-saml-before-you-begin", "/administration-guide/onboard/sso-saml-entraid", - "/administration-guide/onboard/sso-saml-faq", "/administration-guide/onboard/sso-saml-keycloak", - "/administration-guide/onboard/sso-saml-ldapsync", "/administration-guide/onboard/sso-saml-okta", "/administration-guide/onboard/sso-saml-technical", "/administration-guide/onboard/sso-saml", "/administration-guide/onboard/user-provisioning-workflows", - "/administration-guide/scale/additional-ha-considerations", "/administration-guide/scale/collect-performance-metrics", - "/administration-guide/scale/common-configure-mattermost-for-enterprise-search", "/administration-guide/scale/deploy-grafana-loki-for-centralized-logging", "/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring", - "/administration-guide/scale/elasticsearch-setup", "/administration-guide/scale/ensuring-releases-perform-at-scale", - "/administration-guide/scale/enterprise-search", - "/administration-guide/scale/estimated-storage-per-user-per-month", - "/administration-guide/scale/high-availability-cluster-based-deployment", - "/administration-guide/scale/lifetime-storage", - "/administration-guide/scale/opensearch-setup", "/administration-guide/scale/performance-alerting", "/administration-guide/scale/performance-monitoring-metrics", "/administration-guide/scale/push-notification-health-targets", - "/administration-guide/scale/redis", - "/administration-guide/scale/scale-to-100000-users", - "/administration-guide/scale/scale-to-15000-users", - "/administration-guide/scale/scale-to-200-users", - "/administration-guide/scale/scale-to-2000-users", - "/administration-guide/scale/scale-to-200000-users", - "/administration-guide/scale/scale-to-30000-users", - "/administration-guide/scale/scale-to-50000-users", - "/administration-guide/scale/scale-to-80000-users", - "/administration-guide/scale/scale-to-90000-users", - "/administration-guide/scale/scaling-for-enterprise", - "/administration-guide/scale/server-architecture", "/administration-guide/upgrade/admin-onboarding-tasks", "/administration-guide/upgrade/communicate-scheduled-maintenance", "/administration-guide/upgrade/downgrading-mattermost-server", diff --git a/docs/pdf/books/deployment-guide.json b/docs/pdf/books/deployment-guide.json index efde2732d1f0..9f667ff7b6a7 100644 --- a/docs/pdf/books/deployment-guide.json +++ b/docs/pdf/books/deployment-guide.json @@ -6,70 +6,90 @@ "spine": [ "/deployment-guide/deployment-guide-index", "/deployment-guide/quick-start-evaluation", - "/deployment-guide/reference-architecture/deployment-scenarios/deployment-scenarios-index", - "/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment", - "/deployment-guide/reference-architecture/deployment-scenarios/deploy-ddil-operations", - "/deployment-guide/reference-architecture/deployment-scenarios/deploy-mission-partner", - "/deployment-guide/reference-architecture/deployment-scenarios/deploy-oob", - "/deployment-guide/reference-architecture/deployment-scenarios/deploy-sovereign-collaboration", + "/deployment-guide/deployment-scenarios/deployment-scenarios-index", + "/deployment-guide/deployment-scenarios/deploy-oob", + "/deployment-guide/deployment-scenarios/deploy-mission-partner", + "/deployment-guide/deployment-scenarios/deploy-ddil-operations", + "/deployment-guide/deployment-scenarios/deploy-sovereign-collaboration", + "/deployment-guide/deployment-scenarios/air-gapped-deployment", "/deployment-guide/server/server-deployment-planning", - "/deployment-guide/reference-architecture/application-architecture", + "/deployment-guide/application-architecture", + "/deployment-guide/deployment-architecture", "/deployment-guide/software-hardware-requirements", - "/deployment-guide/server/preparations", "/deployment-guide/server/orchestration", + "/deployment-guide/server/preparations", + "/deployment-guide/server/setup-nginx-proxy", + "/deployment-guide/server/setup-tls", + "/deployment-guide/server/prepare-mattermost-mysql-database", + "/deployment-guide/server/image-proxy", + "/deployment-guide/server/pre-authentication-secrets", "/deployment-guide/server/deploy-linux", "/deployment-guide/server/linux/deploy-ubuntu", "/deployment-guide/server/linux/deploy-rhel", "/deployment-guide/server/linux/deploy-tar", + "/deployment-guide/server/linux/deploy-azure-native-vm", "/deployment-guide/server/deploy-kubernetes", "/deployment-guide/server/kubernetes/deploy-k8s", "/deployment-guide/server/kubernetes/deploy-k8s-oke", "/deployment-guide/server/deploy-containers", "/deployment-guide/server/containers/fips-stig", - "/deployment-guide/server/setup-nginx-proxy", - "/deployment-guide/server/setup-tls", - "/deployment-guide/server/pre-authentication-secrets", - "/deployment-guide/server/image-proxy", - "/deployment-guide/server/prepare-mattermost-mysql-database", + "/deployment-guide/encryption-options", + "/deployment-guide/transport-encryption", + "/deployment-guide/scale/scaling-for-enterprise", + "/deployment-guide/scale/scale-to-200-users", + "/deployment-guide/scale/scale-to-2000-users", + "/deployment-guide/scale/scale-to-15000-users", + "/deployment-guide/scale/scale-to-30000-users", + "/deployment-guide/scale/scale-to-50000-users", + "/deployment-guide/scale/scale-to-80000-users", + "/deployment-guide/scale/scale-to-90000-users", + "/deployment-guide/scale/scale-to-100000-users", + "/deployment-guide/scale/scale-to-200000-users", + "/deployment-guide/scale/high-availability-cluster-based-deployment", + "/deployment-guide/scale/additional-ha-considerations", + "/deployment-guide/scale/server-architecture", + "/deployment-guide/scale/estimated-storage-per-user-per-month", + "/deployment-guide/scale/lifetime-storage", + "/deployment-guide/scale/backing-storage-benchmarks", + "/deployment-guide/scale/enterprise-search", + "/deployment-guide/scale/elasticsearch-setup", + "/deployment-guide/scale/opensearch-setup", + "/deployment-guide/scale/common-configure-mattermost-for-enterprise-search", + "/deployment-guide/scale/redis", + "/deployment-guide/backup-disaster-recovery", + "/deployment-guide/disaster-recovery-aws", + "/deployment-guide/air-gapped-operations/index", + "/deployment-guide/air-gapped-operations/quick-start-runbook", + "/deployment-guide/air-gapped-operations/mirror-package-repositories", + "/deployment-guide/air-gapped-operations/disable-phone-home-features", "/deployment-guide/calls/calls-deployment-guide", + "/deployment-guide/calls/calls-rtcd-setup", + "/deployment-guide/calls/calls-offloader-setup", "/deployment-guide/calls/calls-kubernetes", "/deployment-guide/calls/calls-logging", "/deployment-guide/calls/calls-metrics-monitoring", - "/deployment-guide/calls/calls-offloader-setup", - "/deployment-guide/calls/calls-rtcd-setup", "/deployment-guide/desktop/desktop-app-deployment", - "/deployment-guide/desktop/desktop-app-managed-resources", - "/deployment-guide/desktop/desktop-custom-dictionaries", - "/deployment-guide/desktop/desktop-msi-installer-and-group-policy-install", - "/deployment-guide/desktop/desktop-troubleshooting", - "/deployment-guide/desktop/distribute-a-custom-desktop-app", "/deployment-guide/desktop/linux-desktop-install", + "/deployment-guide/desktop/distribute-a-custom-desktop-app", "/deployment-guide/desktop/silent-windows-desktop-distribution", - "/deployment-guide/mobile/consider-mobile-vpn-options", + "/deployment-guide/desktop/desktop-msi-installer-and-group-policy-install", + "/deployment-guide/desktop/desktop-custom-dictionaries", + "/deployment-guide/desktop/desktop-app-managed-resources", + "/deployment-guide/mobile/mobile-app-deployment", "/deployment-guide/mobile/deploy-mobile-apps-using-emm-provider", + "/deployment-guide/mobile/configure-microsoft-intune-mam", "/deployment-guide/mobile/distribute-custom-mobile-apps", "/deployment-guide/mobile/host-your-own-push-proxy-service", - "/deployment-guide/mobile/mobile-app-deployment", - "/deployment-guide/mobile/mobile-faq", + "/deployment-guide/mobile/consider-mobile-vpn-options", "/deployment-guide/mobile/mobile-security-features", - "/deployment-guide/mobile/mobile-troubleshooting", "/deployment-guide/mobile/secure-mobile-file-storage", - "/deployment-guide/air-gapped-operations/index", - "/deployment-guide/air-gapped-operations/quick-start-runbook", - "/deployment-guide/air-gapped-operations/mirror-package-repositories", - "/deployment-guide/air-gapped-operations/offline-license-activation", - "/deployment-guide/air-gapped-operations/disable-phone-home-features", - "/deployment-guide/backup-disaster-recovery", - "/deployment-guide/disaster-recovery-aws", - "/deployment-guide/postgres-migration", - "/deployment-guide/postgres-migration-assist-tool", - "/deployment-guide/manual-postgres-migration", - "/deployment-guide/encryption-options", - "/deployment-guide/transport-encryption", + "/deployment-guide/mobile/mobile-faq", "/deployment-guide/deployment-troubleshooting", "/deployment-guide/server/troubleshooting", "/deployment-guide/server/docker-troubleshooting", + "/deployment-guide/server/trouble-postgres", "/deployment-guide/server/trouble_mysql", - "/deployment-guide/server/trouble-postgres" + "/deployment-guide/desktop/desktop-troubleshooting", + "/deployment-guide/mobile/mobile-troubleshooting" ] } diff --git a/docs/pdf/books/security-guide.json b/docs/pdf/books/security-guide.json index 6ff263df5849..368bde6cc949 100644 --- a/docs/pdf/books/security-guide.json +++ b/docs/pdf/books/security-guide.json @@ -5,7 +5,6 @@ "version": "unreleased", "spine": [ "/security-guide/cmmc-compliance", - "/security-guide/dependency-vulnerability-analysis", "/security-guide/finra-compliance", "/security-guide/hipaa-compliance", "/security-guide/mobile-security", diff --git a/docs/pdf/scripts/gen-main-docs-books.mjs b/docs/pdf/scripts/gen-main-docs-books.mjs index 399572690ae2..d5e47a90bce1 100644 --- a/docs/pdf/scripts/gen-main-docs-books.mjs +++ b/docs/pdf/scripts/gen-main-docs-books.mjs @@ -4,7 +4,7 @@ // build-book-pdf.mjs. // // Sources: -// docs-site/sidebars/documentation.generated.json (already authoritative) +// site/sidebars/documentation.generated.json (already authoritative) // // Outputs: // pdf/books/product-overview.json @@ -20,7 +20,7 @@ import {fileURLToPath} from 'node:url'; const HERE = dirname(fileURLToPath(import.meta.url)); const PDF_ROOT = resolve(HERE, '..'); const REPO_ROOT = resolve(PDF_ROOT, '..'); -const SIDEBAR = resolve(REPO_ROOT, 'docs-site/sidebars/documentation.generated.json'); +const SIDEBAR = resolve(REPO_ROOT, 'site/sidebars/documentation.generated.json'); const BOOKS_DIR = resolve(PDF_ROOT, 'books'); // Mapping from sidebar category label → book metadata (eyebrow/version). diff --git a/docs/site/README.md b/docs/site/README.md index 0ce1a8f56086..13ac0d935ada 100644 --- a/docs/site/README.md +++ b/docs/site/README.md @@ -64,15 +64,21 @@ End User Guide → Collaborate (`COLLABORATE_GROUPS`/`COLLABORATE_ORDER`), and Integrations Guide (`INTEGRATIONS_GROUPS`/`INTEGRATIONS_ROOT_ORDER`). Usually the override only changes how the sidebar renders — files stay -flat on disk at their existing paths, so URLs don't move. The one -exception is Administration Guide → Scale: 21 of its 28 files (capacity -planning, HA/architecture, search infrastructure, caching) were physically -moved to `deployment-guide/reference-architecture/scale/` and are grouped -via `DEPLOYMENT_GROUPS.scaling`, matching where Sphinx's live nav actually -lists that content (under Deployment Guide → Reference Architecture, as a -sibling of Application Architecture). Only the 7 monitoring/observability -pages stayed under `ADMIN_SCALE_GROUPS`. Since that move changes URLs, the -Sphinx→Docusaurus redirect targets for those 21 pages in +flat on disk at their existing paths, so URLs don't move. There are two +exceptions, both cases where the nav home and the URL would otherwise +disagree: + +- Administration Guide → Scale: 21 of its 28 files (capacity planning, + HA/architecture, search infrastructure, caching) were physically moved to + `deployment-guide/scale/` and are grouped via `DEPLOYMENT_GROUPS.scaling`, + matching where Sphinx's live nav lists that content. Only the 7 + monitoring/observability pages stayed under `ADMIN_SCALE_GROUPS`. +- The PostgreSQL and FIPS migration pages moved the other way, from + `deployment-guide/` to `administration-guide/manage/admin/`, where + Sphinx's only toctree for them lives. They're grouped under + `ADMIN_MANAGE_GROUPS.dataMigration`. + +Since those moves change URLs, the Sphinx→Docusaurus redirect targets in `sidebars/active-redirects.json` were updated to point at the new paths, and internal `.mdx` links across the docs were rewritten accordingly. diff --git a/docs/site/docusaurus.config.ts b/docs/site/docusaurus.config.ts index c539e0afd81b..24f77fd56b29 100644 --- a/docs/site/docusaurus.config.ts +++ b/docs/site/docusaurus.config.ts @@ -1,9 +1,9 @@ import {themes as prismThemes} from 'prism-react-renderer'; import type {Config} from '@docusaurus/types'; import type * as Preset from '@docusaurus/preset-classic'; -// Active redirects (legacy Sphinx URLs → migrated MDX paths). Regenerated -// by `node docs-site/scripts/gen-active-redirects.mjs` after content -// changes; only entries whose target exists end up here. +// Active redirects (legacy Sphinx URLs → migrated MDX paths). Bulk-extracted +// during the docs migration, maintained by hand since — add entries directly +// to the JSON when a page moves or is removed. import activeRedirects from './sidebars/active-redirects.json'; // Multi-instance docs setup with three top-level navigations: diff --git a/docs/site/scripts/gen-documentation-sidebar.mjs b/docs/site/scripts/gen-documentation-sidebar.mjs index 967e8b295f5d..34fac6317ff0 100644 --- a/docs/site/scripts/gen-documentation-sidebar.mjs +++ b/docs/site/scripts/gen-documentation-sidebar.mjs @@ -1,14 +1,10 @@ #!/usr/bin/env node -// Generate the Documentation sidebar from the migrated content tree under -// main/. Output: docs-site/sidebars/documentation.generated.json +// Generate the Documentation sidebar from the content tree under main/. +// Output: docs-site/sidebars/documentation.generated.json // -// Mirrors gen-developer-sidebar.mjs in structure. Only differences are -// the source directory and the top-level section list (per PLAN.md 3.1). -// -// File layout: all manual-grouping CONFIG lives at the top (one section per -// group of constants below) — that's what you touch when adding/moving a -// page. All FUNCTIONS (generic helpers, per-section builders, main) live at -// the bottom, and normally don't need to change for a content-only edit. +// Mirrors gen-developer-sidebar.mjs in structure. Grouping config lives at +// the top of the file — that's what you touch to add or move a page. The +// builder functions below it rarely change for a content-only edit. // // Usage: node docs-site/scripts/gen-documentation-sidebar.mjs @@ -26,69 +22,44 @@ const OUT = join(SITE_ROOT, 'sidebars', 'documentation.generated.json'); // CONFIG — top-level sections, and manual grouping overrides. // =========================================================================== // -// Most sections build their sidebar straight from the filesystem: each +// By default a section's sidebar is built straight from the filesystem: each // subdirectory becomes a category, each file a doc, sorted by -// `sidebar_position` frontmatter then filename (see buildCategory below). -// Overview, Deployment Guide, Administration Guide > Configure/Manage/ -// Onboard/Scale, End User Guide > Collaborate, and Integrations Guide are -// flat piles of 15-49 files that read badly as one long alphabetical list, -// so each gets a manual grouping override applied at sidebar-render time -// only — the files themselves stay flat on disk, so URLs don't move. -// -// Each override is a `*_GROUPS` map (group key -> {label, landing?, items}) -// plus a `*_ROOT_ORDER`/`*_ORDER` array giving the top-level order (plain -// strings for standalone docs, `{group: 'key'}` for a group from the map). -// A `*_HIDDEN` set lists files that got re-parented into a group so the -// orphan check below doesn't re-append them at the section root. A group's -// `items` can itself contain nested `{label, items}` sub-groups (see e.g. -// OVERVIEW_GROUPS.subscription's "Cloud" sub-group below) — that's what -// gets you a 3rd level of TOC nesting (Guide > Group > Sub-group > page) -// when a section's flat list is large enough to need it. +// `sidebar_position` frontmatter then filename. Sections that are flat piles +// of 15-49 files get a manual override instead, applied at render time only — +// the files stay where they are on disk, so URLs don't move. // -// This pattern isn't a single generic engine — each section with an -// override gets its own small `buildXItem`/`regroupX` pair (see -// buildCollaborateItem/regroupCollaborate for the newest one) that mirrors -// the others in shape. Adding an override for a new section means copying -// that shape, not extending a shared function; sections without one of -// these overrides just render every level of their filesystem tree as-is -// (buildCategory already recurses to unlimited depth on its own). +// An override is a `*_GROUPS` map (key -> {label, landing?, items}) plus a +// `*_ORDER` array for the top level: strings for standalone docs, +// `{group: 'key'}` for a group. Group `items` can nest `{label, items}` +// sub-groups for deeper levels. A `*_HIDDEN` set lists files re-parented into +// a group so the orphan check doesn't re-append them at the section root; a +// page that belongs in no sidebar at all carries `unlisted: true` instead. // -// Adding a new file to one of these sections: add its basename to the -// relevant group's `items` (or to the root order array, if standalone). If -// you forget, the generator logs `WARN: N file(s) missing from *_ORDER` and -// falls back to appending it at the section root — so it surfaces as a -// build warning instead of silently disappearing. +// Adding a file: add its basename to a group's `items`, or to the root order +// if it's standalone. Forgetting logs `WARN: N file(s) missing from *_ORDER` +// and appends it at the section root, so it surfaces as a build warning +// rather than disappearing. const TOP_LEVEL = [ {dir: 'product-overview', label: 'Overview'}, {dir: 'use-case-guide', label: 'Use Case Guide'}, {dir: 'deployment-guide', label: 'Deployment Guide'}, {dir: 'administration-guide', label: 'Administration Guide'}, - {dir: 'security-guide', label: 'Security & Compliance'}, + {dir: 'security-guide', label: 'Security Guide'}, {dir: 'end-user-guide', label: 'End User Guide'}, {dir: 'integrations-guide', label: 'Integrations Guide'}, - {dir: 'get-help', label: 'Get Help'}, + {dir: 'get-help', label: 'Support and Community'}, ]; // --------------------------------------------------------------------------- // Overview — manual grouping override. // --------------------------------------------------------------------------- // -// The Overview directory is flat (~40 .mdx files at one level) for URL- -// stability reasons — moving files into sub-directories would break the -// redirect table. Mirrors the live docs.mattermost.com Overview structure. - -// Files in docs/product-overview/ that are MDX snippet/partial includes, -// not standalone pages. Excluded from the auto-generated sidebar so they -// don't appear as orphan entries. They remain importable from other MDX. -const OVERVIEW_HIDDEN = new Set([ - 'common-esr-support', - 'common-esr-support-upgrade', - 'common-esr-support-rst', -]); +// The Overview directory stays flat (~40 .mdx files at one level) for URL +// stability — moving files into sub-directories would break the redirect +// table. Grouping here mirrors the live docs.mattermost.com structure. const OVERVIEW_GROUPS = { - // 'Subscription Overview' — paid subscription model: Self-Hosted, Cloud, Non-Profit. subscription: { label: 'Subscription Overview', landing: 'subscription', @@ -98,13 +69,10 @@ const OVERVIEW_GROUPS = { 'cloud-dedicated', 'cloud-shared', 'cloud-vpc-private-connectivity', - 'cloud-supported-integrations', - 'corporate-directory-integration', ]}, 'non-profit-subscriptions', ], }, - // 'Releases and Life Cycle' with Server / Desktop / Mobile sub-groups. releases: { label: 'Releases and Life Cycle', landing: 'releases-lifecycle', @@ -129,7 +97,6 @@ const OVERVIEW_GROUPS = { 'deprecated-features', ], }, - // 'Frequently Asked Questions'. faq: { label: 'Frequently Asked Questions', landing: 'frequently-asked-questions', @@ -137,14 +104,13 @@ const OVERVIEW_GROUPS = { 'faq-general', 'faq-enterprise', 'faq-federal-procurement', - 'faq-license', - 'faq-mattermost-source-available-license', + {label: 'Business & Licensing', landing: 'faq-license', items: [ + 'faq-mattermost-source-available-license', + ]}, ], }, }; -// Top-level items in the Overview section, in order. Strings are doc basenames; -// objects are group keys from OVERVIEW_GROUPS above. Mirrors the live site. const OVERVIEW_ROOT_ORDER = [ 'editions-and-offerings', 'plans', @@ -159,287 +125,304 @@ const OVERVIEW_ROOT_ORDER = [ // Deployment Guide — manual grouping override. // --------------------------------------------------------------------------- // -// The Deployment Guide directory has loose top-level files mixed with sub- -// directories (server/, desktop/, mobile/, air-gapped-operations/, reference- -// architecture/). The auto-generated sidebar ends up as 16 mostly-alphabetical -// items at the top level, with a 16-item kitchen-sink under Server. +// The operator's end-to-end path is one group, `serverDeployment`, ordered as +// a progression: Plan → Prepare → choose a method → make it highly available → +// secure it → back it up. That keeps the guide's top level to five entries — +// evaluate, pick a scenario, deploy the server, then the three client-side +// sections — instead of thirteen. The `server/` directory is dissolved into +// the Plan / Prepare / Deploy groups. +// +// There is no `scaling` group. Sizing is a planning question and lives in +// Plan; the search and cache pages are setup steps against real infrastructure +// and live in Prepare. What survives of the old Scale section is the +// `referenceArch` group, a holding pen for the nine `scale-to-*` pages pending +// the consolidation gated in docs/PARITY-reference-architectures.md. // -// This override applies a progression-ordered grouping (Try → Plan → Install -// → Operate → Security → Troubleshoot). Server's internal structure is also -// restructured into Plan / Install-by-platform / Configure-at-install sub- -// groups, and the four troubleshooting pages that live under server/ are -// pulled up into the top-level "Deployment Troubleshooting" category. +// Troubleshooting is deliberately NOT one category. Each surface-specific page +// sits next to the step that produces its errors — the database pages under +// Prepare, Docker under Containers, and the app pages at the end of their own +// sections — because that is where the reader already is when it breaks. Only +// the cross-cutting page (logs, environment review, support-ticket data) has +// no section home, so it closes Server deployment as the single entry point +// for a reader who can't yet tell which layer failed. const DEPLOYMENT_GROUPS = { - // 'Deployment Scenarios' — promoted from inside Reference Architecture - // to a top-level group. DISC-relevant patterns (Air-Gapped, DDIL, Mission - // Partner, OOB, Sovereign-on-Microsoft) deserve prominence, not burial. + // Near the top rather than buried: these are the patterns regulated and + // disconnected deployments start from. deploymentScenarios: { label: 'Deployment Scenarios', - landing: 'reference-architecture/deployment-scenarios/deployment-scenarios-index', + landing: 'deployment-scenarios/deployment-scenarios-index', items: [ - 'reference-architecture/deployment-scenarios/air-gapped-deployment', - 'reference-architecture/deployment-scenarios/deploy-ddil-operations', - 'reference-architecture/deployment-scenarios/deploy-mission-partner', - 'reference-architecture/deployment-scenarios/deploy-oob', - 'reference-architecture/deployment-scenarios/deploy-sovereign-collaboration', + 'deployment-scenarios/deploy-oob', + 'deployment-scenarios/deploy-mission-partner', + 'deployment-scenarios/deploy-ddil-operations', + 'deployment-scenarios/deploy-sovereign-collaboration', + 'deployment-scenarios/air-gapped-deployment', ], }, - // Server — fully restructured. Reference Architecture's remaining pages - // (Application Architecture + Software & Hardware Requirements) fold in - // here as the "Plan" sub-group, alongside Preparations + Solution Programs. - // The standalone Reference Architecture top-level category is eliminated; - // its index page (reference-architecture-index) is hidden from the sidebar - // (URL still resolves directly). - server: { - label: 'Server', + // What you decide before touching a server. Deployment Solution Programs + // deliberately isn't here — most of that page is a compliance spec for + // third parties building installers, so it lives under Support and + // Community, linked from the Plan and Deploy landing pages. + // + // Software and hardware requirements sorts last: it states minimums for + // components the reader has already chosen and sized. + plan: { + label: 'Plan', landing: 'server/server-deployment-planning', items: [ - {label: 'Plan', items: [ - 'reference-architecture/application-architecture', - 'software-hardware-requirements', - 'server/preparations', - 'server/orchestration', + 'application-architecture', + 'deployment-architecture', + {group: 'referenceArch'}, + 'software-hardware-requirements', + ], + }, + + // The tested reference architectures, which "Size your deployment" is meant + // to replace. They are still here because the two disagree on the numbers + // they both publish — see docs/PARITY-reference-architectures.md. This group + // disappears when that report is signed off and the pages are deleted. + referenceArch: { + label: 'Reference architectures', + landing: 'scale/scaling-for-enterprise', + items: [ + 'scale/scale-to-200-users', + 'scale/scale-to-2000-users', + 'scale/scale-to-15000-users', + 'scale/scale-to-30000-users', + 'scale/scale-to-50000-users', + 'scale/scale-to-80000-users', + 'scale/scale-to-90000-users', + 'scale/scale-to-100000-users', + 'scale/scale-to-200000-users', + 'scale/server-architecture', + 'scale/backing-storage-benchmarks', + ], + }, + + // Prerequisites that must exist before the install runs. Sits BEFORE Deploy + // deliberately: a reader following the sidebar top to bottom must not finish + // installing before reaching NGINX and TLS. The hard prerequisites lead, the + // production hardening follows, and search and cache close the group: they + // are setup steps against real infrastructure, but only large deployments + // provision them. + // + // The two MySQL pages are `unlisted: true` rather than listed here. MySQL is + // removed in v11, so they are no longer part of any supported install path, + // but they stay published because a reader mid-migration still needs them. + prepare: { + label: 'Prepare', + landing: 'server/preparations', + items: [ + 'server/prepare-database', + 'server/prepare-file-storage', + 'server/prepare-network', + 'server/setup-nginx-proxy', + 'server/setup-tls', + 'server/image-proxy', + 'server/pre-authentication-secrets', + 'server/high-availability-cluster-based-deployment', + {label: 'Search infrastructure', landing: 'scale/enterprise-search', items: [ + 'scale/elasticsearch-setup', + 'scale/opensearch-setup', ]}, - // Install methods, each with their sub-pages. - {label: 'Install on Linux', landing: 'server/deploy-linux', items: [ + {doc: 'scale/redis', label: 'Caching with Redis'}, + ], + }, + + // One sub-group per deployment method, with a landing page comparing them so + // the trade-offs sit next to the pages they describe. Named for the choice + // the reader is making here — Linux, Kubernetes, or containers — rather than + // for the act of deploying, which is what the whole parent group is about. + install: { + label: 'Choose a deployment method', + landing: 'server/deploy-server', + items: [ + {label: 'Linux', landing: 'server/deploy-linux', items: [ 'server/linux/deploy-ubuntu', 'server/linux/deploy-rhel', 'server/linux/deploy-tar', 'server/linux/deploy-azure-native-vm', ]}, - {label: 'Install on Kubernetes', landing: 'server/deploy-kubernetes', items: [ + {label: 'Kubernetes', landing: 'server/deploy-kubernetes', items: [ 'server/kubernetes/deploy-k8s', 'server/kubernetes/deploy-k8s-oke', ]}, - {label: 'Install with Containers', landing: 'server/deploy-containers', items: [ + {label: 'Containers', landing: 'server/deploy-containers', items: [ 'server/containers/fips-stig', - ]}, - // Configure at install time — install-blocking decisions like TLS, - // NGINX reverse proxy, image proxy, MySQL setup, pre-auth secrets. - {label: 'Configure at install time', items: [ - 'server/setup-nginx-proxy', - 'server/setup-tls', - 'server/pre-authentication-secrets', - 'server/image-proxy', - 'server/prepare-mattermost-mysql-database', + 'server/docker-troubleshooting', ]}, ], }, - // Scaling Architecture — moved here (physically, from - // administration-guide/scale/) to mirror Sphinx's live nav, where this - // whole cluster (capacity planning, HA/architecture, search infra, caching) - // sits under Reference Architecture as a sibling of Application - // Architecture. `scaling-for-enterprise` is the general entry point - // referencing the sub-groups below, so it's the group's landing page. - scaling: { - label: 'Scaling Architecture', - landing: 'reference-architecture/scale/scaling-for-enterprise', + // Encryption at rest and in transit depend on both the proxy from Prepare + // and a running server from Deploy, so this is its own step after both + // rather than a child of either. + secure: { + label: 'Secure your deployment', + landing: 'encryption-options', items: [ - {label: 'Capacity Planning', items: [ - 'reference-architecture/scale/scale-to-200-users', - 'reference-architecture/scale/scale-to-2000-users', - 'reference-architecture/scale/scale-to-15000-users', - 'reference-architecture/scale/scale-to-30000-users', - 'reference-architecture/scale/scale-to-50000-users', - 'reference-architecture/scale/scale-to-80000-users', - 'reference-architecture/scale/scale-to-90000-users', - 'reference-architecture/scale/scale-to-100000-users', - 'reference-architecture/scale/scale-to-200000-users', - 'reference-architecture/scale/estimated-storage-per-user-per-month', - 'reference-architecture/scale/backing-storage-benchmarks', - 'reference-architecture/scale/lifetime-storage', - 'reference-architecture/scale/additional-ha-considerations', - ]}, - {label: 'High Availability & Architecture', items: [ - 'reference-architecture/scale/high-availability-cluster-based-deployment', - 'reference-architecture/scale/server-architecture', - ]}, - {label: 'Search Infrastructure', landing: 'reference-architecture/scale/enterprise-search', items: [ - 'reference-architecture/scale/elasticsearch-setup', - 'reference-architecture/scale/opensearch-setup', - 'reference-architecture/scale/common-configure-mattermost-for-enterprise-search', - ]}, - {label: 'Caching', items: [ - 'reference-architecture/scale/redis', - ]}, + 'transport-encryption', ], }, - // Calls Deployment & Configuration — moved here from Administration - // Guide → Configure. RTCD, Offloader, Kubernetes, logging, and metrics - // are deployment/operations concerns, not settings-reference material. - calls: { - label: 'Calls Deployment & Configuration', - landing: 'calls/calls-deployment-guide', + // Deployment-time architecture (HA-vs-DR, active/passive across two sites), + // not routine administration. + backupDr: { + label: 'Back up and recover', + landing: 'backup-disaster-recovery', items: [ - 'calls/calls-rtcd-setup', - 'calls/calls-offloader-setup', - 'calls/calls-kubernetes', - 'calls/calls-logging', - 'calls/calls-metrics-monitoring', + 'disaster-recovery-aws', ], }, - // Backup & Disaster Recovery — group the two related pages. - backupDr: { - label: 'Backup & Disaster Recovery', - landing: 'backup-disaster-recovery', + // The operator's path, start to finish. Every child is a step in it, which + // is why the securing and backup steps are siblings of the install methods + // rather than children: each depends on a running server, not on which + // method produced it. + serverDeployment: { + label: 'Server deployment', items: [ - 'disaster-recovery-aws', + {group: 'plan'}, + {group: 'prepare'}, + {group: 'install'}, + {group: 'secure'}, + {group: 'backupDr'}, + // Keeps its auto-generated tree: it has an index file and its children + // already set sidebar_position. + {auto: 'air-gapped-operations'}, + {doc: 'server/troubleshooting', label: 'General deployment troubleshooting'}, ], }, - // PostgreSQL Migration — group the three migration pages. - postgresMig: { - label: 'PostgreSQL Migration', - landing: 'postgres-migration', + // Moved here from Administration Guide → Configure: RTCD, Offloader, and + // the rest are deployment concerns, not settings-reference material. + calls: { + label: 'Calls Deployment', + landing: 'calls/calls-deployment-guide', items: [ - 'postgres-migration-assist-tool', - 'manual-postgres-migration', + 'calls/calls-rtcd-setup', + 'calls/calls-offloader-setup', + 'calls/calls-kubernetes', + 'calls/calls-logging', + 'calls/calls-metrics-monitoring', ], }, - // Encryption — at-rest + in-transit. - encryption: { - label: 'Encryption', - landing: 'encryption-options', + // Explicit rather than auto-generated, so the section overview is the + // landing page and the children run in procedural order. Troubleshooting + // closes the section: symptom triage is what a reader reaches for after + // working through the rollout pages above it. + desktop: { + label: 'Desktop App Deployment', + landing: 'desktop/desktop-app-deployment', items: [ - 'transport-encryption', + 'desktop/linux-desktop-install', + 'desktop/distribute-a-custom-desktop-app', + 'desktop/silent-windows-desktop-distribution', + 'desktop/desktop-msi-installer-and-group-policy-install', + 'desktop/desktop-custom-dictionaries', + 'desktop/desktop-app-managed-resources', + 'desktop/desktop-troubleshooting', ], }, - // Deployment Troubleshooting — pulls in the four troubleshooting pages - // currently scattered inside server/, plus the existing top-level page. - troubleshooting: { - label: 'Deployment Troubleshooting', - landing: 'deployment-troubleshooting', + // Same treatment as Desktop. The FAQ and troubleshooting pages pair up at + // the end — both are question-shaped rather than procedural. + mobile: { + label: 'Mobile App Deployment', + landing: 'mobile/mobile-app-deployment', items: [ - 'server/troubleshooting', - 'server/docker-troubleshooting', - 'server/trouble_mysql', - 'server/trouble-postgres', + 'mobile/deploy-mobile-apps-using-emm-provider', + 'mobile/configure-microsoft-intune-mam', + 'mobile/distribute-custom-mobile-apps', + 'mobile/host-your-own-push-proxy-service', + 'mobile/consider-mobile-vpn-options', + 'mobile/mobile-security-features', + 'mobile/secure-mobile-file-storage', + 'mobile/mobile-faq', + 'mobile/mobile-troubleshooting', ], }, }; -// Top-level Deployment Guide order — Try → Plan → Install → Operate → Security -// → Troubleshoot. Strings are paths relative to docs/deployment-guide/; objects -// reference DEPLOYMENT_GROUPS keys or are inline sub-directories handled -// by the auto-generator (Desktop, Mobile, Air-Gapped Operations). +// Deployment Scenarios stays a sibling of Server deployment rather than a +// child of Plan: it addresses evaluation, DNS failover, and zero-trust access +// constraints that shape the whole deployment, above the level of the +// server-specific planning pages. const DEPLOYMENT_ROOT_ORDER = [ 'quick-start-evaluation', {group: 'deploymentScenarios'}, - 'deployment-architecture', - {group: 'server'}, - {group: 'scaling'}, + {group: 'serverDeployment'}, {group: 'calls'}, - // Desktop, Mobile, Air-Gapped Operations keep their auto-generated trees - // (each has its own index file + sub-pages). Referenced by the `__auto__` - // sentinel so we slot them in here, in the order we want. - {auto: 'desktop'}, - {auto: 'mobile'}, - {auto: 'air-gapped-operations'}, - {group: 'backupDr'}, - {group: 'postgresMig'}, - {group: 'encryption'}, - {group: 'troubleshooting'}, + {group: 'desktop'}, + {group: 'mobile'}, ]; -// Files re-parented into other groups — exclude from the orphan check so they -// don't get re-appended at root level. -const DEPLOYMENT_HIDDEN = new Set([ - 'software-hardware-requirements', // → server Plan - 'reference-architecture/application-architecture', // → server Plan - 'reference-architecture/reference-architecture-index', // orphan after RA removal — URL still resolves directly - 'backup-disaster-recovery', // → backupDr (as landing) - 'disaster-recovery-aws', // → backupDr - 'postgres-migration', // → postgresMig (as landing) - 'postgres-migration-assist-tool', // → postgresMig - 'manual-postgres-migration', // → postgresMig - 'encryption-options', // → encryption (as landing) - 'transport-encryption', // → encryption - 'deployment-troubleshooting', // → troubleshooting (as landing) - 'server/troubleshooting', // → troubleshooting - 'server/docker-troubleshooting', // → troubleshooting - 'server/trouble_mysql', // → troubleshooting - 'server/trouble-postgres', // → troubleshooting - 'server/fips-migration', // cross-linked only; sidebar home is the Migration hub (administration-guide/manage/admin/migration) -]); +// Empty because every Deployment Guide page is placed explicitly above. An +// empty hidden list is the signal that nothing here is unreachable — keep it +// that way. +const DEPLOYMENT_HIDDEN = new Set([]); // --------------------------------------------------------------------------- // Administration Guide — Configure — manual grouping override. // --------------------------------------------------------------------------- // -// Configure is a flat 34-file settings-reference dump. This override groups -// it by task/subsystem so the ~12 "*-configuration-settings" reference pages -// don't drown the handful of task-oriented pages (Search, Email, Billing, -// Branding) sitting alongside them at the same level. -// -// AI Agents Configuration is deliberately kept as its own standalone, -// un-grouped top-level entry (not folded into a "misc/optional" bucket) — -// Agents is a first-class platform capability, not an afterthought. +// Grouped by task/subsystem so the ~13 "*-configuration-settings" reference +// pages don't drown the task-oriented pages sitting alongside them. const ADMIN_CONFIGURE_GROUPS = { settingsReference: { - label: 'System Console Settings Reference', + // Ordered to follow the System Console's own left-hand nav. + label: 'System Console settings reference', landing: 'configuration-settings', items: [ 'site-configuration-settings', 'authentication-configuration-settings', - 'integrations-configuration-settings', - 'plugins-configuration-settings', - 'compliance-configuration-settings', - 'reporting-configuration-settings', 'user-management-configuration-settings', + 'system-attributes', 'environment-configuration-settings', - 'rate-limiting-configuration-settings', - 'push-notification-server-configuration-settings', + 'reporting-configuration-settings', + 'compliance-configuration-settings', + 'integrations-configuration-settings', + 'plugins-configuration-settings', + 'self-hosted-account-settings', + 'cloud-billing-account-settings', 'experimental-configuration-settings', 'deprecated-configuration-settings', ], }, search: { - label: 'Search Configuration', + label: 'Search', items: [ 'bleve-search', 'enabling-chinese-japanese-korean-search', ], }, email: { - label: 'Email & Notifications', + label: 'Email', items: [ 'smtp-email', 'email-templates', ], }, - billing: { - label: 'Billing & Account', - items: [ - 'self-hosted-account-settings', - 'cloud-billing-account-settings', - ], - }, branding: { - label: 'Branding & Workspace Customization', + label: 'Branding and customization', + landingDoc: 'administration-guide/manage/admin/customize-branding', items: [ - 'custom-branding-tools', 'customize-mattermost', - 'optimize-your-workspace', + 'custom-branding-tools', + {doc: 'administration-guide/manage/code-signing-custom-builds'}, ], }, - // Nests the Agents plugin's own provider/setup pages (vendored from the - // mattermost-plugin-agents submodule, staged by stage-agents-docs.mjs - // into main/agents/docs/) under the admin guide landing page, instead of - // a standalone top-level "Agents" section — mirrors Sphinx, which hides - // these behind a small toctree on administration-guide/configure/ - // agents-admin-guide.rst rather than giving Agents its own nav entry. - // Items use the {doc: ''} form since they live outside + // The Agents plugin's own provider/setup pages, staged into main/agents/docs/ + // from the mattermost-plugin-agents submodule by stage-agents-docs.mjs. They + // nest under the admin guide landing page rather than getting a top-level + // section, and use the {doc: ''} form since they live outside // administration-guide/configure/. agents: { - label: 'AI Agents Configuration', + label: 'AI agents', landing: 'agents-admin-guide', items: [ {doc: 'agents/docs/providers'}, @@ -449,181 +432,161 @@ const ADMIN_CONFIGURE_GROUPS = { }, }; -// Top-level Configure order. Strings are doc basenames relative to -// administration-guide/configure/; objects reference ADMIN_CONFIGURE_GROUPS -// keys. System Console Settings and Search come first (the settings most -// admins land on); AI Agents Configuration is 3rd, standalone. +// Settings reference first, then the subsystems you configure at setup time, +// then the capabilities you turn on afterwards. const ADMIN_CONFIGURE_ORDER = [ {group: 'settingsReference'}, - {group: 'search'}, - {group: 'agents'}, 'configuration-in-your-database', 'environment-variables', - 'azure-blob-storage', + {group: 'search'}, {group: 'email'}, - {group: 'billing'}, + 'azure-blob-storage', {group: 'branding'}, - 'install-boards', + {group: 'agents'}, 'manage-plugins', - 'manage-user-surveys', - 'system-attributes', + 'install-boards', + {doc: 'administration-guide/manage/admin/autotranslation'}, + {doc: 'administration-guide/manage/admin/content-flagging', label: 'Set up content flagging'}, + {doc: 'administration-guide/onboard/connected-workspaces'}, ]; -// Files re-parented into groups — exclude from the orphan check. const ADMIN_CONFIGURE_HIDDEN = new Set([ 'site-configuration-settings', 'authentication-configuration-settings', 'integrations-configuration-settings', 'plugins-configuration-settings', 'compliance-configuration-settings', 'reporting-configuration-settings', 'user-management-configuration-settings', 'environment-configuration-settings', - 'rate-limiting-configuration-settings', 'push-notification-server-configuration-settings', 'experimental-configuration-settings', 'deprecated-configuration-settings', + 'system-attributes', 'self-hosted-account-settings', 'cloud-billing-account-settings', 'bleve-search', 'enabling-chinese-japanese-korean-search', 'smtp-email', 'email-templates', - 'self-hosted-account-settings', 'cloud-billing-account-settings', - 'custom-branding-tools', 'customize-mattermost', 'optimize-your-workspace', + 'custom-branding-tools', 'customize-mattermost', + // Listed under Monitor and troubleshoot / Manage. + 'optimize-your-workspace', 'manage-user-surveys', ]); // --------------------------------------------------------------------------- // Administration Guide — Manage — manual grouping override. // --------------------------------------------------------------------------- // -// Manage has 37 files split into a flat top level (19) plus a nested -// manage/admin/ sub-folder (18) — a raw filesystem artifact, not a real -// Sphinx grouping (Sphinx has no manage-index.rst/toctree that groups this -// content; the admin/ sub-folder exists on disk but is never surfaced as -// its own nav level in Sphinx's real sidebar). Worse, the flat-vs-admin -// split is internally inconsistent — e.g. monitoring/health pages and -// billing pages are each scattered across both buckets. This override -// replaces both with one set of task-based groups. +// The flat top level (19 files) vs. nested manage/admin/ (18) split on disk is +// a filesystem artifact, and an inconsistent one — monitoring and billing +// pages are each scattered across both. Replaced here with task-based groups. const ADMIN_MANAGE_GROUPS = { - userAccess: { - label: 'User & Access Management', + // "Access control" rather than "Users and access": every page here is about + // what a user is allowed to do, not about the user records themselves. + // + // User attributes nests under ABAC as its first child. Custom profile + // attributes are usable on their own, and the page stays directly linkable, + // but they are a prerequisite of the access rules that follow — you define + // the attributes before you can write a policy against them. + // + // Advanced permissions is a two-page topic, so the main page is the group's + // landing and the backend-infrastructure page is its child. + accessControl: { + label: 'Access control', + landing: 'admin/user-management', items: [ - 'admin/user-management', - 'admin/user-provisioning', - 'admin/user-attributes', 'team-channel-members', - {label: 'Attribute-Based Access Control', landing: 'admin/attribute-based-access-control', items: [ + {label: 'Advanced permissions', landingDoc: 'administration-guide/onboard/advanced-permissions', items: [ + {doc: 'administration-guide/onboard/advanced-permissions-backend-infrastructure'}, + ]}, + {doc: 'administration-guide/onboard/delegated-granular-administration'}, + {label: 'Attribute-based access control', landing: 'admin/attribute-based-access-control', items: [ + 'admin/user-attributes', 'admin/abac-system-wide-policies', - 'admin/abac-team-channel-policies', 'admin/abac-team-membership', + 'admin/abac-team-channel-policies', 'admin/abac-channel-access-rules', ]}, ], }, - serverMaintenance: { - label: 'Server Configuration & Maintenance', + serverOps: { + label: 'Server operations', items: [ - 'admin/server-configuration', - 'admin/server-maintenance', - 'code-signing-custom-builds', - 'command-line-tools', 'mmctl-command-line-tool', - ], - }, - monitoring: { - label: 'Monitoring & Diagnostics', - items: [ - 'admin/monitoring-and-performance', - 'statistics', - 'telemetry', - 'configure-health-check-probes', - 'request-server-health-check', + 'command-line-tools', 'logging', - 'admin/error-codes', - 'admin/generating-support-packet', ], }, - billing: { - label: 'Billing & Licensing', + licensing: { + label: 'Licensing and billing', items: [ 'admin/self-hosted-billing', - 'cloud-byok', 'admin/installing-license-key', ], }, cloudWorkspace: { - label: 'Cloud Workspace Management', + label: 'Cloud workspace management', landing: 'cloud-workspace-management', items: [ 'cloud-data-export', 'cloud-data-residency', 'cloud-ip-filtering', + 'cloud-byok', ], }, - notifications: { - label: 'Notifications & Surveys', + notices: { + label: 'Notices and surveys', items: [ - 'in-product-notices', 'system-wide-notifications', + 'in-product-notices', + {doc: 'administration-guide/upgrade/notify-admin'}, + {doc: 'administration-guide/configure/manage-user-surveys'}, 'user-satisfaction-surveys', - 'feature-labels', ], }, - governance: { - label: 'Content & Product Governance', + reference: { + label: 'Reference', items: [ - 'admin/content-flagging', - 'admin/autotranslation', 'product-limits', - ], - }, - dataMigration: { - label: 'Data Export & Migration', - items: [ - 'bulk-export-tool', - 'admin/migration', + 'feature-labels', ], }, }; -// Top-level Manage order. Strings are doc basenames relative to -// administration-guide/manage/ (admin/-prefixed ones live in the nested -// sub-folder); objects reference ADMIN_MANAGE_GROUPS keys. +// `admin/`-prefixed basenames live in the nested sub-folder. const ADMIN_MANAGE_ORDER = [ - {group: 'userAccess'}, - {group: 'serverMaintenance'}, - {group: 'monitoring'}, - {group: 'billing'}, + {group: 'accessControl'}, + {group: 'serverOps'}, + {group: 'licensing'}, {group: 'cloudWorkspace'}, - {group: 'notifications'}, - {group: 'governance'}, - {group: 'dataMigration'}, - 'admin/customize-branding', + {group: 'notices'}, + {group: 'reference'}, ]; -// Files re-parented into groups — exclude from the orphan check. const ADMIN_MANAGE_HIDDEN = new Set([ - 'admin/user-management', 'admin/user-provisioning', 'admin/user-attributes', 'team-channel-members', + 'admin/server-maintenance', + 'admin/user-management', 'admin/user-attributes', 'team-channel-members', 'admin/attribute-based-access-control', 'admin/abac-system-wide-policies', 'admin/abac-team-channel-policies', 'admin/abac-team-membership', 'admin/abac-channel-access-rules', - 'admin/server-configuration', 'admin/server-maintenance', 'code-signing-custom-builds', - 'command-line-tools', 'mmctl-command-line-tool', + 'command-line-tools', 'mmctl-command-line-tool', 'logging', + 'admin/self-hosted-billing', 'admin/installing-license-key', + 'cloud-workspace-management', 'cloud-data-export', 'cloud-data-residency', 'cloud-ip-filtering', + 'cloud-byok', + 'in-product-notices', 'system-wide-notifications', 'user-satisfaction-surveys', + 'product-limits', 'feature-labels', + // Listed under Migration. + 'bulk-export-tool', 'admin/migration', 'admin/postgres-migration', + 'admin/postgres-migration-assist-tool', 'admin/manual-postgres-migration', + 'admin/fips-migration', + // Listed under Configure. + 'admin/content-flagging', 'admin/autotranslation', 'admin/customize-branding', + 'code-signing-custom-builds', + // Listed under Monitor and troubleshoot. 'admin/monitoring-and-performance', 'statistics', 'telemetry', - 'configure-health-check-probes', 'request-server-health-check', 'logging', + 'configure-health-check-probes', 'request-server-health-check', 'admin/error-codes', 'admin/generating-support-packet', - 'admin/self-hosted-billing', 'cloud-byok', 'admin/installing-license-key', - 'cloud-data-export', 'cloud-data-residency', 'cloud-ip-filtering', - 'in-product-notices', 'system-wide-notifications', 'user-satisfaction-surveys', 'feature-labels', - 'admin/content-flagging', 'admin/autotranslation', 'product-limits', - 'bulk-export-tool', 'admin/migration', ]); // --------------------------------------------------------------------------- // End User Guide — Collaborate — manual grouping override. // --------------------------------------------------------------------------- // -// Collaborate is a flat 49-file dump (Channels, Messaging, Calls, Teams, and -// Accessibility topics all interleaved alphabetically) — the section -// End-user Guide > Collaborate feedback (Eric Sethna review, item 6) called -// out as "overwhelming". This override groups it by topic, same pattern as -// Administration Guide's Configure/Manage/Onboard/Scale (see #37591/#37630). -// -// `collaborate-within-channels` doubles as both the Channels group's landing -// page and a regular grouped item — it already reads as a "Channels" hub -// page in its own "Learn more" section, which the `channels` group's item -// list below mirrors. +// 48 files with Channels, Messaging, Calls, Teams, and Accessibility topics +// interleaved alphabetically, grouped here by topic. Item order within a group +// is the reader's task sequence, not alphabetical — joining a channel comes +// before creating one, archiving last. const COLLABORATE_GROUPS = { channels: { @@ -632,54 +595,54 @@ const COLLABORATE_GROUPS = { items: [ 'channel-types', 'browse-channels', - 'create-channels', 'join-leave-channels', - 'navigate-between-channels', + 'create-channels', 'channel-naming-conventions', 'channel-header-purpose', 'rename-channels', - 'archive-unarchive-channels', + 'navigate-between-channels', 'favorite-channels', 'mark-channels-unread', 'manage-channel-members', 'manage-channel-bookmarks', 'display-channel-banners', - 'autotranslate-messages', 'convert-public-channels', 'convert-group-messages', + 'archive-unarchive-channels', ], }, messaging: { - label: 'Messaging & Threads', + label: 'Messages and threads', + landing: 'communicate-with-messages', items: [ 'send-messages', - 'communicate-with-messages', 'reply-to-messages', 'organize-conversations', 'format-messages', - 'mark-messages-unread', 'mention-people', + 'react-with-emojis-gifs', + 'share-files-in-messages', + 'share-links', 'message-priority', - 'message-reminders', 'schedule-messages', + 'message-reminders', + 'mark-messages-unread', 'save-pin-messages', - 'flag-messages', 'forward-messages', 'search-for-messages', - 'share-links', - 'share-files-in-messages', - 'react-with-emojis-gifs', + 'autotranslate-messages', + 'flag-messages', ], }, calls: { - label: 'Calls & Screen Sharing', + label: 'Calls and screen sharing', + landing: 'audio-and-screensharing', items: [ 'make-calls', - 'audio-and-screensharing', ], }, teamsAndRoles: { - label: 'Teams, Groups & Roles', + label: 'Teams, groups, and roles', items: [ 'learn-about-roles', 'organize-using-teams', @@ -688,26 +651,22 @@ const COLLABORATE_GROUPS = { ], }, integrations: { - label: 'Integrations & Connected Apps', + label: 'Integrations and connected apps', items: [ 'extend-mattermost-with-integrations', - 'agents-context-management', 'collaborate-within-connected-microsoft-teams', ], }, accessibility: { - label: 'Keyboard Shortcuts & Accessibility', + label: 'Keyboard shortcuts and accessibility', items: [ 'keyboard-shortcuts', 'team-keyboard-shortcuts', 'keyboard-accessibility', - 'view-system-information', ], }, }; -// Top-level Collaborate order. Strings are doc basenames relative to -// end-user-guide/collaborate/; objects reference COLLABORATE_GROUPS keys. const COLLABORATE_ORDER = [ 'invite-people', {group: 'channels'}, @@ -718,7 +677,8 @@ const COLLABORATE_ORDER = [ {group: 'accessibility'}, ]; -// Files re-parented into groups — exclude from the orphan check. +// agents-context-management leaves Collaborate entirely — it sits under AI +// Agents. const COLLABORATE_HIDDEN = new Set([ 'channel-types', 'browse-channels', 'create-channels', 'join-leave-channels', 'navigate-between-channels', 'channel-naming-conventions', 'channel-header-purpose', @@ -737,38 +697,32 @@ const COLLABORATE_HIDDEN = new Set([ 'extend-mattermost-with-integrations', 'agents-context-management', 'collaborate-within-connected-microsoft-teams', 'keyboard-shortcuts', 'team-keyboard-shortcuts', 'keyboard-accessibility', - 'view-system-information', ]); // --------------------------------------------------------------------------- // Administration Guide — Onboard — manual grouping override. // --------------------------------------------------------------------------- // -// Onboard is a flat 34-file dump spanning SSO/identity setup, guest/admin -// permissions, user provisioning, and one-time migration tasks. All SSO and -// identity-provider protocols (SAML, OIDC, Google, GitLab, Entra ID native, -// OAuth->OIDC conversion, AD/LDAP) live under one "SSO & Identity" group; -// SAML is nested as its own sub-category within it since it alone accounts -// for 11 of those files (one per IdP plus FAQ/technical docs). +// SAML nests inside the single sign-on group since it alone accounts for 8 +// files. AD/LDAP is a sibling group, not an SSO child — an admin can run +// directory synchronization without SSO. const ADMIN_ONBOARD_GROUPS = { sso: { - label: 'SSO & Identity', + label: 'Single sign-on', + landing: 'corporate-directory-integration', items: [ { - label: 'SAML Single Sign-On', + label: 'SAML', landing: 'sso-saml', items: [ - 'sso-saml-before-you-begin', 'sso-saml-adfs', 'sso-saml-adfs-msws2016', 'sso-saml-entraid', 'sso-saml-keycloak', - 'sso-saml-ldapsync', 'sso-saml-okta', 'sso-saml-onelogin', 'sso-saml-technical', - 'sso-saml-faq', ], }, 'sso-openidconnect', @@ -776,193 +730,379 @@ const ADMIN_ONBOARD_GROUPS = { 'sso-gitlab', 'sso-entraid', 'convert-oauth20-service-providers-to-openidconnect', - 'common-converting-oauth-to-openidconnect', - 'ad-ldap', - 'ad-ldap-groups-synchronization', - 'managing-team-channel-membership-using-ad-ldap-sync-groups', - ], - }, - mfaCert: { - label: 'Multi-Factor & Certificate-Based Authentication', - items: [ - 'multi-factor-authentication', - 'certificate-based-authentication', - 'ssl-client-certificate', ], }, - userManagement: { - label: 'User Management', + adldap: { + label: 'AD/LDAP', items: [ - 'guest-accounts', - 'delegated-granular-administration', - 'advanced-permissions', - 'advanced-permissions-backend-infrastructure', - ], - }, - provisioning: { - label: 'User Provisioning & Bulk Data', - items: [ - 'user-provisioning-workflows', - 'bulk-loading-data', - 'connected-workspaces', - ], - }, - migration: { - label: 'Migrating to Mattermost', - landing: 'migrating-to-mattermost', - items: [ - 'migrate-from-slack', - 'migrate-from-rocketchat', - 'migrate-gitlab-omnibus', - 'migration-announcement-email', + 'ad-ldap', + 'ad-ldap-groups-synchronization', + 'managing-team-channel-membership-using-ad-ldap-sync-groups', ], }, }; -// Top-level Onboard order. Identity/auth setup first (SSO, then MFA/cert), -// then user management, then provisioning/bulk data, then the one-time -// migration tasks admins hit least often. +// Identity setup first, then getting accounts in. Platform migration moved out +// to the Migration section — arriving from another platform is a one-time +// project, not part of standing up authentication. +// +// Multi-factor authentication and SSL client certificates are sibling leaves +// rather than a "Multi-factor and certificate authentication" group. That +// group existed to hold experimental certificate-based authentication, which +// is deprecated from v11 and now `unlisted: true`; grouping the two survivors +// under a joint heading buries MFA, which is the one most admins want. const ADMIN_ONBOARD_ORDER = [ {group: 'sso'}, - {group: 'mfaCert'}, - {group: 'userManagement'}, - {group: 'provisioning'}, - {group: 'migration'}, + {group: 'adldap'}, + 'multi-factor-authentication', + 'ssl-client-certificate', + 'user-provisioning-workflows', + 'guest-accounts', ]; -// Files re-parented into groups — exclude from the orphan check. Every -// Onboard file lives in a group (no standalone top-level docs), so this -// covers all 34. const ADMIN_ONBOARD_HIDDEN = new Set([ - 'sso-saml', 'sso-saml-before-you-begin', 'sso-saml-adfs', 'sso-saml-adfs-msws2016', - 'sso-saml-entraid', 'sso-saml-keycloak', 'sso-saml-ldapsync', 'sso-saml-okta', - 'sso-saml-onelogin', 'sso-saml-technical', 'sso-saml-faq', + 'sso-saml', 'sso-saml-adfs', 'sso-saml-adfs-msws2016', + 'sso-saml-entraid', 'sso-saml-keycloak', 'sso-saml-okta', + 'sso-saml-onelogin', 'sso-saml-technical', 'sso-openidconnect', 'sso-google', 'sso-gitlab', 'sso-entraid', - 'convert-oauth20-service-providers-to-openidconnect', 'common-converting-oauth-to-openidconnect', + 'convert-oauth20-service-providers-to-openidconnect', + 'corporate-directory-integration', 'ad-ldap', 'ad-ldap-groups-synchronization', 'managing-team-channel-membership-using-ad-ldap-sync-groups', - 'multi-factor-authentication', 'certificate-based-authentication', 'ssl-client-certificate', - 'guest-accounts', 'delegated-granular-administration', 'advanced-permissions', - 'advanced-permissions-backend-infrastructure', - 'user-provisioning-workflows', 'bulk-loading-data', 'connected-workspaces', + // Listed under Manage > Access control. + 'advanced-permissions', 'advanced-permissions-backend-infrastructure', + 'delegated-granular-administration', + // Listed under Configure. + 'connected-workspaces', + // Listed under Migration. 'migrating-to-mattermost', 'migrate-from-slack', 'migrate-from-rocketchat', 'migrate-gitlab-omnibus', - 'migration-announcement-email', + 'migration-announcement-email', 'bulk-loading-data', ]); // --------------------------------------------------------------------------- // Administration Guide — Scale — manual grouping override. // --------------------------------------------------------------------------- // -// Scale was originally a flat 28-file dump mixing a whole run of -// `scale-to-N-users` capacity-planning pages with unrelated HA, search, and -// monitoring topics. In Sphinx's live nav, only the 7 monitoring/observability -// pages below actually stay under Administration Guide — the other 21 files -// (capacity planning, HA/architecture, search infrastructure, caching) are -// listed under Deployment Guide → Reference Architecture instead (Sphinx -// decouples toctree/nav placement from a page's physical file location, so -// those files keep their `/administration-guide/scale/...` URLs there even -// though they're navigated to from Deployment Guide). We mirror that split -// here by physically moving those 21 files to -// `deployment-guide/reference-architecture/scale/` (see the `scaling` group -// in DEPLOYMENT_GROUPS), leaving only the 7 monitoring pages here. With just -// one theme left, they're listed flat rather than wrapped in a redundant -// "Observability & Monitoring" sub-category one level above itself. - -// Empty for now — kept (rather than removed) so buildAdminScaleItem's -// `{group: '...'}` branch still throws a clear "unknown admin scale group" -// error instead of a raw ReferenceError if a themed sub-group is needed here -// again in the future (e.g. if Scale grows past this one theme). -const ADMIN_SCALE_GROUPS = {}; +// The capacity planning, HA, search, and caching pages that used to live here +// were physically moved to `deployment-guide/scale/` (see the `scaling` group +// in DEPLOYMENT_GROUPS). What's left is monitoring, so regroupAdminScale +// re-labels the category "Monitor and troubleshoot" and pulls in the +// monitoring pages that live in manage/ on disk, by full doc id. + +const ADMIN_SCALE_GROUPS = { + metrics: { + label: 'Metrics and dashboards', + items: [ + 'collect-performance-metrics', + 'deploy-prometheus-grafana-for-performance-monitoring', + 'performance-monitoring-metrics', + 'performance-alerting', + 'push-notification-health-targets', + ], + }, + health: { + label: 'Health and diagnostics', + items: [ + {doc: 'administration-guide/configure/optimize-your-workspace'}, + {doc: 'administration-guide/manage/statistics'}, + {doc: 'administration-guide/manage/configure-health-check-probes'}, + {doc: 'administration-guide/manage/request-server-health-check'}, + {doc: 'administration-guide/manage/admin/generating-support-packet'}, + {doc: 'administration-guide/manage/admin/error-codes'}, + ], + }, +}; const ADMIN_SCALE_ORDER = [ - 'deploy-prometheus-grafana-for-performance-monitoring', - 'collect-performance-metrics', - 'performance-monitoring-metrics', - 'performance-alerting', + {group: 'metrics'}, 'deploy-grafana-loki-for-centralized-logging', - 'push-notification-health-targets', + {group: 'health'}, + {doc: 'administration-guide/manage/telemetry'}, 'ensuring-releases-perform-at-scale', ]; -// Files re-parented into groups — exclude from the orphan check. Empty now -// that Scale's 7 remaining files are listed flat (directly known via -// ADMIN_SCALE_ORDER) rather than nested inside a sub-group. -const ADMIN_SCALE_HIDDEN = new Set([]); +const ADMIN_SCALE_HIDDEN = new Set([ + 'collect-performance-metrics', 'deploy-prometheus-grafana-for-performance-monitoring', + 'performance-monitoring-metrics', 'performance-alerting', 'push-notification-health-targets', +]); + +// --------------------------------------------------------------------------- +// Administration Guide — Comply and Upgrade — manual ordering overrides. +// --------------------------------------------------------------------------- +// +// Both are small enough not to need groups, but read badly in filename order. +// Comply runs by how widely each capability is used, reference material last; +// Upgrade follows the upgrade procedure. + +const ADMIN_COMPLY_GROUPS = {}; + +const ADMIN_COMPLY_ORDER = [ + 'compliance-export', + 'compliance-monitoring', + 'electronic-discovery', + 'data-retention-policy', + 'export-mattermost-channel-data', + 'legal-hold', + 'custom-terms-of-service', + 'embedded-json-audit-log-schema', +]; + +const ADMIN_COMPLY_HIDDEN = new Set([]); -const ADMIN_ROOT_ORDER = ['Configure', 'Comply', 'Onboard', 'Manage', 'Upgrade', 'Scale']; +const ADMIN_UPGRADE_GROUPS = { + afterUpgrade: { + label: 'After you upgrade', + items: [ + 'admin-onboarding-tasks', + 'enterprise-roll-out-checklist', + 'welcome-email-to-end-users', + ], + }, +}; -const ENDUSER_ROOT_ORDER = ['Access', 'Collaborate', 'Workflow Automation', 'Project Management', 'AI Agents', 'Preferences']; +const ADMIN_UPGRADE_ORDER = [ + 'important-upgrade-notes', + 'prepare-to-upgrade-mattermost', + 'communicate-scheduled-maintenance', + 'upgrading-mattermost-server', + 'upgrade-mattermost-kubernetes-ha', + 'upgrading-postgres', + 'enterprise-install-upgrade', + 'downgrading-mattermost-server', + {group: 'afterUpgrade'}, + 'open-source-components', +]; + +const ADMIN_UPGRADE_HIDDEN = new Set([ + 'admin-onboarding-tasks', 'enterprise-roll-out-checklist', 'welcome-email-to-end-users', + // Listed under Manage > Notices and surveys. + 'notify-admin', +]); // --------------------------------------------------------------------------- -// Integrations Guide — manual grouping override. +// Administration Guide — Migration — synthetic top-level section. // --------------------------------------------------------------------------- // -// Integrations Guide is a genuinely flat 20-item list (not just a migration -// artifact — Sphinx has the same problem). Group by integration type so -// related pages sit together instead of an alphabetical-ish flat dump. +// Not built from a directory: these pages live in manage/ and onboard/ on +// disk. They are one section because bulk import and export exist for the same +// reason a database or FIPS migration does — someone is moving a deployment +// in, out, or between configurations. Splitting import/export away from +// migration would separate things that serve one job. +// +// Full doc ids throughout, since the pages come from two directories. + +const ADMIN_MIGRATION = { + label: 'Migrate', + landing: 'administration-guide/manage/admin/migration', + items: [ + 'administration-guide/onboard/bulk-loading-data', + 'administration-guide/manage/bulk-export-tool', + {label: 'Migrate from MySQL to PostgreSQL', landing: 'administration-guide/manage/admin/postgres-migration', items: [ + 'administration-guide/manage/admin/postgres-migration-assist-tool', + 'administration-guide/manage/admin/manual-postgres-migration', + ]}, + 'administration-guide/manage/admin/fips-migration', + {label: 'Migrate from another platform', landing: 'administration-guide/onboard/migrating-to-mattermost', items: [ + 'administration-guide/onboard/migrate-from-slack', + 'administration-guide/onboard/migrate-from-rocketchat', + 'administration-guide/onboard/migrate-gitlab-omnibus', + 'administration-guide/onboard/migration-announcement-email', + ]}, + ], +}; -const INTEGRATIONS_GROUPS = { - chatInterop: { - label: 'Chat & Meeting Interop', - items: [ - 'microsoft-teams-sync', - 'microsoft-teams-meetings', - 'microsoft-calendar', - 'mattermost-mission-collaboration-for-m365', - 'zoom', +// Migrate sits last, after Upgrade: a customer builds the infrastructure, +// upgrades it, and then moves data into it. +const ADMIN_ROOT_ORDER = [ + 'Configure', 'Onboard users', 'Manage', 'Monitor and troubleshoot', 'Comply', 'Upgrade', + 'Migrate', +]; + +// AI Agents above Project Management: Boards is in maintenance mode (see +// administration-guide/configure/install-boards), Agents is not. +const ENDUSER_ROOT_ORDER = [ + 'Access your workspace', 'Collaborate', 'Workflow Automation', 'AI Agents', + 'Project Management', 'Preferences', +]; + +// --------------------------------------------------------------------------- +// End User Guide — Access / Workflow Automation / Project Management / +// Preferences ordering overrides. +// --------------------------------------------------------------------------- +// +// None of the pages in these four sections set `sidebar_position`, so without +// an override they'd fall through to alphabetical order. + +const ENDUSER_SECTION_OVERRIDES = { + access: { + // access/ has no landing file for the auto-generated label to come from. + label: 'Access your workspace', + landing: 'access-your-workspace', + order: [ + 'install-desktop-app', + 'install-ios-app', + 'install-android-app', + 'client-availability', + 'log-out', ], }, - itsmDevTools: { - label: 'ITSM & Dev Tools', - items: [ - 'jira', - 'servicenow', - 'github', - 'gitlab', + 'workflow-automation': { + order: [ + 'learn-about-playbooks', + 'work-with-playbooks', + 'work-with-runs', + 'work-with-tasks', + 'notifications-and-updates', + 'metrics-and-goals', + 'share-and-collaborate', + 'interact-with-playbooks', ], }, - noCode: { - label: 'No-Code Automation', - items: [ - 'no-code-automation', + 'project-management': { + order: [ + 'navigate-boards', + 'work-with-boards', + 'work-with-cards', + 'work-with-views', + 'groups-filter-sort', + 'calculations', + 'share-and-collaborate', + 'migrate-to-boards', + 'boards-settings', ], }, - builtIn: { - label: 'Built-in Integrations', + preferences: { + order: [ + 'manage-your-profile', + 'set-your-status-availability', + 'manage-your-security-preferences', + { + label: 'Notifications', + landing: 'manage-your-notifications', + items: [ + 'manage-your-mentions-keywords-notifications', + 'manage-your-thread-reply-notifications', + 'manage-your-channel-specific-notifications', + 'manage-your-desktop-notifications', + 'manage-your-mobile-notifications', + 'manage-your-web-notifications', + 'troubleshoot-notifications', + ], + }, + 'customize-your-theme', + 'manage-your-display-options', + 'customize-your-channel-sidebar', + 'manage-your-sidebar-options', + 'manage-advanced-options', + 'manage-your-plugin-preferences', + 'customize-desktop-app-experience', + 'connect-multiple-workspaces', + ], + }, +}; + +// --------------------------------------------------------------------------- +// Integrations Guide — manual grouping override. +// --------------------------------------------------------------------------- +// +// Pre-built integrations open the guide: a reader arriving here should first +// see what already exists, then how the delivery mechanism works (Plugins), +// and only then how to build their own (webhooks, slash commands, the API). +// +// Vendor pages nest under their catalogue and mirror the tables on +// popular-integrations, split Microsoft / third-party. Microsoft stays its own +// group even though Microsoft is a third party: it reflects the partnership, +// and a reader looking for Teams looks under Microsoft before looking under a +// capability heading. Alphabetical within each group so a reader scanning for +// a vendor name can predict where to look. + +const INTEGRATIONS_GROUPS = { + prebuilt: { + label: 'Pre-built integrations', + landing: 'popular-integrations', items: [ - {label: 'Webhooks', landing: 'webhook-integrations', items: [ - 'incoming-webhooks', - 'outgoing-webhooks', + {label: 'Microsoft integrations', items: [ + 'mattermost-mission-collaboration-for-m365', + 'microsoft-calendar', + 'microsoft-teams-meetings', + 'microsoft-teams-sync', ]}, - {label: 'Slash Commands', landing: 'slash-commands', items: [ - 'built-in-slash-commands', - 'run-slash-commands', + {label: 'Third-party integrations', items: [ + 'github', + 'gitlab', + 'jira', + 'servicenow', + 'zoom', ]}, - 'restful-api', - 'plugins', + ], + }, + webhooks: { + label: 'Webhooks', + landing: 'webhook-integrations', + items: [ + 'incoming-webhooks', + 'outgoing-webhooks', + ], + }, + slashCommands: { + label: 'Slash Commands', + landing: 'slash-commands', + items: [ + 'run-slash-commands', + 'built-in-slash-commands', ], }, }; -// Top-level Integrations Guide order. Strings are doc basenames relative to -// integrations-guide/; objects reference INTEGRATIONS_GROUPS keys or are -// inline sub-groups (Webhooks, Slash Commands). const INTEGRATIONS_ROOT_ORDER = [ - 'popular-integrations', - {group: 'chatInterop'}, - {group: 'itsmDevTools'}, - {group: 'noCode'}, - {group: 'builtIn'}, + {group: 'prebuilt'}, + 'plugins', + {group: 'webhooks'}, + {group: 'slashCommands'}, + 'restful-api', + 'no-code-automation', 'faq', ]; const INTEGRATIONS_HIDDEN = new Set([ - 'microsoft-teams-sync', 'microsoft-teams-meetings', 'microsoft-calendar', - 'mattermost-mission-collaboration-for-m365', 'zoom', - 'jira', 'servicenow', 'github', 'gitlab', - 'no-code-automation', + 'popular-integrations', + 'mattermost-mission-collaboration-for-m365', 'microsoft-calendar', + 'microsoft-teams-meetings', 'microsoft-teams-sync', + 'github', 'gitlab', 'jira', 'servicenow', 'zoom', 'webhook-integrations', 'incoming-webhooks', 'outgoing-webhooks', - 'slash-commands', 'built-in-slash-commands', 'run-slash-commands', - 'restful-api', 'plugins', + 'slash-commands', 'run-slash-commands', 'built-in-slash-commands', +]); + +// --------------------------------------------------------------------------- +// Security Guide — manual grouping override. +// --------------------------------------------------------------------------- +// +// Ordered by reader intent: harden the deployment, then the architectural +// posture model, then the platform-specific surface, then "prove it to an +// auditor" last. Flat filename order put the regulatory pages ahead of the +// hardening guidance most readers arrive for. + +const SECURITY_GROUPS = { + frameworks: { + // Grouped so the section reads as "secure it" then "certify it" rather + // than interleaving the two. + label: 'Compliance Frameworks', + items: [ + 'cmmc-compliance', + 'finra-compliance', + 'hipaa-compliance', + ], + }, +}; + +const SECURITY_ROOT_ORDER = [ + 'secure-mattermost', + 'zero-trust', + 'mobile-security', + {group: 'frameworks'}, +]; + +const SECURITY_HIDDEN = new Set([ + 'cmmc-compliance', 'finra-compliance', 'hipaa-compliance', ]); // =========================================================================== @@ -988,19 +1128,19 @@ function readFm(filePath, key) { } catch { return null; } } -function isDraft(filePath) { - return readFm(filePath, 'draft') === 'true'; +// Docusaurus already drops `draft` and `unlisted` pages from the production +// sidebar, so the generator has to agree or dev and prod disagree. MDX snippet +// includes use `unlisted: true` to keep their URL while leaving the sidebar. +function isHidden(filePath) { + return readFm(filePath, 'draft') === 'true' || readFm(filePath, 'unlisted') === 'true'; } function pathToDocId(relPath) { return relPath.replace(/\.(md|mdx)$/, ''); } -// Landing pages in this tree are conventionally named either `index.md(x)` -// or `-index.md(x)` (e.g. integrations-guide-index.mdx, -// use-cases-index.mdx) — the latter avoids "index.mdx" filename collisions -// when files are flattened for URL stability, and doesn't always exactly -// match the directory name. Recognize both, everywhere a directory's -// landing file is looked up, so category headers/sorting/labels resolve -// consistently instead of assuming a literal index.md(x). +// Landing pages are named either `index.md(x)` or `-index.md(x)`; +// the latter avoids filename collisions when files are flattened for URL +// stability, and doesn't always match its directory name. Both forms have to +// resolve, or category headers, sorting, and labels disagree. function findIndexFile(absDir) { let entries; try { entries = readdirSync(absDir); } catch { return null; } @@ -1013,7 +1153,7 @@ function buildCategory(absDir, docsRelDir) { const entries = readdirSync(absDir); const indexFile = findIndexFile(absDir); let categoryLink = null; - if (indexFile && !isDraft(join(absDir, indexFile))) { + if (indexFile && !isHidden(join(absDir, indexFile))) { categoryLink = {type: 'doc', id: pathToDocId(join(docsRelDir, indexFile))}; } @@ -1024,7 +1164,7 @@ function buildCategory(absDir, docsRelDir) { const abs = join(absDir, name); const st = statSync(abs); if (st.isDirectory()) subDirs.push(name); - else if (st.isFile() && /\.(md|mdx)$/.test(name) && !isDraft(abs)) leafDocs.push(name); + else if (st.isFile() && /\.(md|mdx)$/.test(name) && !isHidden(abs)) leafDocs.push(name); } function key(name, abs) { @@ -1071,10 +1211,9 @@ function buildCategory(absDir, docsRelDir) { } // The content sub-directory a category was built from (e.g. 'comply' for -// administration-guide/comply/), read off its landing page or first doc. -// Used by buildAdminGuideSidebar/buildEndUserGuideSidebar below to find the -// Configure/Manage/Onboard/Scale/Collaborate sub-category to regroup, -// independent of its (label-based) display text. +// administration-guide/comply/), read off its landing page or first doc. Lets +// the section builders below find a sub-category to regroup without depending +// on its display label. function categoryDirName(cat) { if (cat.link && cat.link.id) return cat.link.id.split('/')[1]; const items = cat.items || []; @@ -1111,7 +1250,7 @@ function orderRootCategories(sectionCat, order, sectionLabel) { } // Pull every doc label from an auto-generated category so a manual ordering -// preserves the frontmatter-derived titles. +// keeps the frontmatter-derived titles. function collectLeafLabels(cat, acc = {}) { if (!cat || !cat.items) return acc; for (const it of cat.items) { @@ -1149,13 +1288,8 @@ function buildOverviewGroup(g, leafLabels) { function buildOverviewSidebar(autoCat) { const leafLabels = collectLeafLabels(autoCat); - // Drop hidden snippet-include partials from the label map up front. - for (const hidden of OVERVIEW_HIDDEN) delete leafLabels[`product-overview/${hidden}`]; - const items = OVERVIEW_ROOT_ORDER.map((spec) => buildOverviewItem(spec, leafLabels)); - // Surface any flat docs we didn't include in the manual order so a new - // file dropped into docs/product-overview/ doesn't silently disappear. const known = new Set(); (function walk(n) { if (Array.isArray(n)) n.forEach(walk); @@ -1179,9 +1313,8 @@ function buildOverviewSidebar(autoCat) { type: 'category', label: 'Overview', collapsed: true, - // Merged with the site landing — clicking "Overview" opens the - // root doc (docs/index.mdx, slug: /), which is the unified - // welcome / Overview page. + // Merged with the site landing: clicking "Overview" opens main/index.mdx + // (slug: /), the unified welcome page. link: {type: 'doc', id: 'index'}, items, }; @@ -1197,12 +1330,10 @@ function buildDeploymentItem(spec, leafLabels, autoCats) { return {type: 'doc', id, label: leafLabels[id] || humanize(spec.split('/').pop())}; } if (spec.doc) { - // Explicit doc leaf with an inline label override. const id = `deployment-guide/${spec.doc}`; return {type: 'doc', id, label: spec.label || leafLabels[id] || humanize(spec.doc.split('/').pop())}; } if (spec.auto) { - // Reference an auto-generated sub-category (e.g., Desktop, Mobile, Air-Gapped). const cat = autoCats.get(spec.auto); if (!cat) throw new Error(`auto-category not found: deployment-guide/${spec.auto}`); return cat; @@ -1225,10 +1356,9 @@ function buildDeploymentGroup(g, leafLabels, autoCats) { } function buildDeploymentSidebar(autoCat) { - // Index the auto-generated sub-categories by directory name so we can - // hand them off intact to the manual ordering. We look at the category's - // link target first, and fall back to the first doc child if the dir - // has no index.{md,mdx} (e.g., desktop/, mobile/). + // Index the auto-generated sub-categories by directory name so the manual + // ordering can hand them off intact. Falls back to the first doc child for + // directories with no index file (desktop/, mobile/). const autoCats = new Map(); function dirNameFromId(id) { const parts = id.split('/'); @@ -1248,14 +1378,8 @@ function buildDeploymentSidebar(autoCat) { } const leafLabels = collectLeafLabels(autoCat); - const items = DEPLOYMENT_ROOT_ORDER.map((spec) => buildDeploymentItem(spec, leafLabels, autoCats)); - // Orphan detection: surface any leaf doc in the Deployment Guide that we - // didn't include in the manual order, so new files don't silently disappear. - // DEPLOYMENT_HIDDEN is files we KNOW are re-parented inside groups — they - // are referenced (so their labels need to stay in leafLabels) but they - // must not be re-emitted as orphans. const hiddenIds = new Set(); for (const h of DEPLOYMENT_HIDDEN) hiddenIds.add(`deployment-guide/${h}`); const known = new Set(); @@ -1292,10 +1416,8 @@ function buildDeploymentSidebar(autoCat) { // Administration Guide — builder (regroups the "Configure" sub-category). // --------------------------------------------------------------------------- -// Resolves the label for a fully-qualified doc id (one that lives outside -// the section currently being built, e.g. an Agents doc nested under -// Administration Guide → Configure) by reading its own frontmatter -// directly, since it won't be present in that section's `leafLabels` map. +// Label for a doc that lives outside the section being built, so it won't be +// in that section's `leafLabels` map. Read from its frontmatter directly. function docLabelById(id) { for (const ext of ['.mdx', '.md']) { const abs = join(SRC, `${id}${ext}`); @@ -1312,19 +1434,19 @@ function buildAdminConfigureItem(spec, leafLabels) { return {type: 'doc', id, label: leafLabels[id] || humanize(spec)}; } if (spec.doc) { - return {type: 'doc', id: spec.doc, label: docLabelById(spec.doc)}; + return {type: 'doc', id: spec.doc, label: spec.label || docLabelById(spec.doc)}; } const g = ADMIN_CONFIGURE_GROUPS[spec.group]; if (!g) throw new Error(`unknown admin configure group: ${spec.group}`); const items = g.items.map((it) => buildAdminConfigureItem(it, leafLabels)); const cat = {type: 'category', label: g.label, collapsed: true, items}; - if (g.landing) cat.link = {type: 'doc', id: `administration-guide/configure/${g.landing}`}; + if (g.landingDoc) cat.link = {type: 'doc', id: g.landingDoc}; + else if (g.landing) cat.link = {type: 'doc', id: `administration-guide/configure/${g.landing}`}; return cat; } -// Replace the auto-generated "Configure" sub-category's items (in place, -// preserving its position among Administration Guide's other sub-categories -// like Onboard/Manage/Upgrade/Scale/Comply) with the manual grouping above. +// Every regroup* function below replaces a sub-category's items in place, so +// the sub-category keeps its position until orderRootCategories runs. function regroupAdminConfigure(configureCat) { const leafLabels = collectLeafLabels(configureCat); const items = ADMIN_CONFIGURE_ORDER.map((spec) => buildAdminConfigureItem(spec, leafLabels)); @@ -1361,6 +1483,9 @@ function buildAdminManageItem(spec, leafLabels) { const id = `administration-guide/manage/${spec}`; return {type: 'doc', id, label: leafLabels[id] || humanize(spec.split('/').pop())}; } + if (spec.doc) { + return {type: 'doc', id: spec.doc, label: spec.label || docLabelById(spec.doc)}; + } if (spec.group) { const g = ADMIN_MANAGE_GROUPS[spec.group]; if (!g) throw new Error(`unknown admin manage group: ${spec.group}`); @@ -1372,16 +1497,18 @@ function buildAdminManageItem(spec, leafLabels) { function buildAdminManageGroup(g, leafLabels) { const items = g.items.map((it) => buildAdminManageItem(it, leafLabels)); const cat = {type: 'category', label: g.label, collapsed: true, items}; - if (g.landing) cat.link = {type: 'doc', id: `administration-guide/manage/${g.landing}`}; + if (g.landingDoc) cat.link = {type: 'doc', id: g.landingDoc}; + else if (g.landing) cat.link = {type: 'doc', id: `administration-guide/manage/${g.landing}`}; return cat; } -// Replace the auto-generated "Manage" sub-category's items (in place, -// flattening the manage/admin/ filesystem nesting into the task-based -// groups above) with the manual grouping. +// Also flattens the manage/admin/ filesystem nesting into the task-based +// groups above. function regroupAdminManage(manageCat) { const leafLabels = collectLeafLabels(manageCat); const items = ADMIN_MANAGE_ORDER.map((spec) => buildAdminManageItem(spec, leafLabels)); + // manage/ has no index file; server-maintenance is the hub Sphinx uses. + manageCat.link = {type: 'doc', id: 'administration-guide/manage/admin/server-maintenance'}; const known = new Set(); (function walk(n) { @@ -1413,6 +1540,9 @@ function buildAdminOnboardItem(spec, leafLabels) { const id = `administration-guide/onboard/${spec}`; return {type: 'doc', id, label: leafLabels[id] || humanize(spec.split('/').pop())}; } + if (spec.doc) { + return {type: 'doc', id: spec.doc, label: spec.label || docLabelById(spec.doc)}; + } if (spec.group) { const g = ADMIN_ONBOARD_GROUPS[spec.group]; if (!g) throw new Error(`unknown admin onboard group: ${spec.group}`); @@ -1424,13 +1554,11 @@ function buildAdminOnboardItem(spec, leafLabels) { function buildAdminOnboardGroup(g, leafLabels) { const items = g.items.map((it) => buildAdminOnboardItem(it, leafLabels)); const cat = {type: 'category', label: g.label, collapsed: true, items}; - if (g.landing) cat.link = {type: 'doc', id: `administration-guide/onboard/${g.landing}`}; + if (g.landingDoc) cat.link = {type: 'doc', id: g.landingDoc}; + else if (g.landing) cat.link = {type: 'doc', id: `administration-guide/onboard/${g.landing}`}; return cat; } -// Replace the auto-generated "Onboard" sub-category's items (in place, -// preserving its position among Administration Guide's other sub-categories) -// with the manual grouping above. function regroupAdminOnboard(onboardCat) { const leafLabels = collectLeafLabels(onboardCat); const items = ADMIN_ONBOARD_ORDER.map((spec) => buildAdminOnboardItem(spec, leafLabels)); @@ -1465,6 +1593,9 @@ function buildAdminScaleItem(spec, leafLabels) { const id = `administration-guide/scale/${spec}`; return {type: 'doc', id, label: leafLabels[id] || humanize(spec.split('/').pop())}; } + if (spec.doc) { + return {type: 'doc', id: spec.doc, label: spec.label || docLabelById(spec.doc)}; + } if (spec.group) { const g = ADMIN_SCALE_GROUPS[spec.group]; if (!g) throw new Error(`unknown admin scale group: ${spec.group}`); @@ -1476,16 +1607,18 @@ function buildAdminScaleItem(spec, leafLabels) { function buildAdminScaleGroup(g, leafLabels) { const items = g.items.map((it) => buildAdminScaleItem(it, leafLabels)); const cat = {type: 'category', label: g.label, collapsed: true, items}; - if (g.landing) cat.link = {type: 'doc', id: `administration-guide/scale/${g.landing}`}; + if (g.landingDoc) cat.link = {type: 'doc', id: g.landingDoc}; + else if (g.landing) cat.link = {type: 'doc', id: `administration-guide/scale/${g.landing}`}; return cat; } -// Replace the auto-generated "Scale" sub-category's items (in place, -// preserving its position among Administration Guide's other sub-categories) -// with the manual grouping above. +// Re-labelled because the `scale/` directory name no longer describes what's +// listed here. function regroupAdminScale(scaleCat) { const leafLabels = collectLeafLabels(scaleCat); const items = ADMIN_SCALE_ORDER.map((spec) => buildAdminScaleItem(spec, leafLabels)); + scaleCat.label = 'Monitor and troubleshoot'; + scaleCat.link = {type: 'doc', id: 'administration-guide/manage/admin/monitoring-and-performance'}; const known = new Set(); (function walk(n) { @@ -1512,41 +1645,157 @@ function regroupAdminScale(scaleCat) { return scaleCat; } -function buildAdminGuideSidebar(autoCat) { - let foundConfigure = false; - let foundManage = false; - let foundOnboard = false; - let foundScale = false; - for (const it of autoCat.items) { - if (it.type !== 'category') continue; - const dirName = categoryDirName(it); - if (dirName === 'configure') { - regroupAdminConfigure(it); - foundConfigure = true; - } else if (dirName === 'manage') { - regroupAdminManage(it); - foundManage = true; - } else if (dirName === 'onboard') { - regroupAdminOnboard(it); - foundOnboard = true; - } else if (dirName === 'scale') { - regroupAdminScale(it); - foundScale = true; +function buildAdminComplyItem(spec, leafLabels) { + if (typeof spec === 'string') { + const id = `administration-guide/comply/${spec}`; + return {type: 'doc', id, label: leafLabels[id] || humanize(spec.split('/').pop())}; + } + if (spec.doc) { + return {type: 'doc', id: spec.doc, label: spec.label || docLabelById(spec.doc)}; + } + if (spec.group) { + const g = ADMIN_COMPLY_GROUPS[spec.group]; + if (!g) throw new Error(`unknown admin comply group: ${spec.group}`); + return buildAdminComplyGroup(g, leafLabels); + } + return buildAdminComplyGroup(spec, leafLabels); +} + +function buildAdminComplyGroup(g, leafLabels) { + const items = g.items.map((it) => buildAdminComplyItem(it, leafLabels)); + const cat = {type: 'category', label: g.label, collapsed: true, items}; + if (g.landingDoc) cat.link = {type: 'doc', id: g.landingDoc}; + else if (g.landing) cat.link = {type: 'doc', id: `administration-guide/comply/${g.landing}`}; + return cat; +} + +function regroupAdminComply(complyCat) { + const leafLabels = collectLeafLabels(complyCat); + const items = ADMIN_COMPLY_ORDER.map((spec) => buildAdminComplyItem(spec, leafLabels)); + + const known = new Set(); + (function walk(n) { + if (Array.isArray(n)) n.forEach(walk); + else if (n && typeof n === 'object') { + if (n.type === 'doc' && n.id) known.add(n.id); + if (n.link && n.link.id) known.add(n.link.id); + if (n.items) walk(n.items); } + })(items); + const hiddenIds = new Set(); + for (const h of ADMIN_COMPLY_HIDDEN) hiddenIds.add(`administration-guide/comply/${h}`); + const orphans = []; + for (const id of Object.keys(leafLabels)) { + if (!known.has(id) && !hiddenIds.has(id)) orphans.push(id); + } + if (orphans.length > 0) { + console.warn(`[sidebar] WARN: ${orphans.length} Comply file(s) missing from ADMIN_COMPLY_ORDER — falling through to root:`); + for (const id of orphans) console.warn(` - ${id}`); + for (const id of orphans) items.push({type: 'doc', id, label: leafLabels[id]}); + } + + complyCat.items = items; + return complyCat; +} + +function buildAdminUpgradeItem(spec, leafLabels) { + if (typeof spec === 'string') { + const id = `administration-guide/upgrade/${spec}`; + return {type: 'doc', id, label: leafLabels[id] || humanize(spec.split('/').pop())}; + } + if (spec.doc) { + return {type: 'doc', id: spec.doc, label: spec.label || docLabelById(spec.doc)}; + } + if (spec.group) { + const g = ADMIN_UPGRADE_GROUPS[spec.group]; + if (!g) throw new Error(`unknown admin upgrade group: ${spec.group}`); + return buildAdminUpgradeGroup(g, leafLabels); + } + return buildAdminUpgradeGroup(spec, leafLabels); +} + +function buildAdminUpgradeGroup(g, leafLabels) { + const items = g.items.map((it) => buildAdminUpgradeItem(it, leafLabels)); + const cat = {type: 'category', label: g.label, collapsed: true, items}; + if (g.landingDoc) cat.link = {type: 'doc', id: g.landingDoc}; + else if (g.landing) cat.link = {type: 'doc', id: `administration-guide/upgrade/${g.landing}`}; + return cat; +} + +function regroupAdminUpgrade(upgradeCat) { + const leafLabels = collectLeafLabels(upgradeCat); + const items = ADMIN_UPGRADE_ORDER.map((spec) => buildAdminUpgradeItem(spec, leafLabels)); + + const known = new Set(); + (function walk(n) { + if (Array.isArray(n)) n.forEach(walk); + else if (n && typeof n === 'object') { + if (n.type === 'doc' && n.id) known.add(n.id); + if (n.link && n.link.id) known.add(n.link.id); + if (n.items) walk(n.items); + } + })(items); + const hiddenIds = new Set(); + for (const h of ADMIN_UPGRADE_HIDDEN) hiddenIds.add(`administration-guide/upgrade/${h}`); + const orphans = []; + for (const id of Object.keys(leafLabels)) { + if (!known.has(id) && !hiddenIds.has(id)) orphans.push(id); } - if (!foundConfigure) { - console.warn('[sidebar] WARN: Administration Guide "Configure" sub-category not found — ADMIN_CONFIGURE_GROUPS override was not applied.'); + if (orphans.length > 0) { + console.warn(`[sidebar] WARN: ${orphans.length} Upgrade file(s) missing from ADMIN_UPGRADE_ORDER — falling through to root:`); + for (const id of orphans) console.warn(` - ${id}`); + for (const id of orphans) items.push({type: 'doc', id, label: leafLabels[id]}); } - if (!foundManage) { - console.warn('[sidebar] WARN: Administration Guide "Manage" sub-category not found — ADMIN_MANAGE_GROUPS override was not applied.'); + + upgradeCat.items = items; + return upgradeCat; +} + +// Migration takes fully-qualified doc ids rather than basenames, so it needs +// no section prefix and reads labels straight off each file. +function buildAdminMigrationItem(spec) { + if (typeof spec === 'string') { + return {type: 'doc', id: spec, label: docLabelById(spec)}; } - if (!foundOnboard) { - console.warn('[sidebar] WARN: Administration Guide "Onboard" sub-category not found — ADMIN_ONBOARD_GROUPS override was not applied.'); + if (spec.doc) { + return {type: 'doc', id: spec.doc, label: spec.label || docLabelById(spec.doc)}; } - if (!foundScale) { - console.warn('[sidebar] WARN: Administration Guide "Scale" sub-category not found — ADMIN_SCALE_GROUPS override was not applied.'); + return buildAdminMigrationGroup(spec); +} + +function buildAdminMigrationGroup(g) { + const items = g.items.map(buildAdminMigrationItem); + const cat = {type: 'category', label: g.label, collapsed: true, items}; + if (g.landing) cat.link = {type: 'doc', id: g.landing}; + return cat; +} + +function buildAdminGuideSidebar(autoCat) { + const regroupers = { + configure: regroupAdminConfigure, + manage: regroupAdminManage, + onboard: regroupAdminOnboard, + scale: regroupAdminScale, + comply: regroupAdminComply, + upgrade: regroupAdminUpgrade, + }; + const found = new Set(); + for (const it of autoCat.items) { + if (it.type !== 'category') continue; + const dirName = categoryDirName(it); + const regroup = regroupers[dirName]; + if (!regroup) continue; + regroup(it); + found.add(dirName); + } + for (const dirName of Object.keys(regroupers)) { + if (!found.has(dirName)) { + console.warn(`[sidebar] WARN: Administration Guide "${dirName}" sub-category not found — its ordering override was not applied.`); + } } + autoCat.items.push(buildAdminMigrationGroup(ADMIN_MIGRATION)); + orderRootCategories(autoCat, ADMIN_ROOT_ORDER, 'Administration Guide'); return autoCat; } @@ -1561,9 +1810,7 @@ function buildCollaborateItem(spec, leafLabels) { return {type: 'doc', id, label: leafLabels[id] || humanize(spec)}; } if (spec.items) { - // Inline subgroup (no COLLABORATE_GROUPS lookup) — mirrors - // buildAdminManageItem/buildAdminManageGroup, so a group's items can - // nest a further {label, items} sub-group for a 4th nesting level. + // Inline sub-group, no COLLABORATE_GROUPS lookup. return buildCollaborateGroup(spec, leafLabels); } const g = COLLABORATE_GROUPS[spec.group]; @@ -1578,9 +1825,6 @@ function buildCollaborateGroup(g, leafLabels) { return cat; } -// Replace the auto-generated "Collaborate" sub-category's items (in place, -// preserving its position among End User Guide's other sub-categories) with -// the manual grouping above — same pattern as regroupAdminConfigure/Manage. function regroupCollaborate(collaborateCat) { const leafLabels = collectLeafLabels(collaborateCat); const items = COLLABORATE_ORDER.map((spec) => buildCollaborateItem(spec, leafLabels)); @@ -1671,22 +1915,67 @@ function buildIntegrationsSidebar(autoCat) { } // --------------------------------------------------------------------------- -// End User Guide — builder. Two independent overrides on top of the -// otherwise filesystem-driven auto-generated sidebar: -// 1. Nests the Agents plugin's usage-tips page under the existing "AI -// Agents" doc, the same way Configure nests Agents' admin-side pages -// (see ADMIN_CONFIGURE_GROUPS.agents above) — a narrow, targeted -// promotion rather than a full manual-grouping override. -// 2. Regroups the "Collaborate" sub-category (49 files) into the topic -// groups defined in COLLABORATE_GROUPS above, the same -// manual-grouping-override pattern used for Administration Guide's -// Configure/Manage/Onboard/Scale sections. +// Security Guide — builder. +// --------------------------------------------------------------------------- + +function buildSecurityItem(spec, leafLabels) { + if (typeof spec === 'string') { + const id = `security-guide/${spec}`; + return {type: 'doc', id, label: leafLabels[id] || humanize(spec)}; + } + if (spec.group) { + const g = SECURITY_GROUPS[spec.group]; + if (!g) throw new Error(`unknown security group: ${spec.group}`); + return buildSecurityGroup(g, leafLabels); + } + return buildSecurityGroup(spec, leafLabels); +} + +function buildSecurityGroup(g, leafLabels) { + const items = g.items.map((it) => buildSecurityItem(it, leafLabels)); + const cat = {type: 'category', label: g.label, collapsed: true, items}; + if (g.landing) cat.link = {type: 'doc', id: `security-guide/${g.landing}`}; + return cat; +} + +function buildSecuritySidebar(autoCat) { + const leafLabels = collectLeafLabels(autoCat); + const items = SECURITY_ROOT_ORDER.map((spec) => buildSecurityItem(spec, leafLabels)); + + const known = new Set(); + (function walk(n) { + if (Array.isArray(n)) n.forEach(walk); + else if (n && typeof n === 'object') { + if (n.type === 'doc' && n.id) known.add(n.id); + if (n.link && n.link.id) known.add(n.link.id); + if (n.items) walk(n.items); + } + })(items); + const hiddenIds = new Set(); + for (const h of SECURITY_HIDDEN) hiddenIds.add(`security-guide/${h}`); + const orphans = []; + for (const id of Object.keys(leafLabels)) { + if (!known.has(id) && !hiddenIds.has(id) && id !== 'security-guide/security-guide-index') { + orphans.push(id); + } + } + if (orphans.length > 0) { + console.warn(`[sidebar] WARN: ${orphans.length} Security Guide file(s) missing from SECURITY_ROOT_ORDER — falling through to root:`); + for (const id of orphans) console.warn(` - ${id}`); + for (const id of orphans) items.push({type: 'doc', id, label: leafLabels[id]}); + } + + autoCat.items = items; + return autoCat; +} + +// --------------------------------------------------------------------------- +// End User Guide — builder. // --------------------------------------------------------------------------- -// Finds the {type: 'doc', id: docId} leaf anywhere in `items` and replaces -// it in place with a category that links to that same doc and nests -// `children` (each a fully-qualified doc id) underneath it. Returns true if -// the promotion was applied, so callers can warn when it wasn't. +// Replaces the `docId` leaf anywhere in `items` with a category that links to +// that same doc and nests `children` (doc ids, or {doc, label} pairs) under it. +// Returns false if the leaf wasn't found, so callers can warn. function promoteDocToCategory(items, docId, children) { for (let i = 0; i < items.length; i++) { const it = items[i]; @@ -1696,7 +1985,11 @@ function promoteDocToCategory(items, docId, children) { label: it.label, collapsed: true, link: {type: 'doc', id: docId}, - items: children.map((childId) => ({type: 'doc', id: childId, label: docLabelById(childId)})), + items: children.map((child) => { + const id = typeof child === 'string' ? child : child.doc; + const label = (typeof child === 'string' ? null : child.label) || docLabelById(id); + return {type: 'doc', id, label}; + }), }; return true; } @@ -1707,23 +2000,77 @@ function promoteDocToCategory(items, docId, children) { return false; } +function regroupEndUserSection(sectionCat, dirName, override) { + const leafLabels = collectLeafLabels(sectionCat); + const prefix = `end-user-guide/${dirName}/`; + + function buildItem(spec) { + if (typeof spec === 'string') { + const id = prefix + spec; + return {type: 'doc', id, label: leafLabels[id] || humanize(spec)}; + } + const cat = {type: 'category', label: spec.label, collapsed: true, items: spec.items.map(buildItem)}; + if (spec.landing) cat.link = {type: 'doc', id: prefix + spec.landing}; + return cat; + } + + const items = override.order.map(buildItem); + if (override.label) sectionCat.label = override.label; + if (override.landing) sectionCat.link = {type: 'doc', id: prefix + override.landing}; + + const known = new Set(); + (function walk(n) { + if (Array.isArray(n)) n.forEach(walk); + else if (n && typeof n === 'object') { + if (n.type === 'doc' && n.id) known.add(n.id); + if (n.link && n.link.id) known.add(n.link.id); + if (n.items) walk(n.items); + } + })([...items, sectionCat.link].filter(Boolean)); + const orphans = Object.keys(leafLabels).filter((id) => !known.has(id)); + if (orphans.length > 0) { + console.warn(`[sidebar] WARN: ${orphans.length} ${dirName} file(s) missing from ENDUSER_SECTION_OVERRIDES — falling through to the end of the section:`); + for (const id of orphans) console.warn(` - ${id}`); + for (const id of orphans) items.push({type: 'doc', id, label: leafLabels[id]}); + } + + sectionCat.items = items; + return sectionCat; +} + function buildEndUserGuideSidebar(autoCat) { - const promoted = promoteDocToCategory(autoCat.items, 'end-user-guide/agents', ['agents/docs/usage_tips']); + // usage_tips' label is overridden here because agents/docs/ is staged from + // the plugin submodule and gitignored, so its frontmatter title can't be + // corrected in this repo. + const promoted = promoteDocToCategory(autoCat.items, 'end-user-guide/agents', [ + {doc: 'agents/docs/usage_tips', label: 'Agents usage tips and best practices'}, + 'end-user-guide/collaborate/agents-context-management', + ]); if (!promoted) { - console.warn('[sidebar] WARN: End User Guide "agents" doc not found — Agents usage-tips nesting was not applied.'); + console.warn('[sidebar] WARN: End User Guide "agents" doc not found — Agents child pages were not nested.'); } let foundCollaborate = false; + const foundSections = new Set(); for (const it of autoCat.items) { if (it.type !== 'category') continue; - if (categoryDirName(it) === 'collaborate') { + const dirName = categoryDirName(it); + if (dirName === 'collaborate') { regroupCollaborate(it); foundCollaborate = true; + } else if (ENDUSER_SECTION_OVERRIDES[dirName]) { + regroupEndUserSection(it, dirName, ENDUSER_SECTION_OVERRIDES[dirName]); + foundSections.add(dirName); } } if (!foundCollaborate) { console.warn('[sidebar] WARN: End User Guide "Collaborate" sub-category not found — COLLABORATE_GROUPS override was not applied.'); } + for (const dirName of Object.keys(ENDUSER_SECTION_OVERRIDES)) { + if (!foundSections.has(dirName)) { + console.warn(`[sidebar] WARN: End User Guide "${dirName}" sub-category not found — its ordering override was not applied.`); + } + } orderRootCategories(autoCat, ENDUSER_ROOT_ORDER, 'End User Guide'); return autoCat; @@ -1754,8 +2101,8 @@ function main() { cat = buildEndUserGuideSidebar(cat); } else if (dir === 'integrations-guide') { cat = buildIntegrationsSidebar(cat); - } else if (dir === 'end-user-guide') { - cat = buildEndUserGuideSidebar(cat); + } else if (dir === 'security-guide') { + cat = buildSecuritySidebar(cat); } sidebar.push(cat); } diff --git a/docs/site/sidebars/active-redirects.json b/docs/site/sidebars/active-redirects.json index 6b5060337873..d740f1080d74 100644 --- a/docs/site/sidebars/active-redirects.json +++ b/docs/site/sidebars/active-redirects.json @@ -1,24 +1,14 @@ { "_meta": { - "source": "docs-site/scripts/migrate-main-docs/redirects.json", - "active": 698, - "missing_target": 217, - "dropped_anchored_from": 1113, - "total_internal": 2021 + "maintained": "by hand", + "note": "Legacy Sphinx URL redirects, originally bulk-extracted during the docs migration. Add new entries at the end of the array. `from` must be unique and must not contain an anchor; `to` should point at a page that exists, or the redirect silently dead-ends.", + "active": 741 }, "redirects": [ { "from": "/about/accessibility-compliance-policy", "to": "/product-overview/accessibility-compliance-policy" }, - { - "from": "/about/cloud-supported-integrations", - "to": "/product-overview/cloud-supported-integrations" - }, - { - "from": "/about/common-esr-support-rst", - "to": "/product-overview/common-esr-support-rst" - }, { "from": "/about/desktop", "to": "/product-overview/desktop" @@ -47,17 +37,9 @@ "from": "/about/cloud-vpc-private-connectivity", "to": "/product-overview/cloud-vpc-private-connectivity" }, - { - "from": "/about/common-esr-support-upgrade", - "to": "/product-overview/common-esr-support-upgrade" - }, - { - "from": "/about/common-esr-support", - "to": "/product-overview/common-esr-support" - }, { "from": "/about/corporate-directory-integration", - "to": "/product-overview/corporate-directory-integration" + "to": "/administration-guide/onboard/corporate-directory-integration" }, { "from": "/about/deprecated-features", @@ -181,7 +163,7 @@ }, { "from": "/about/security/dependency-vulnerability-analysis", - "to": "/security-guide/dependency-vulnerability-analysis" + "to": "/security-guide/security-guide-index" }, { "from": "/about/security/mobile-security", @@ -433,7 +415,11 @@ }, { "from": "/collaborate/view-system-information", - "to": "/end-user-guide/collaborate/view-system-information" + "to": "/end-user-guide/view-system-information" + }, + { + "from": "/end-user-guide/collaborate/view-system-information", + "to": "/end-user-guide/view-system-information" }, { "from": "/administration/announcement-banner", @@ -929,7 +915,7 @@ }, { "from": "/deploy/manual-postgres-migration", - "to": "/deployment-guide/manual-postgres-migration" + "to": "/administration-guide/manage/admin/manual-postgres-migration" }, { "from": "/deploy/mobile-appconfig", @@ -993,11 +979,11 @@ }, { "from": "/deploy/postgres-migration-assist-tool", - "to": "/deployment-guide/postgres-migration-assist-tool" + "to": "/administration-guide/manage/admin/postgres-migration-assist-tool" }, { "from": "/deploy/postgres-migration", - "to": "/deployment-guide/postgres-migration" + "to": "/administration-guide/manage/admin/postgres-migration" }, { "from": "/deploy/quick-start-evaluation", @@ -1041,7 +1027,7 @@ }, { "from": "/deploy/server/orchestration", - "to": "/deployment-guide/server/orchestration" + "to": "/get-help/deployment-solution-programs" }, { "from": "/deploy/server/prepare-mattermost-mysql-database", @@ -1057,7 +1043,7 @@ }, { "from": "/deploy/server/trouble-postgres", - "to": "/deployment-guide/server/trouble-postgres" + "to": "/deployment-guide/server/prepare-database" }, { "from": "/deploy/server/trouble_mysql", @@ -1153,11 +1139,11 @@ }, { "from": "/deployment/elasticsearch", - "to": "/deployment-guide/reference-architecture/scale/elasticsearch-setup" + "to": "/deployment-guide/scale/elasticsearch-setup" }, { "from": "/deployment/enterprise-deployment-guide", - "to": "/deployment-guide/reference-architecture/scale/scaling-for-enterprise" + "to": "/deployment-guide/scale/scaling-for-enterprise" }, { "from": "/deployment/guest-accounts", @@ -1165,7 +1151,7 @@ }, { "from": "/deployment/ha", - "to": "/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment" + "to": "/deployment-guide/server/high-availability-cluster-based-deployment" }, { "from": "/deployment/metrics", @@ -1185,7 +1171,7 @@ }, { "from": "/deployment/scaling", - "to": "/deployment-guide/reference-architecture/scale/scaling-for-enterprise" + "to": "/deployment-guide/scale/scaling-for-enterprise" }, { "from": "/deployment/sso-ldap", @@ -1469,7 +1455,7 @@ }, { "from": "/install/trouble-postgres", - "to": "/deployment-guide/server/trouble-postgres" + "to": "/deployment-guide/server/prepare-database" }, { "from": "/install/trouble_mysql", @@ -1857,7 +1843,7 @@ }, { "from": "/manage/admin/server-configuration", - "to": "/administration-guide/manage/admin/server-configuration" + "to": "/administration-guide/configure/configure-index" }, { "from": "/manage/admin/server-maintenance", @@ -1873,7 +1859,7 @@ }, { "from": "/manage/admin/user-provisioning", - "to": "/administration-guide/manage/admin/user-provisioning" + "to": "/administration-guide/onboard/onboard-index" }, { "from": "/manage/cloud-byok", @@ -2107,10 +2093,6 @@ "from": "/onboard/certificate-based-authentication", "to": "/administration-guide/onboard/certificate-based-authentication" }, - { - "from": "/onboard/common-converting-oauth-to-openidconnect", - "to": "/administration-guide/onboard/common-converting-oauth-to-openidconnect" - }, { "from": "/onboard/connected-workspaces", "to": "/administration-guide/onboard/connected-workspaces" @@ -2233,7 +2215,7 @@ }, { "from": "/overview/auth", - "to": "/product-overview/corporate-directory-integration" + "to": "/administration-guide/onboard/corporate-directory-integration" }, { "from": "/overview/authentication", @@ -2417,7 +2399,7 @@ }, { "from": "/scale/additional-ha-considerations", - "to": "/deployment-guide/reference-architecture/scale/additional-ha-considerations" + "to": "/deployment-guide/scale/additional-ha-considerations" }, { "from": "/scale/collect-performance-metrics", @@ -2425,7 +2407,7 @@ }, { "from": "/scale/common-configure-mattermost-for-enterprise-search", - "to": "/deployment-guide/reference-architecture/scale/common-configure-mattermost-for-enterprise-search" + "to": "/deployment-guide/scale/common-configure-mattermost-for-enterprise-search" }, { "from": "/scale/deploy-prometheus-grafana-for-performance-monitoring", @@ -2433,7 +2415,7 @@ }, { "from": "/scale/elasticsearch-setup", - "to": "/deployment-guide/reference-architecture/scale/elasticsearch-setup" + "to": "/deployment-guide/scale/elasticsearch-setup" }, { "from": "/scale/ensuring-releases-perform-at-scale", @@ -2441,23 +2423,23 @@ }, { "from": "/scale/enterprise-search", - "to": "/deployment-guide/reference-architecture/scale/enterprise-search" + "to": "/deployment-guide/scale/enterprise-search" }, { "from": "/scale/estimated-storage-per-user-per-month", - "to": "/deployment-guide/reference-architecture/scale/estimated-storage-per-user-per-month" + "to": "/deployment-guide/scale/estimated-storage-per-user-per-month" }, { "from": "/scale/high-availability-cluster-based-deployment", - "to": "/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment" + "to": "/deployment-guide/server/high-availability-cluster-based-deployment" }, { "from": "/scale/lifetime-storage", - "to": "/deployment-guide/reference-architecture/scale/lifetime-storage" + "to": "/deployment-guide/scale/lifetime-storage" }, { "from": "/scale/opensearch-setup", - "to": "/deployment-guide/reference-architecture/scale/opensearch-setup" + "to": "/deployment-guide/scale/opensearch-setup" }, { "from": "/scale/performance-alerting", @@ -2477,79 +2459,79 @@ }, { "from": "/scale/redis", - "to": "/deployment-guide/reference-architecture/scale/redis" + "to": "/deployment-guide/scale/redis" }, { "from": "/scale/scale-to-100000-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-100000-users" + "to": "/deployment-guide/scale/scale-to-100000-users" }, { "from": "/scale/scale-to-15000-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-15000-users" + "to": "/deployment-guide/scale/scale-to-15000-users" }, { "from": "/scale/scale-to-200-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-200-users" + "to": "/deployment-guide/scale/scale-to-200-users" }, { "from": "/scale/scale-to-2000-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-2000-users" + "to": "/deployment-guide/scale/scale-to-2000-users" }, { "from": "/scale/scale-to-200000-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-200000-users" + "to": "/deployment-guide/scale/scale-to-200000-users" }, { "from": "/scale/scale-to-30000-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-30000-users" + "to": "/deployment-guide/scale/scale-to-30000-users" }, { "from": "/scale/scale-to-50000-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-50000-users" + "to": "/deployment-guide/scale/scale-to-50000-users" }, { "from": "/scale/scale-to-80000-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-80000-users" + "to": "/deployment-guide/scale/scale-to-80000-users" }, { "from": "/scale/scale-to-90000-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-90000-users" + "to": "/deployment-guide/scale/scale-to-90000-users" }, { "from": "/scale/scaling-for-enterprise", - "to": "/deployment-guide/reference-architecture/scale/scaling-for-enterprise" + "to": "/deployment-guide/scale/scaling-for-enterprise" }, { "from": "/scale/high-availability-cluster", - "to": "/deployment-guide/reference-architecture/scale/high-availability-cluster-based-deployment" + "to": "/deployment-guide/server/high-availability-cluster-based-deployment" }, { "from": "/scale/scale-to-100-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-200-users" + "to": "/deployment-guide/scale/scale-to-200-users" }, { "from": "/scale/scale-to-1000-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-2000-users" + "to": "/deployment-guide/scale/scale-to-2000-users" }, { "from": "/scale/scale-to-25000-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-30000-users" + "to": "/deployment-guide/scale/scale-to-30000-users" }, { "from": "/scale/scale-to-70000-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-80000-users" + "to": "/deployment-guide/scale/scale-to-80000-users" }, { "from": "/scale/scale-to-79000-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-80000-users" + "to": "/deployment-guide/scale/scale-to-80000-users" }, { "from": "/scale/scale-to-88000-users", - "to": "/deployment-guide/reference-architecture/scale/scale-to-90000-users" + "to": "/deployment-guide/scale/scale-to-90000-users" }, { "from": "/scale/elasticsearch", - "to": "/deployment-guide/reference-architecture/scale/elasticsearch-setup" + "to": "/deployment-guide/scale/elasticsearch-setup" }, { "from": "/guides/agents", @@ -2565,7 +2547,7 @@ }, { "from": "/guides/deployment-troubleshooting", - "to": "/deployment-guide/deployment-troubleshooting" + "to": "/deployment-guide/server/troubleshooting" }, { "from": "/guides/messaging-collaboration", @@ -2830,6 +2812,162 @@ { "from": "/administration-guide/configure/calls-metrics-monitoring", "to": "/deployment-guide/calls/calls-metrics-monitoring" + }, + { + "from": "/deployment-guide/reference-architecture/application-architecture", + "to": "/deployment-guide/application-architecture" + }, + { + "from": "/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment", + "to": "/deployment-guide/deployment-scenarios/air-gapped-deployment" + }, + { + "from": "/deployment-guide/reference-architecture/deployment-scenarios/deploy-ddil-operations", + "to": "/deployment-guide/deployment-scenarios/deploy-ddil-operations" + }, + { + "from": "/deployment-guide/reference-architecture/deployment-scenarios/deploy-mission-partner", + "to": "/deployment-guide/deployment-scenarios/deploy-mission-partner" + }, + { + "from": "/deployment-guide/reference-architecture/deployment-scenarios/deploy-oob", + "to": "/deployment-guide/deployment-scenarios/deploy-oob" + }, + { + "from": "/deployment-guide/reference-architecture/deployment-scenarios/deploy-sovereign-collaboration", + "to": "/deployment-guide/deployment-scenarios/deploy-sovereign-collaboration" + }, + { + "from": "/deployment-guide/reference-architecture/deployment-scenarios/deployment-scenarios-index", + "to": "/deployment-guide/deployment-scenarios/deployment-scenarios-index" + }, + { + "from": "/deployment-guide/reference-architecture/reference-architecture-index", + "to": "/deployment-guide/deployment-scenarios/deployment-scenarios-index" + }, + { + "from": "/security-guide/dependency-vulnerability-analysis", + "to": "/security-guide/security-guide-index" + }, + { + "from": "/security-guide/compliance-frameworks", + "to": "/security-guide/security-guide-index" + }, + { + "from": "/security-guide/compliance-frameworks/disa-stig", + "to": "/security-guide/security-guide-index" + }, + { + "from": "/security-guide/compliance-frameworks/dod-il-4-5", + "to": "/security-guide/security-guide-index" + }, + { + "from": "/administration-guide/manage/admin/server-configuration", + "to": "/administration-guide/configure/configure-index" + }, + { + "from": "/administration-guide/manage/admin/user-provisioning", + "to": "/administration-guide/onboard/onboard-index" + }, + { + "from": "/administration-guide/scale/additional-ha-considerations", + "to": "/deployment-guide/scale/additional-ha-considerations" + }, + { + "from": "/administration-guide/scale/backing-storage-benchmarks", + "to": "/deployment-guide/scale/backing-storage-benchmarks" + }, + { + "from": "/administration-guide/scale/common-configure-mattermost-for-enterprise-search", + "to": "/deployment-guide/scale/common-configure-mattermost-for-enterprise-search" + }, + { + "from": "/administration-guide/scale/elasticsearch-setup", + "to": "/deployment-guide/scale/elasticsearch-setup" + }, + { + "from": "/administration-guide/scale/enterprise-search", + "to": "/deployment-guide/scale/enterprise-search" + }, + { + "from": "/administration-guide/scale/estimated-storage-per-user-per-month", + "to": "/deployment-guide/scale/estimated-storage-per-user-per-month" + }, + { + "from": "/administration-guide/scale/high-availability-cluster-based-deployment", + "to": "/deployment-guide/server/high-availability-cluster-based-deployment" + }, + { + "from": "/deployment-guide/scale/high-availability-cluster-based-deployment", + "to": "/deployment-guide/server/high-availability-cluster-based-deployment" + }, + { + "from": "/administration-guide/scale/lifetime-storage", + "to": "/deployment-guide/scale/lifetime-storage" + }, + { + "from": "/administration-guide/scale/opensearch-setup", + "to": "/deployment-guide/scale/opensearch-setup" + }, + { + "from": "/administration-guide/scale/redis", + "to": "/deployment-guide/scale/redis" + }, + { + "from": "/administration-guide/scale/scale-to-100000-users", + "to": "/deployment-guide/scale/scale-to-100000-users" + }, + { + "from": "/administration-guide/scale/scale-to-15000-users", + "to": "/deployment-guide/scale/scale-to-15000-users" + }, + { + "from": "/administration-guide/scale/scale-to-200-users", + "to": "/deployment-guide/scale/scale-to-200-users" + }, + { + "from": "/administration-guide/scale/scale-to-2000-users", + "to": "/deployment-guide/scale/scale-to-2000-users" + }, + { + "from": "/administration-guide/scale/scale-to-200000-users", + "to": "/deployment-guide/scale/scale-to-200000-users" + }, + { + "from": "/administration-guide/scale/scale-to-30000-users", + "to": "/deployment-guide/scale/scale-to-30000-users" + }, + { + "from": "/administration-guide/scale/scale-to-50000-users", + "to": "/deployment-guide/scale/scale-to-50000-users" + }, + { + "from": "/administration-guide/scale/scale-to-80000-users", + "to": "/deployment-guide/scale/scale-to-80000-users" + }, + { + "from": "/administration-guide/scale/scale-to-90000-users", + "to": "/deployment-guide/scale/scale-to-90000-users" + }, + { + "from": "/administration-guide/scale/scaling-for-enterprise", + "to": "/deployment-guide/scale/scaling-for-enterprise" + }, + { + "from": "/administration-guide/scale/server-architecture", + "to": "/deployment-guide/scale/server-architecture" + }, + { + "from": "/deployment-guide/server/orchestration", + "to": "/get-help/deployment-solution-programs" + }, + { + "from": "/deployment-guide/deployment-troubleshooting", + "to": "/deployment-guide/server/troubleshooting" + }, + { + "from": "/deployment-guide/server/trouble-postgres", + "to": "/deployment-guide/server/prepare-database" } ] } diff --git a/docs/site/src/components/IMEDiagram/index.tsx b/docs/site/src/components/IMEDiagram/index.tsx index ce4b25feeb2d..3f115b6f951c 100644 --- a/docs/site/src/components/IMEDiagram/index.tsx +++ b/docs/site/src/components/IMEDiagram/index.tsx @@ -236,7 +236,7 @@ export default function IMEDiagram() { availability.

- }> + }> Runs at the edge, in your data center, in sovereign clouds, and on global hyperscalers: Azure, AWS, Google Cloud, Oracle Cloud. }> diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/reactions_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/reactions_spec.js index e15c2b641ccf..73ca54ccbac2 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/reactions_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/reactions_spec.js @@ -20,6 +20,13 @@ describe('Messaging', () => { }); }); + // These tests share a page (testIsolation is off) and each one assumes the RHS is closed. A test + // that fails before its own uiCloseRHS() would otherwise leave it open over the center channel + // and take the rest of the file down with it, including its own retry. + beforeEach(() => { + cy.uiCloseRHS(); + }); + it('MM-T2189 Emoji reaction - type +:+1:', () => { // # Post a message cy.postMessage('Hello'); diff --git a/e2e-tests/cypress/tests/support/ui_commands.ts b/e2e-tests/cypress/tests/support/ui_commands.ts index f441c7a509fb..9e22b50d6713 100644 --- a/e2e-tests/cypress/tests/support/ui_commands.ts +++ b/e2e-tests/cypress/tests/support/ui_commands.ts @@ -562,11 +562,24 @@ Cypress.Commands.add('checkRunLDAPSync', checkRunLDAPSync); function clickEmojiInEmojiPicker(emojiName: string) { cy.get('#emojiPicker').should('exist').and('be.visible').within(() => { - // # Mouse over the emoji to get it selected - cy.findAllByTestId(emojiName).eq(0).trigger('mouseover', {force: true}); + // Re-hover each retry: recent/custom emoji loads re-render the picker and + // reset the cursor, and search results omit emoji_picker_preview until an + // emoji is hovered. Cypress.$ so a missing node returns false for waitUntil. + cy.waitUntil(() => { + const $emoji = Cypress.$('#emojiPicker').find(`[data-testid="${emojiName}"]`); + if ($emoji.length === 0) { + return false; + } - // * Verify that preview shows the emoji selected - cy.findAllByTestId('emoji_picker_preview').eq(0).should('exist').and('be.visible').contains(emojiName, {matchCase: false}); + return cy.wrap($emoji.eq(0)).trigger('mouseover', {force: true}).then(() => { + const previewText = Cypress.$('#emojiPicker').find('[data-testid="emoji_picker_preview"]').eq(0).text(); + return previewText.toLowerCase().includes(emojiName.toLowerCase()); + }); + }, { + timeout: TIMEOUTS.TEN_SEC, + interval: TIMEOUTS.HALF_SEC, + errorMsg: `Emoji picker preview never showed "${emojiName}"`, + }); // # Click on the emoji cy.findAllByTestId(emojiName).eq(0).click({force: true});