"
- 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
| password |
string |
- 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 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 |
@@ -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 (
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. |
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.

@@ -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:
-
-
-
-
-
-
-
-
-
-
-
-
-| Service Name |
-Config Setting |
-Port (default) |
-Protocol |
-Direction |
-Info |
-
-
-
-
-| HTTP/Websocket |
-ServiceSettings.ListenAddress |
-8065/80/443 (TLS) |
-TCP |
-Inbound |
-External (no proxy) / Internal (with proxy) Usually this requires port 80 and 443 when running HTTPS. |
-
-
- |
- |
- |
- |
- |
-
-
-| Cluster |
-ClusterSettings.GossipPort |
-8074 |
-TCP/UDP |
-Inbound |
-Internal |
-
-
-| Metrics |
-MetricsSettings.ListenAddress |
-8067 |
-TCP |
-Inbound |
-External (no proxy) / Internal (with proxy) |
-
-
-| Database |
-SqlSettings.DataSource |
-5432 (PostgreSQL) / 3306 (MySQL) |
-TCP |
-Outbound |
-Usually internal (recommended) |
-
-
-| LDAP |
-LdapSettings.LdapPort |
-389 |
-TCP/UDP |
-Outbound |
- |
-
-
-| S3 Storage |
-FileSettings.AmazonS3Endpoint |
-443 (TLS) |
-TCP |
-Outbound |
- |
-
-
-| SMTP |
-EmailSettings.SMTPPort |
-10025 |
-TCP/UDP |
-Outbound |
- |
-
-
-| Push Notifications |
-EmailSettings.PushNotificationServer |
-443 (TLS) |
-TCP |
-Outbound |
- |
-
-
-
-
-
-
-- 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 Name |
+Config Setting |
+Port (default) |
+Protocol |
+Direction |
+Info |
+
+
+
+
+| HTTP/Websocket |
+ServiceSettings.ListenAddress |
+8065/80/443 (TLS) |
+TCP |
+Inbound |
+External (no proxy) / Internal (with proxy) Usually this requires port 80 and 443 when running HTTPS. |
+
+
+| Cluster |
+ClusterSettings.GossipPort |
+8074 |
+TCP/UDP |
+Inbound |
+Internal |
+
+
+| Metrics |
+MetricsSettings.ListenAddress |
+8067 |
+TCP |
+Inbound |
+External (no proxy) / Internal (with proxy) |
+
+
+| Database |
+SqlSettings.DataSource |
+5432 (PostgreSQL) / 3306 (MySQL) |
+TCP |
+Outbound |
+Usually internal (recommended) |
+
+
+| LDAP |
+LdapSettings.LdapPort |
+389 |
+TCP/UDP |
+Outbound |
+ |
+
+
+| S3 Storage |
+FileSettings.AmazonS3Endpoint |
+443 (TLS) |
+TCP |
+Outbound |
+ |
+
+
+| SMTP |
+EmailSettings.SMTPPort |
+10025 |
+TCP/UDP |
+Outbound |
+ |
+
+
+| Push Notifications |
+EmailSettings.PushNotificationServer |
+443 (TLS) |
+TCP |
+Outbound |
+ |
+
+
+
+
+
+
+- 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 Version |
-Release Date |
-Minimum PostgreSQL Version |
-
-
-
-
-| v9.11 ESR |
-2024-8-15 |
-11.x |
-
-
-| v10.5 ESR |
-2025-2-15 |
-11.x |
-
-
-| v10.6 |
-2025-3-15 |
-13.x |
-
-
-| v10.11 ESR |
-2025-8-15 |
-13.x |
-
-
-v11.5 ESR * |
-2026-2-15 |
-14.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.

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.

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) |
> **App Marketplace** | Shows numbers about system performance when people use Mattermost. |
| [Mattermost User Survey](/administration-guide/configure/manage-user-surveys) |
> **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) |
> **App Marketplace** | Lets you start or join Microsoft Teams meetings directly from Mattermost. |
| [Microsoft Teams Sync](/integrations-guide/microsoft-teams-sync) |
> **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';
| }) | | | }) | v10.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. |
| }) | | | }) | v10.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 / Version |
-Vulnerability |
-False Positive Justification |
-
-
-
-
-| github.com/mattermost/ mattermost/server/v8 |
-Multiple CVE IDs |
-Mattermost 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.0 |
-GHSA-f6x5-jh6r-wrfv CVE-2025-47914 |
-Mattermost doesn't utilize the vulnerable golang.org/x/crypto/ssh package. Upgrade is planned for v11.4 |
-
-
-| golang.org/x/crypto v0.44.0 |
-GGHSA-j5w8-q4qc-rx2x CVE-2025-58181 |
-Mattermost 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});