diff --git a/docs/main/administration-guide/comply/embedded-json-audit-log-schema.mdx b/docs/main/administration-guide/comply/embedded-json-audit-log-schema.mdx index fde3d2bb64b4..a62ddd703da0 100644 --- a/docs/main/administration-guide/comply/embedded-json-audit-log-schema.mdx +++ b/docs/main/administration-guide/comply/embedded-json-audit-log-schema.mdx @@ -1829,7 +1829,7 @@ This comprehensive list includes all audit events captured by Mattermost across
Mattermost currently supports three log formats: plain, JSON, and | GELF. | | - Plain log format uses RFC3339 by default. | See the plain log format configuration documentation for supported options. | - JSON log format uses RFC3339 by default. | See the JSON log format configuration documentation for supported options. | | - GELF log format uses unixtime. | See the GELF log format configuration documentation for supported options. |
Mattermost currently supports three log formats: plain, JSON, and | GELF. | | - Plain log format uses RFC3339 by default. | See the plain log format configuration documentation for supported options. | - JSON log format uses RFC3339 by default. | See the JSON log format configuration documentation for supported options. | | - GELF log format uses unixtime. | See the GELF log format configuration documentation for supported options. |
icon to change the name of the Legal Hold, add or remove users, change the end date, as well as include or exclude public channels.
+Select the **Edit**
icon to change the name of the Legal Hold, add or remove users, change the end date, as well as include or exclude public channels.
##### Access a Legal Hold secret
A Legal Hold secret enables you to verify the authenticity of the data for a Legal Hold in Mattermost.
-Select the **Show** config.json setting: TeamSettings > RestrictCreationToDomains to true for the restriction to function. This setting only affects email login. | - Environment variable: MM_TEAMSETTINGS_RESTRICTCREATIONTODOMAINS |config.json setting: TeamSettings > RestrictCreationToDomains to true for the restriction to function. This setting only affects email login. | - Environment variable: MM_TEAMSETTINGS_RESTRICTCREATIONTODOMAINS |config.json setting: ServiceSettings > EnableMultifactorAuthentication > falseMM_SERVICESETTINGS_ENABLEMULTIFACTORAUTHENTICATION |config.json setting: ServiceSettings > EnableMultifactorAuthentication > falseMM_SERVICESETTINGS_ENABLEMULTIFACTORAUTHENTICATION |config.json setting: ServiceSettings > EnforceMultifactorAuthentication > falsefor users who sign-in with AD/LDAP or an email address. | - Environment variable: MM_SERVICESETTINGS_ENFORCEMULTIFACTORAUTHENTICATION | New users must set up MFA. Logged in users are redirected to the MFA | | setup page until configuration is complete. | |
config.json setting: ServiceSettings > EnforceMultifactorAuthentication > falsefor users who sign-in with AD/LDAP or an email address. | - Environment variable: MM_SERVICESETTINGS_ENFORCEMULTIFACTORAUTHENTICATION | New users must set up MFA. Logged in users are redirected to the MFA | | setup page until configuration is complete. | |
config.json setting: LdapSettings > GuestFilter |MM_LDAPSETTINGS_GUESTFILTERString input. | |
config.json setting: LdapSettings > GuestFilter |MM_LDAPSETTINGS_GUESTFILTERString input. | |
config.json setting: LdapSettings > FirstNameAttribute |MM_LDAPSETTINGS_FIRSTNAMEATTRIBUTE |When not set, users can edit their first name in their | | profile settings. | | | String input. | |
config.json setting: LdapSettings > FirstNameAttribute |MM_LDAPSETTINGS_FIRSTNAMEATTRIBUTE |When not set, users can edit their first name in their | | profile settings. | | | String input. | |
config.json setting: LdapSettings > LastNameAttribute |MM_LDAPSETTINGS_LASTNAMEATTRIBUTE |When not set, users can edit their last name as part of their | | profile settings. | | | | String input. | |
config.json setting: LdapSettings > LastNameAttribute |MM_LDAPSETTINGS_LASTNAMEATTRIBUTE |When not set, users can edit their last name as part of their | | profile settings. | | | | String input. | |
config.json setting: LdapSettings > NicknameAttribute |MM_LDAPSETTINGS_NICKNAMEATTRIBUTE |When not set, users can edit their nickname as part of their | | profile settings. | | | String input. | |
config.json setting: LdapSettings > NicknameAttribute |MM_LDAPSETTINGS_NICKNAMEATTRIBUTE |When not set, users can edit their nickname as part of their | | profile settings. | | | String input. | |
config.json setting: LdapSettings > PositionAttribute |MM_LDAPSETTINGS_POSITIONATTRIBUTE |When not set, users can edit their position as part of their | | profile settings. | | | String input. | |
config.json setting: LdapSettings > PositionAttribute |MM_LDAPSETTINGS_POSITIONATTRIBUTE |When not set, users can edit their position as part of their | | profile settings. | | | String input. | |
+
config.json setting: SamlSettings > Enable > false |MM_SAMLSETTINGS_ENABLE |config.json setting: SamlSettings > Enable > false |MM_SAMLSETTINGS_ENABLE |config.json setting: SamlSettings > GuestAttribute|MM_SAMLSETTINGS_GUESTATTRIBUTEString input. | |
config.json setting: SamlSettings > GuestAttribute|MM_SAMLSETTINGS_GUESTATTRIBUTEString input. | |
config.json setting: GoogleSettings > Enable > false|MM_GOOGLESETTINGS_ENABLE |See Google Single Sign-On implementation instructions. |
config.json setting: GoogleSettings > Enable > false|MM_GOOGLESETTINGS_ENABLE |See Google Single Sign-On implementation instructions. |
config.json setting: GoogleSettings > Id|MM_GOOGLESETTINGS_IDString input. | |
config.json setting: GoogleSettings > Id|MM_GOOGLESETTINGS_IDString input. | |
config.json setting: GoogleSettings > Enable > false |MM_GOOGLESETTINGS_ENABLE |See Google Single Sign-On implementation instructions. |
config.json setting: GoogleSettings > Enable > false |MM_GOOGLESETTINGS_ENABLE |See Google Single Sign-On implementation instructions. |
config.json setting: GoogleSettings > DiscoveryEndpoint |MM_GOOGLESETTINGS_DISCOVERYENDPOINTString input. Default is https://accounts.google.com/.well-known/openid-configuration | |
config.json setting: GoogleSettings > DiscoveryEndpoint |MM_GOOGLESETTINGS_DISCOVERYENDPOINTString input. Default is https://accounts.google.com/.well-known/openid-configuration | |
config.json setting: GoogleSettings > Id |MM_GOOGLESETTINGS_IDString input. | |
config.json setting: GoogleSettings > Id |MM_GOOGLESETTINGS_IDString input. | |
config.json setting: GoogleSettings > Secret|MM_GOOGLESETTINGS_SECRETString input. | |
config.json setting: GoogleSettings > Secret|MM_GOOGLESETTINGS_SECRETString input. | |
config.json setting: Office365Settings > Enable > false |MM_OFFICE365SETTINGS_ENABLE |See Entra ID Single Sign-On implementation instructions. |
config.json setting: Office365Settings > Enable > false |MM_OFFICE365SETTINGS_ENABLE |See Entra ID Single Sign-On implementation instructions. |
config.json setting: Office365Settings > DirectoryId |MM_OFFICE365SETTINGS_DIRECTORYIDString input. | |
config.json setting: Office365Settings > DirectoryId |MM_OFFICE365SETTINGS_DIRECTORYIDString input. | |
config.json setting: Office365Settings > DiscoveryEndpoint |MM_OFFICE365SETTINGS_DISCOVERYENDPOINTString input. Default is https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration | |
config.json setting: Office365Settings > DiscoveryEndpoint |MM_OFFICE365SETTINGS_DISCOVERYENDPOINTString input. Default is https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration | |
config.json setting: Office365Settings > Id |MM_OFFICE365SETTINGS_IDString input. | |
config.json setting: Office365Settings > Id |MM_OFFICE365SETTINGS_IDString input. | |
config.json setting: Office365Settings > Secret |MM_OFFICE365SETTINGS_SECRETString input. | |
config.json setting: Office365Settings > Secret |MM_OFFICE365SETTINGS_SECRETString input. | |
config.json setting: OpenIdSettings > Enable > false |MM_OPENIDSETTINGS_ENABLE |See OpenID Connect Single Sign-On implementation instructions. |
config.json setting: OpenIdSettings > Enable > false |MM_OPENIDSETTINGS_ENABLE |See OpenID Connect Single Sign-On implementation instructions. |
https://myopenid.provider.com/{my_organization}/ | -config.jsonsetting:OpenIdSettings>DiscoveryEndpoint| .well-known/openid-configuration. | - Environment variable: MM_OPENIDSETTINGS_DISCOVERYENDPOINT | | | See OpenID Connect Single Sign-On | implementation instructions. | | | | String input. | |https://myopenid.provider.com/{my_organization}/ | -config.jsonsetting:OpenIdSettings>DiscoveryEndpoint| .well-known/openid-configuration. | - Environment variable: MM_OPENIDSETTINGS_DISCOVERYENDPOINT | | | See OpenID Connect Single Sign-On | implementation instructions. | | | | String input. | |config.json setting: OpenIdSettings > Id |MM_OPENIDSETTINGS_IDString input. | |
config.json setting: OpenIdSettings > Id |MM_OPENIDSETTINGS_IDString input. | |
config.json setting: OpenIdSettings > Secret|MM_OPENIDSETTINGS_SECRETString input. | |
config.json setting: OpenIdSettings > Secret|MM_OPENIDSETTINGS_SECRETString input. | |
+
**When to use it**
- You are evaluating Calls for the first time.
@@ -189,7 +190,7 @@ The **Recording** service (`calls-offloader`) can optionally be added to an **In
Reference architecture when using the Recording service with Integrated Calls:
-
+
**Components**
- **Mattermost server**: Calls plugin is pre-installed.
@@ -204,7 +205,7 @@ Reference architecture when using the Recording service with Integrated Calls:
An **RTCD Server** is added as a dedicated media service that processes all call audio and screen sharing media.
-
+
The Mattermost server is still responsible for signaling (setting up, managing, and ending calls) and channel state (who is joining or leaving, who has muted, and overall call status), but the call media itself flows directly between clients and the RTCD server, completely bypassing the Mattermost server.
**When to use it**
@@ -231,7 +232,7 @@ The **Recording** service (`calls-offloader`) can optionally be added to an **RT
Reference architecture when using the Recording service with RTCD:
-
+
**Components**
- **Mattermost server**: Calls plugin is pre-installed.
diff --git a/docs/main/administration-guide/configure/cloud-billing-account-settings.mdx b/docs/main/administration-guide/configure/cloud-billing-account-settings.mdx
index 03f48ccf788c..a6c92739b74a 100644
--- a/docs/main/administration-guide/configure/cloud-billing-account-settings.mdx
+++ b/docs/main/administration-guide/configure/cloud-billing-account-settings.mdx
@@ -1,7 +1,9 @@
---
title: "Cloud workspace subscription, billing, and account settings"
---
-Review and manage the following aspects of your Mattermost cloud-based deployment by selecting the **Product**
+
config.json setting: SqlSettings > DisableDatabaseSearch > false | | - Environment variable: MM_SQLSETTINGS_DISABLEDATABASESEARCH | - true: Disables the use of the database to perform | | searches. If another search engine isn't configured, | | setting this value to true will result in empty search | | results. | | - false: (Default) Database search isn't disabled. | |config.json setting: SqlSettings > DisableDatabaseSearch > false | | - Environment variable: MM_SQLSETTINGS_DISABLEDATABASESEARCH | - true: Disables the use of the database to perform | | searches. If another search engine isn't configured, | | setting this value to true will result in empty search | | results. | | - false: (Default) Database search isn't disabled. | |config.json setting: FileSettings > MobileEnableSecureFilePreview > false | Allow file downloads on mobile | - Environment variable: MM_FILESETTINGS_MOBILEENABLESECUREFILEPREVIEW configuration setting is enabled. Allows in-app previews for PDFs, | | videos, and images only. Files are stored temporarily in the app's cache and cannot be exported or shared. | |config.json setting: FileSettings > MobileEnableSecureFilePreview > false | Allow file downloads on mobile | - Environment variable: MM_FILESETTINGS_MOBILEENABLESECUREFILEPREVIEW configuration setting is enabled. Allows in-app previews for PDFs, | | videos, and images only. Files are stored temporarily in the app's cache and cannot be exported or shared. | |Enables the ability to specify an alternate filestore target for Mattermost bulk exports and compliance exports.
ExportFileBackend() is generated under FileSettings using new configuration values for the following configuration settings:ExportDriverNameExportDirectoryExportAmazonS3AccessKeyIdExportAmazonS3SecretAccessKeyExportAmazonS3BucketExportAmazonS3PathPrefixExportAmazonS3RegionExportAmazonS3EndpointExportAmazonS3SSLExportAmazonS3SignV2ExportAmazonS3SSEExportAmazonS3TraceExportAmazonS3RequestTimeoutMillisecondsExportAmazonS3PresignExpiresSecondsExportAzureStorageAccountExportAzureAuthModeExportAzureAccessKeyExportAzureContainerExportAzurePathPrefixExportAzureCloudExportAzureEndpointExportAzureSSLExportAzureRequestTimeoutMillisecondsExportAzurePresignExpiresSecondsEnables the ability to specify an alternate filestore target for Mattermost bulk exports and compliance exports.
ExportFileBackend() is generated under FileSettings using new configuration values for the following configuration settings:ExportDriverNameExportDirectoryExportAmazonS3AccessKeyIdExportAmazonS3SecretAccessKeyExportAmazonS3BucketExportAmazonS3PathPrefixExportAmazonS3RegionExportAmazonS3EndpointExportAmazonS3SSLExportAmazonS3SignV2ExportAmazonS3SSEExportAmazonS3TraceExportAmazonS3RequestTimeoutMillisecondsExportAmazonS3PresignExpiresSecondsExportAzureStorageAccountExportAzureAuthModeExportAzureAccessKeyExportAzureContainerExportAzurePathPrefixExportAzureCloudExportAzureEndpointExportAzureSSLExportAzureRequestTimeoutMillisecondsExportAzurePresignExpiresSecondsconfig.json setting: FileSettings > DedicatedExportStoreMM_FILESETTINGS_DEDICATEDEXPORTSTOREYou're notified when updates are available. | See the Upgrade Mattermost product documentation for details on upgrading your workspace. |
+You're notified when updates are available. | See the Upgrade Mattermost product documentation for details on upgrading your workspace. |
config.json setting: TeamSettings > CustomBrandText as in Mattermost messages. | - Environment variable: MM_TEAMSETTINGS_CUSTOMBRANDTEXT | | | String input. Maximum 500 characters. Enable custom branding | | must be set to true to display the text. | |config.json setting: TeamSettings > CustomBrandText as in Mattermost messages. | - Environment variable: MM_TEAMSETTINGS_CUSTOMBRANDTEXT | | | String input. Maximum 500 characters. Enable custom branding | | must be set to true to display the text. | |5.10.0). Users connecting with a Desktop App version below this minimum are shown | - config.json setting: ServiceSettings > MinimumDesktopAppVersion | an update required screen and cannot use the application until they update. | - Environment variable: MM_SERVICESETTINGS_MINIMUMDESKTOPAPPVERSION | | | The update screen includes a download link configured via the | | Mattermost apps download page link setting. | | | Must be a valid semantic version (e.g., 5.0.0). Leave blank to allow all Desktop App | | versions to connect. | | | | String input. Default is empty (no minimum enforced). | |5.10.0). Users connecting with a Desktop App version below this minimum are shown | - config.json setting: ServiceSettings > MinimumDesktopAppVersion | an update required screen and cannot use the application until they update. | - Environment variable: MM_SERVICESETTINGS_MINIMUMDESKTOPAPPVERSION | | | The update screen includes a download link configured via the | | Mattermost apps download page link setting. | | | Must be a valid semantic version (e.g., 5.0.0). Leave blank to allow all Desktop App | | versions to connect. | | | | String input. Default is empty (no minimum enforced). | |config.json setting: TeamSettings > MaxUsersPerTeam > 50 | | - Environment variable: MM_TEAMSETTINGS_MAXUSERSPERTEAM | In Mattermost, a team of people should be a small organization with a | | specific goal. In the physical world, a team could sit around a single | | table. The default maximum (50) should be enough for most teams, but | | with appropriate hardware, this limit can be increased to | | thousands of users. | | | | Channels | are another way of organizing communications within teams on various topics. | | | | Numerical input. Default is 50 self-hosted deployments, and 10000 | | for Cloud deployments. | |config.json setting: TeamSettings > MaxUsersPerTeam > 50 | | - Environment variable: MM_TEAMSETTINGS_MAXUSERSPERTEAM | In Mattermost, a team of people should be a small organization with a | | specific goal. In the physical world, a team could sit around a single | | table. The default maximum (50) should be enough for most teams, but | | with appropriate hardware, this limit can be increased to | | thousands of users. | | | | Channels | are another way of organizing communications within teams on various topics. | | | | Numerical input. Default is 50 self-hosted deployments, and 10000 | | for Cloud deployments. | |MM_TEAMSETTINGS_TEAMMATENAMEDISPLAY | via the Lock teammate name display for all users configuration setting. | | | | - Show username: (Default for self-hosted deployments) Displays usernames. | | config.json option: "username". | | - Show nickname if one exists...: Displays the user's nickname. If the user doesn't have a | | nickname, their full name is displayed. If the user doesn't have a full name, their username | | is displayed. config.json option: "nickname_full_name". | | - Show first and last name: (Default for Cloud deployments) Displays user's full name. | | If the user doesn't have a full name, their username is displayed. Recommended when using | | SAML or | LDAP if first name and last name | attributes are configured. config.json option: "full_name". | |MM_TEAMSETTINGS_TEAMMATENAMEDISPLAY | via the Lock teammate name display for all users configuration setting. | | | | - Show username: (Default for self-hosted deployments) Displays usernames. | | config.json option: "username". | | - Show nickname if one exists...: Displays the user's nickname. If the user doesn't have a | | nickname, their full name is displayed. If the user doesn't have a full name, their username | | is displayed. config.json option: "nickname_full_name". | | - Show first and last name: (Default for Cloud deployments) Displays user's full name. | | If the user doesn't have a full name, their username is displayed. Recommended when using | | SAML or | LDAP if first name and last name | attributes are configured. config.json option: "full_name". | |This setting controls whether users who sign in with email and password can change their own profile fields under Settings > Profile. System admins are always exempt and can edit any user's profile through the System Console or the API. Users authenticating through an external provider (AD/LDAP, SAML, or OAuth) aren't affected; their fields remain governed by the provider's attribute settings.
config.json option: "none".config.json option: "name_and_username".config.json option: "all".Empty first and last names can be filled in once by the user, so people who join through a team invite link or open server signup aren't left without a name. Once set, the name is locked.
When this setting is enabled, anyone with the Invite Users permission can pre-set the first name, last name, and username for each email invitation they send. The invited person sees the pre-set username on the account creation page and cannot change it. We recommend restricting the Invite Users permission through advanced permissions to people trusted to enter this information correctly.
For a display name convention of "First Last" across the workspace, combine this setting with Teammate Name Display set to Show first and last name and Lock Teammate Name Display set to true.
This setting controls whether users who sign in with email and password can change their own profile fields under Settings > Profile. System admins are always exempt and can edit any user's profile through the System Console or the API. Users authenticating through an external provider (AD/LDAP, SAML, or OAuth) aren't affected; their fields remain governed by the provider's attribute settings.
config.json option: "none".config.json option: "name_and_username".config.json option: "all".Empty first and last names can be filled in once by the user, so people who join through a team invite link or open server signup aren't left without a name. Once set, the name is locked.
When this setting is enabled, anyone with the Invite Users permission can pre-set the first name, last name, and username for each email invitation they send. The invited person sees the pre-set username on the account creation page and cannot change it. We recommend restricting the Invite Users permission through advanced permissions to people trusted to enter this information correctly.
For a display name convention of "First Last" across the workspace, combine this setting with Teammate Name Display set to Show first and last name and Lock Teammate Name Display set to true.
config.json setting: TeamSettings > LockProfileFieldsForEmailUsers > noneMM_TEAMSETTINGS_LOCKPROFILEFIELDSFOREMAILUSERSconfig.json setting: ServiceSettings > CollapsedThreadson the server and for all users. This is the recommended configuration for optimal user experience | - Environment variable: MM_SERVICESETTINGS_COLLAPSEDTHREADS | and to ensure consistency in how users read and respond to threaded conversations. | | config.json setting: "always_on" | |
config.json setting: "disabled" | |config.json setting: ServiceSettings > CollapsedThreadson the server and for all users. This is the recommended configuration for optimal user experience | - Environment variable: MM_SERVICESETTINGS_COLLAPSEDTHREADS | and to ensure consistency in how users read and respond to threaded conversations. | | config.json setting: "always_on" | |
config.json setting: "disabled" | |config.json setting: ServiceSettings > EnablePermalinkPreviews > true |MM_SERVICESETTINGS_ENABLEPERMALINKPREVIEWS |config.json setting: ServiceSettings > EnablePermalinkPreviews > true |MM_SERVICESETTINGS_ENABLEPERMALINKPREVIEWS |config.json setting: ServiceSettings > EnableLatex > false|MM_SERVICESETTINGS_ENABLELATEX |config.json setting: ServiceSettings > EnableLatex > false|MM_SERVICESETTINGS_ENABLELATEX |config.json setting: ServiceSettings > EnableInlineLatex > falseMM_SERVICESETTINGS_ENABLEINLINELATEX | LaTeX can also be rendered in a code block, if that feature is enabled. See Enable LaTeX code block rendering. | |config.json setting: ServiceSettings > EnableInlineLatex > falseMM_SERVICESETTINGS_ENABLEINLINELATEX | LaTeX can also be rendered in a code block, if that feature is enabled. See Enable LaTeX code block rendering. | |config.json setting: FileSettings > MobileEnableSecureFilePreview > false | Allow file downloads on mobile | - Environment variable: MM_FILESETTINGS_MOBILEENABLESECUREFILEPREVIEW configuration setting is enabled. Allows in-app previews for PDFs, | | videos, and images only. Files are stored temporarily in the app's cache and cannot be exported or shared. | |config.json setting: FileSettings > MobileEnableSecureFilePreview > false | Allow file downloads on mobile | - Environment variable: MM_FILESETTINGS_MOBILEENABLESECUREFILEPREVIEW configuration setting is enabled. Allows in-app previews for PDFs, | | videos, and images only. Files are stored temporarily in the app's cache and cannot be exported or shared. | |config.json setting: FileSettings > EnablePublicLink > false |MM_FILESETTINGS_ENABLEPUBLICLINK |config.json setting: FileSettings > EnablePublicLink > false |MM_FILESETTINGS_ENABLEPUBLICLINK |config.json setting: AnnouncementSettings > AdminNoticesEnabled > true |MM_ANNOUNCEMENTSETTINGS_ADMINNOTICESENABLED |config.json setting: AnnouncementSettings > AdminNoticesEnabled > true |MM_ANNOUNCEMENTSETTINGS_ADMINNOTICESENABLED |config.json setting: AnnouncementSettings > UserNoticesEnabled > true |MM_ANNOUNCEMENTSETTINGS_USERNOTICESENABLED |config.json setting: AnnouncementSettings > UserNoticesEnabled > true |MM_ANNOUNCEMENTSETTINGS_USERNOTICESENABLED |
})

})

})

})
+
+
+
+
+
+
+
+
+
System Console statistics now perform faster on PostgreSQL. The MaxUsersForStatistics configuration setting now only disables the User counts with posts chart, while all other stats remain unaffected. The other stats remain unaffected because that configuration value is no longer needed to disable the other queries since they are always fast now. Post and file counts update daily, so they may not always reflect real-time data. Advanced stats, such as line charts and plugin data, are now hidden until clicked, reducing load time. No performance improvements apply to MySQL since it's scheduled for full deprecation in v11. We recommend migrating to PostgreSQL for better performance and long-term support. Migration times: On a system with 12M posts, and 1M fileinfo entries, the migration takes 15s, but could take several minutes depending on the server's table sizes and database specs. This migration is non-locking. Note that there is no migration for MySQL deployments because this optimization is only applicable for PostgreSQL. Below are the SQL queries included in the schema changes:
CREATE MATERIALIZED VIEW IF NOT EXISTS posts_by_team_day asSELECT to_timestamp(p.createat/1000)::date as day, COUNT(*) as num, teamidFROM posts p JOIN channels c on p.channelid=c.idGROUP BY day, c.teamid;CREATE MATERIALIZED VIEW IF NOT EXISTS bot_posts_by_team_day asSELECT to_timestamp(p.createat/1000)::date as day, COUNT(*) as num, teamidFROM posts pJOIN Bots b ON p.UserId = b.UseridJOIN channels c on p.channelid=c.idGROUP BY day, c.teamid;CREATE MATERIALIZED VIEW IF NOT EXISTS file_stats asSELECT COUNT(*) as num, COALESCE(SUM(Size), 0) as usageFROM fileinfoWHERE DeleteAt = 0;As part of the Property System Architecture feature, Mattermost v10.5 is going to run a set of migrations to add new tables to the schema. This migration only creates new tables and indexes, so there is no impact on preexisting data.
New tables PropertyGroups, PropertyFields and PropertyValues are going to be created.
In the case of PostgreSQL, a new enum type property_field_type is going to be created, to be used in the Type column of the PropertyFields table.
The PropertyFields and PropertyValues tables have a unique constraint that will generate an index in MySQL, and in the case of PostgreSQL, they directly use a UNIQUE INDEX to enforce this constraint.
A new index idx_propertyvalues_targetid_groupid will be created for the PropertyValues table.
The migration is only creating new tables with no data. The migration is backwards-compatible, and a previous version of Mattermost can run with the new schema changes. No table locks or existing operations on the table are impacted by this upgrade. Zero downtime is possible when upgrading to this release.
Below are the SQL queries included in the schema changes:
MySQL:
CREATE TABLE IF NOT EXISTS PropertyGroups ( ID varchar(26) PRIMARY KEY, Name varchar(64) NOT NULL, UNIQUE(Name));CREATE TABLE IF NOT EXISTS PropertyFields ( ID varchar(26) PRIMARY KEY, GroupID varchar(26) NOT NULL, Name varchar(255) NOT NULL, Type enum('text', 'select', 'multiselect', 'date', 'user', 'multiuser'), Attrs json, TargetID varchar(255), TargetType varchar(255), CreateAt bigint(20), UpdateAt bigint(20), DeleteAt bigint(20), UNIQUE(GroupID, TargetID, Name, DeleteAt));CREATE TABLE IF NOT EXISTS PropertyValues ( ID varchar(26) PRIMARY KEY, TargetID varchar(255) NOT NULL, TargetType varchar(255) NOT NULL, GroupID varchar(26) NOT NULL, FieldID varchar(26) NOT NULL, Value json, CreateAt bigint(20), UpdateAt bigint(20), DeleteAt bigint(20), UNIQUE(GroupID, TargetID, FieldID, DeleteAt));SET @preparedStatement = (SELECT IF( ( SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS WHERE table_name = 'PropertyValues' AND table_schema = DATABASE() AND index_name = 'idx_propertyvalues_targetid_groupid' ) > 0, 'SELECT 1', 'CREATE INDEX idx_propertyvalues_targetid_groupid ON PropertyValues (TargetID, GroupID);'));PREPARE createIndexIfNotExists FROM @preparedStatement;EXECUTE createIndexIfNotExists;DEALLOCATE PREPARE createIndexIfNotExists;PostgreSQL:
CREATE TABLE IF NOT EXISTS PropertyGroups ( ID varchar(26) PRIMARY KEY, Name varchar(64) NOT NULL, UNIQUE(Name));DOBEGIN IF NOT EXISTS (SELECT * FROM pg_type typ INNER JOIN pg_namespace nsp ON nsp.oid = typ.typnamespace WHERE nsp.nspname = current_schema() AND typ.typname = 'property_field_type') THEN CREATE TYPE property_field_type AS ENUM ( 'text', 'select', 'multiselect', 'date', 'user', 'multiuser' ); END IF;END;LANGUAGE plpgsql;CREATE TABLE IF NOT EXISTS PropertyFields ( ID varchar(26) PRIMARY KEY, GroupID varchar(26) NOT NULL, Name varchar(255) NOT NULL, Type property_field_type, Attrs jsonb, TargetID varchar(255), TargetType varchar(255), CreateAt bigint NOT NULL, UpdateAt bigint NOT NULL, DeleteAt bigint NOT NULL);CREATE UNIQUE INDEX IF NOT EXISTS idx_propertyfields_unique ON PropertyFields (GroupID, TargetID, Name) WHERE DeleteAt = 0;CREATE TABLE IF NOT EXISTS PropertyValues ( ID varchar(26) PRIMARY KEY, TargetID varchar(255) NOT NULL, TargetType varchar(255) NOT NULL, GroupID varchar(26) NOT NULL, FieldID varchar(26) NOT NULL, Value jsonb NOT NULL, CreateAt bigint NOT NULL, UpdateAt bigint NOT NULL, DeleteAt bigint NOT NULL);CREATE UNIQUE INDEX IF NOT EXISTS idx_propertyvalues_unique ON PropertyValues (GroupID, TargetID, FieldID) WHERE DeleteAt = 0;CREATE INDEX IF NOT EXISTS idx_propertyvalues_targetid_groupid ON PropertyValues (TargetID, GroupID); ``ElasticsearchSettings.Backend has been | added to differentiate between Elasticsearch and OpenSearch. The default value is elasticsearch which breaks support for AWS Elasticsearch v7.10.x | since the official v8 client only works from Elasticsearch v7.11+ versions. | | .. note:: | | - For AWS customers on OpenSearch, you must modify Mattermost configuration from elasticsearch to opensearch and disable compatibility mode. | See the OpenSearch documentation for details on upgrading. | - After upgrading the Mattermost server, use mmctl or edit the config manually, | then restart the Mattermost server. | - If you are using OpenSearch, you must set the backend to opensearch. Otherwise Mattermost will not work. | | If you are using Elasticsearch v8, be sure to set action.destructive_requires_name to false in elasticsearch.yml to allow for wildcard operations to | work. |ElasticsearchSettings.Backend has been | added to differentiate between Elasticsearch and OpenSearch. The default value is elasticsearch which breaks support for AWS Elasticsearch v7.10.x | since the official v8 client only works from Elasticsearch v7.11+ versions. | | .. note:: | | - For AWS customers on OpenSearch, you must modify Mattermost configuration from elasticsearch to opensearch and disable compatibility mode. | See the OpenSearch documentation for details on upgrading. | - After upgrading the Mattermost server, use mmctl or edit the config manually, | then restart the Mattermost server. | - If you are using OpenSearch, you must set the backend to opensearch. Otherwise Mattermost will not work. | | If you are using Elasticsearch v8, be sure to set action.destructive_requires_name to false in elasticsearch.yml to allow for wildcard operations to | work. |model.CommandArgs.Session.ServiceSettings.AllowCorsFrom | configuration setting. Also ensure that | the siteURL is set correctly. |ServiceSettings.AllowCorsFrom | configuration setting. Also ensure that | the siteURL is set correctly. |mattermost-server, mattermost-webapp and mmctl. Developers should read the updated Developer Guide for details.ServiceSettings.AllowCorsFrom | configuration setting. Also ensure that | the siteURL is set correctly. |ServiceSettings.AllowCorsFrom | configuration setting. Also ensure that | the siteURL is set correctly. |In v7.9.4, backported a fix related Oauth 2. Query times depend on if you have rows to delete or not.
With no rows to delete:
4 rows:
Those times are based off the following table sizes:
oauthaccessdata and sessions: 10 recordsYou can assess the number of impacted rows by running the following:
PostgreSQL:
SELECT count(o.*)FROM oauthaccessdata o WHERE NOT EXISTS ( SELECT p.* FROM preferences p WHERE o.clientid = p.name AND o.userid = p. userid AND p.category = 'oauth_app' );MySQL:
SELECT COUNT(o.`Token`)FROM OAuthAccessData oLEFT JOIN Preferences p ON o. clientid = p.name AND o.userid = p.userid AND p.category = 'oauth_app'INNER JOIN Sessions s ON o.token = s .tokenWHERE p.name IS NULL;Locks on the oauthaccessdata and sessions table will only be acquired if there are rows to delete.
ServiceSettings.AllowCorsFrom | configuration setting. Also ensure that | the siteURL is set correctly. |ServiceSettings.AllowCorsFrom | configuration setting. Also ensure that | the siteURL is set correctly. |PostPriority setting. |PostPriority setting. |In v7.8.5, backported a fix related Oauth 2. Query times depend on if you have rows to delete or not.
With no rows to delete:
4 rows:
Those times are based off the following table sizes:
oauthaccessdata and sessions: 10 recordsYou can assess the number of impacted rows by running the following:
PostgreSQL:
SELECT count(o.*) FROM oauthaccessdata o WHERE NOT EXISTS ( SELECT p.* FROM preferences p WHERE o.clientid = p.name AND o.userid = p. userid AND p.category = 'oauth_app' );MySQL:
SELECT COUNT(o.`Token`)FROM OAuthAccessData oLEFT JOIN Preferences p ON o. clientid = p.name AND o.userid = p.userid AND p.category = 'oauth_app'INNER JOIN Sessions s ON o.token = s .tokenWHERE p.name IS NULL;Locks on the oauthaccessdata and sessions table will only be acquired if there are rows to delete.
ServiceSettings.AllowCorsFrom | configuration setting. Also ensure that | the siteURL is set correctly. |ServiceSettings.AllowCorsFrom | configuration setting. Also ensure that | the siteURL is set correctly. |In v7.8.11, improved performance on data retention DeleteOrphanedRows queries.
New migration for a new table:
MySQL:
CREATE TABLEIF NOT EXISTS RetentionIdsForDeletion(Id VARCHAR(26) NOT NULL, TableName VARCHAR(64), Ids json, PRIMARY KEY (Id ), KEY idx_retentionidsfordeletion_tablename (TableName)) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4; ``PostgreSQL:
CREATE TABLEIF NOT EXISTS retentionidsfordeletion(id VARCHAR(26) PRIMARY KEY, tablename VARCHAR(64), ids VARCHAR(26) []); CREATE INDEXIF NOT EXISTS idx_retentionidsfordeletion_tablename ON retentionidsfordeletion( tablename); ``Hard deleting a user or a channel will now also clean up associated reactions.
Removed feature flag DataRetentionConcurrencyEnabled. Data retention now runs without concurrency in order to avoid any performance degradation.
Added a new configuration setting DataRetentionSettings.RetentionIdsBatchSize, which allows admins to configure how many batches of IDs will be fetched at a time when deleting orphaned reactions. The default value is 100.
PostPriority | setting. |PostPriority | setting. |false for self-hosted deployments.ServiceSettings.TrustedProxyIPHeader defaults to empty from now on. A previous bug prevented this from happening in certain conditions. | Customers are requested to check for these values in their config and set them to nil if necessary. See more details | here. |ServiceSettings.TrustedProxyIPHeader defaults to empty from now on. A previous bug prevented this from happening in certain conditions. | Customers are requested to check for these values in their config and set them to nil if necessary. See more details | here. |New schema changes were introduced in the form of a new index. The following summarizes the test results measuring how long it took for the database queries to run with these schema changes:
MySQL 7M Posts - ~17s (Instance: db.r5.xlarge)
MySQL 9M Posts - 2min 12s (Instance: db.r5.large)
Postgres 7M Posts - ~9s (Instance: db.r5.xlarge)
For customers wanting a zero downtime upgrade, they are encouraged to apply this index prior to doing the upgrade. This is fully backwards compatible and will not acquire any table lock or affect any existing operations on the table when run manually. Else, the queries will run during the upgrade process and will lock the table in non-MySQL environments. Run the following to apply this index:
For MySQL: CREATE INDEX idx_posts_create_at_id on Posts(CreateAt, Id) LOCK=NONE;
For Postgres: CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_posts_create_at_id on posts(createat, id);
ServiceSettings.TrustedProxyIPHeader defaults to empty from now on. A previous bug prevented this from happening in certain | conditions. Customers are requested to check for these values in their config and set them to nil if necessary. See more details | here. |ServiceSettings.TrustedProxyIPHeader defaults to empty from now on. A previous bug prevented this from happening in certain | conditions. Customers are requested to check for these values in their config and set them to nil if necessary. See more details | here. |call into separate submit, form, refresh and lookup calls. If any users have created their own Apps, they have to be updated to the new system.ServiceSettings.TrustedProxyIPHeader defaults to empty from now on. A previous bug prevented this from happening in certain | conditions. Customers are requested to check for these values in their config and set them to nil if necessary. See more details | here. |ServiceSettings.TrustedProxyIPHeader defaults to empty from now on. A previous bug prevented this from happening in certain | conditions. Customers are requested to check for these values in their config and set them to nil if necessary. See more details | here. |mattermost version CLI command does not interact with the database anymore. Therefore the database version is not going to be | printed. Also, the database migrations are not going to be applied with the version sub command. | A new db migrate sub command is added to enable administrators | to trigger migrations. |mattermost version CLI command does not interact with the database anymore. Therefore the database version is not going to be | printed. Also, the database migrations are not going to be applied with the version sub command. | A new db migrate sub command is added to enable administrators | to trigger migrations. |ServiceSettings.TrustedProxyIPHeader defaults to empty from now on. A previous bug prevented this from happening in certain | conditions. Customers are requested to check for these values in their config and set them to nil if necessary. See more details | here. |ServiceSettings.TrustedProxyIPHeader defaults to empty from now on. A previous bug prevented this from happening in certain | conditions. Customers are requested to check for these values in their config and set them to nil if necessary. See more details | here. |ThreadAutoFollow has been changed to false. This does not affect existing configurations where this value is already set to true.ServiceSettings.TrustedProxyIPHeader defaults to empty from now on. A previous bug prevented this from happening in certain | conditions. Customers are requested to check for these values in their config and set them to nil if necessary. See more details | here. |ServiceSettings.TrustedProxyIPHeader defaults to empty from now on. A previous bug prevented this from happening in certain | conditions. Customers are requested to check for these values in their config and set them to nil if necessary. See more details | here. |ThreadAutoFollow has been changed to false. This does not affect existing configurations where this value is already set to true.While trying to upgrade to a Mattermost version >= 6.0.x, you might encounter the following error: Failed to alter column type. It is likely you have invalid JSON values in the column. Please fix the values manually and run the migration again.
This means that the particular column has some invalid JSON values which need to be fixed manually. A common fix that is known to work is to wipe out all \u0000 characters.
Please follow these steps:
SELECT COUNT(*) FROM <table> WHERE <column> LIKE '%\u0000%';UPDATE <table> SET <column> = regexp_replace(<column>, '\\u0000', '', 'g') where <column> like '%\u0000%';Then try to start Mattermost again.
Some breaking changes to plugins are included:
platform binary and “--platform” flag have been removed. If you are using the “--platform” flag or are using the platform binary directly to run the Mattermost server application via a systemd file or custom script, you will be required to use only the mattermost binary.ThreadAutoFollow has been added to support Collapsed Reply Threads releasing in beta in Q1 2021. | This setting is enabled by default and may affect server performance. It is recommended to review our documentation on hardware requirements | to ensure your servers are appropriately scaled for the size of your user base. |ThreadAutoFollow has been added to support Collapsed Reply Threads releasing in beta in Q1 2021. | This setting is enabled by default and may affect server performance. It is recommended to review our documentation on hardware requirements | to ensure your servers are appropriately scaled for the size of your user base. |Now when the service crashes, it will generate a coredump instead of just dumping the stack trace to the console. This allows us to preserve the full information of the crash to help with debugging it.
For more information about coredumps, please see: https://man7.org/linux/man-pages/man5/core.5.html.
http://. Organizations using non-secure Mattermost Servers http:// will need to update to Mattermost Server versions 5.16.0+, 5.15.1, 5.14.4 or 5.9.5 (ESR) to continue receiving desktop notifications when using Mattermost Desktop v4.3.0 or later.GoogleSettings.Scope config.json setting is set to profile email and | UserAPIEndpoint setting should be set to https://people.googleapis.com/v1/people/me?personFields=names,emailAddresses,nicknames,metadata per | updated documentation. |GoogleSettings.Scope config.json setting is set to profile email and | UserAPIEndpoint setting should be set to https://people.googleapis.com/v1/people/me?personFields=names,emailAddresses,nicknames,metadata per | updated documentation. |SupportedTimezonesPath setting in config.json and changes to timezones in the UI based on the timezones.json file was removed. This was made to support | storing configurations in the database. |SupportedTimezonesPath setting in config.json and changes to timezones in the UI based on the timezones.json file was removed. This was made to support | storing configurations in the database. |DisableLegacyMfa setting in config.json is set to true and | multi-factor authentication is enabled, ensure your users have upgraded to mobile app | version 1.17 or later. Otherwise, users who have MFA enabled may not be able to log in successfully. | | If the setting is not defined in the config.json file, the DisableLegacyMfa setting is set to false by default to ensure no breaking changes. | | We recommend setting DisableLegacyMfa to true for additional security hardening. |DisableLegacyMfa setting in config.json is set to true and | multi-factor authentication is enabled, ensure your users have upgraded to mobile app | version 1.17 or later. Otherwise, users who have MFA enabled may not be able to log in successfully. | | If the setting is not defined in the config.json file, the DisableLegacyMfa setting is set to false by default to ensure no breaking changes. | | We recommend setting DisableLegacyMfa to true for additional security hardening. |AllowUntrustedInternalConnections setting. | See documentation for more details if you have trouble loading images. |AllowUntrustedInternalConnections setting. | See documentation for more details if you have trouble loading images. |This release includes support for post messages longer than the default of 4000 characters, but may require a manual database migration. This migration is entirely optional, and need only be done if you want to enable post messages up to 16383 characters. For many installations, no migration will be required, or the old limit remains sufficient.
To check your current post limit after upgrading to 5.0.0, look for a log message on startup:
[2018/03/27 09:08:00 EDT] [INFO] Post.Message supports at most 16383 characters (65535 bytes)
As of 5.0.0, the maximum post message size is 16383 (multi-byte) characters. If your logs show a number less than this limit and you want to enable longer post messages, you will need to manually migrate your database as described below. This migration can be slow for larger Posts tables, so it's best to schedule this upgrade during off-peak hours.
To migrate a MySQL database, connect to your database and run the following:
ALTER TABLE Posts MODIFY COLUMN Message TEXT;
To migrate a PostgreSQL database, connect to your database and run the following:
ALTER TABLE Posts ALTER COLUMN Message TYPE VARCHAR(65535);
Restart your Mattermost instances.
RunJobs in the config.json and allow the permissions migration to complete before using Team | Override Schemes. |RunJobs in the config.json and allow the permissions migration to complete before using Team | Override Schemes. |config.json setting PostEditTimeLimit has been updated to accommodate the migration to a roles based permission system. When post editing is permitted, set "PostEditTimeLimit": -1 to allow editing anytime, or set "PostEditTimeLimit" to a positive integer to restrict editing time in seconds. If post editing is disabled, this setting does not apply.config.json setting is set to true.If forwarding port 80 to 443, the server will fail to start with an error message unless the ListenAddress | config.json setting is set to listen on port 443. |
config.json setting is set to true.If forwarding port 80 to 443, the server will fail to start with an error message unless the ListenAddress | config.json setting is set to listen on port 443. |
config.json setting set to true to complete the Let's Encrypt certification. |config.json setting set to true to complete the Let's Encrypt certification. |application/json content-type to retain previous behavior./data/<date-of-upload-as-YYYYMMDD>/teams/... of your file storage system.You need to verify settings in the System Console due to a security-related change.
inAppPinCodefalsetrue | falseblurApplicationScreenfalsetrue | falsejailbreakDetectionfalsetrue | falsecopyAndPasteProtectionfalsetrue | falseserverUrlserverNameallowOtherServerstrue, users can connect to multiple servers that aren't specified in the server URL setting. If set to false, users can only connect to a single defined server.truetrue | falseusernameuseVPNfalsetrue | falsetimeoutVPNvendorinAppSessionAuthfalsetrue | false
+
3. Confirm push notifications are enabled for “Account A”.
-> 1. Go to the notification settings menu in the mobile app.
->
->
->
-> 2. Check that the mobile push notifications are set to send.
->
->
->
->
+ 1. Go to the notification settings menu in the mobile app.
+
+
+
+ 2. Check that the mobile push notifications are set to send.
+
+
+
+
4. Have “Account A” put the app to background or close the app.
5. Using a browser, log in to “Account B” on the same Mattermost Server.
diff --git a/docs/main/deployment-guide/reference-architecture/application-architecture.mdx b/docs/main/deployment-guide/reference-architecture/application-architecture.mdx
index 6ef6564de376..3975c01d6b96 100644
--- a/docs/main/deployment-guide/reference-architecture/application-architecture.mdx
+++ b/docs/main/deployment-guide/reference-architecture/application-architecture.mdx
@@ -1,9 +1,11 @@
---
title: "Application architecture"
---
+import useBaseUrl from '@docusaurus/useBaseUrl';
+
Mattermost is an open-source collaboration platform that offers secure messaging, file sharing, and integrations for team communication. It's self-hosted, providing IT admins full control over data, security, integrations, and customization. The platform is built with modular components to ensure scalability, flexibility, and extensibility.
-
+
**RESTful JSON Web Service**: Handles all incoming API requests (from web clients, apps, and integrations) and ensures that responses are formatted in JSON. Acts as the communication bridge between the clients (Access Layer) and backend systems. To ensure high availability, this layer can be distributed across multiple servers and load-balanced, preventing service disruptions due to high traffic or server failure.
@@ -109,7 +111,7 @@ If a WSS connection is not available and HTTPS is substituted, the system will a
High availability for WSS connections can be achieved through clustering Mattermost servers and load balancing WebSocket connections across those cluster nodes. Proxy servers and WebSocket-specific configurations (such as sticky sessions or connection persistence) are essential to maintain real-time interactivity during server or network failures.
-
+
By incorporating high availability strategies into communication protocols, the platform ensures secure, scalable, and reliable connections for both regular user interactions (via HTTPS) and real-time updates (via WSS). These measures are critical for mission-critical environments and distributed deployments where continuous communication is necessary.
diff --git a/docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-oob.mdx b/docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-oob.mdx
index 53d1a119bd22..c9439008fa3e 100644
--- a/docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-oob.mdx
+++ b/docs/main/deployment-guide/reference-architecture/deployment-scenarios/deploy-oob.mdx
@@ -1,6 +1,8 @@
---
title: "Deploy for Out-of-Band (OOB) Communications"
---
+import useBaseUrl from '@docusaurus/useBaseUrl';
+
When a critical incident disrupts an organization’s primary infrastructure—due to a cyberattack, cloud outage, or internal failure—a secure, independent communication channel becomes essential. Mattermost can serve as that channel by operating in an Out-of-Band (OOB) environment: isolated, pre-provisioned, and ready to support incident response and business continuity teams.
This document outlines architectural guidance for deploying Mattermost in an OOB scenario across [generic](#generic-oob-architecture), [AWS](#aws-based-oob-deployment), and [Azure](#azure-based-oob-deployment) environments.
@@ -9,7 +11,7 @@ This document outlines architectural guidance for deploying Mattermost in an OOB
This platform-agnostic design establishes a fallback communication system, decoupled from primary networks and identity providers.
-
+
### Architecture components
@@ -30,7 +32,7 @@ This platform-agnostic design establishes a fallback communication system, decou
Deploying Mattermost in AWS leverages managed services and strong isolation capabilities.
-
+
### AWS components
@@ -52,7 +54,7 @@ Deploying Mattermost in AWS leverages managed services and strong isolation capa
For Azure customers, AKS and related services provide a robust OOB platform for Mattermost.
-
+
### Azure components
diff --git a/docs/main/deployment-guide/server/deploy-linux.mdx b/docs/main/deployment-guide/server/deploy-linux.mdx
index de0fad8eabd9..f65bd8206ac4 100644
--- a/docs/main/deployment-guide/server/deploy-linux.mdx
+++ b/docs/main/deployment-guide/server/deploy-linux.mdx
@@ -49,9 +49,9 @@ Once Mattermost is running, complete these steps before exposing it to users:
- Review the [post-install configuration checklist](/deployment-guide/server/server-deployment-planning) under Server deployment planning.
:::tip Air-gapped environments
-If you're deploying into a network-isolated enclave, use the [Air-Gapped Quick-Start Runbook](/deployment-guide/air-gapped-operations/quick-start-runbook) instead of the connected install paths above. The runbook adds package mirroring, offline license activation, and the phone-home-disable inventory on top of the standard install.
+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
+:::note[Troubleshooting]
See [Deployment Troubleshooting](/deployment-guide/deployment-troubleshooting) for common install failures.
:::
diff --git a/docs/main/deployment-guide/server/linux/deploy-tar.mdx b/docs/main/deployment-guide/server/linux/deploy-tar.mdx
index df753bad81e7..33e320700e50 100644
--- a/docs/main/deployment-guide/server/linux/deploy-tar.mdx
+++ b/docs/main/deployment-guide/server/linux/deploy-tar.mdx
@@ -68,7 +68,7 @@ Enterprise and Team Edition releases are listed in the [version archive](/produc
--Mattermost Version | Release Date | Minimum PostgreSQL Version |
-
v9.11 ESR | 2024-8-15 | 11.x
-*
+
+>
2. Enter a channel name.
3. Choose whether this is a public or private channel. See the [channel types](/end-user-guide/collaborate/channel-types) documentation to learn more about public and private channels.
@@ -24,7 +25,7 @@ Anyone can create public channels, private channels, direct messages, and group
## Start a direct or group message
-1. Select the
-- `~~strikethrough~~` renders as
+- `***bold-italic***` renders as
+- `~~strikethrough~~` renders as
### Links
@@ -562,7 +563,7 @@ Example: An in-line image that's 50 pixels wide and 76 pixels high.
Renders as:
->
+>
>
-> Alternatively, you can select
+
To set the priority of a new root message:
-1. Select the **Message Priority**
+
-- An alert banner dislays on the **Scheduled** tab
+- A red badge displays a total scheduled post count in the left pane next to **Drafts**.
+- An alert banner displays on the **Scheduled** tab
-
+
+
+>
5. Tap **Done**.
@@ -86,11 +87,11 @@ Can't find your Mattermost server URL? Ask your company’s IT department or you
1. Swipe left on an existing server entry to reveal additional options. Tap **Edit**.
->
+>
2. Modify the server's display name or authentication secret, and then tap **Save**.
->
+>
>
> To view or update the authentication secret, expand the **Advanced Options** section. If a secret is currently configured, it will be pre-filled in the field.
@@ -114,11 +115,11 @@ Removing a server from your desktop app doesn't delete its data. You can add the
+
-- A dot badge for unread activity.
+- A numbered badge for unread [direct](/end-user-guide/collaborate/channel-types#direct-message-channels) [group](/end-user-guide/collaborate/channel-types#group-message-channels) messages, [@mentions](/end-user-guide/preferences/manage-your-mentions-keywords-notifications), and [keywords](/end-user-guide/preferences/manage-your-mentions-keywords-notifications) you're actively watching.
+- A dot badge for unread activity.
## Banner alerts
diff --git a/docs/main/end-user-guide/preferences/manage-your-display-options.mdx b/docs/main/end-user-guide/preferences/manage-your-display-options.mdx
index abb2cb35d64e..12ee89d5bda2 100644
--- a/docs/main/end-user-guide/preferences/manage-your-display-options.mdx
+++ b/docs/main/end-user-guide/preferences/manage-your-display-options.mdx
@@ -1,6 +1,7 @@
---
title: "Manage your display options"
---
+import useBaseUrl from '@docusaurus/useBaseUrl';
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
@@ -8,7 +9,7 @@ import TabItem from '@theme/TabItem';
You can customize Mattermost display options based on your preferences.
-- Using Mattermost in a web browser or the desktop app, select the gear icon
+
Notification Type
Icon badge (dot)

What it Means
You have unread activity in at least 1 channel you're a member of
Which Mattermost Clients? |
Icon badge (dot)
})
Icon badge (number)

Icon badge (number)
})
|
-
|
-+ | Security setting | +Description |
|---|---|---|---|---|
| + | Password | +You may change your password if you've logged in by email using Mattermost in a web browser or using the desktop app.
|
||
| Multi-factor authentication (MFA) | -If your system admin has enabled multi-factor authentication | (MFA), you can require a passcode in addition to your password to log-in to your Mattermost account. | | You'll need to download a MFA passcode generation app, such as Google Authenticator or a similar app, | and then set-up MFA in your Mattermost account. | | Download a passcode generation app | | - Download Google Authenticator for an Apple device from | iTunes | - Download Google Authenticator for an Android device from | Google Play | | Enable MFA in Mattermost | | 1. Open Mattermost in a web browser or the desktop app. | 2. In Mattermost, from your profile picture, select Profile > Security. | 3. Under Multi-factor Authentication, select Edit. | | .. image:: ../../images/multi-factor-authentication.png | :alt: Enable multi-factor authentication through your Mattermost user profile. | | 4. Select Add MFA to Account. | | .. image:: ../../images/add-mfa-to-account.png | :alt: Add multi-factor authentication to your Mattermost user profile. | | 5. Scan the QR code or enter the Secret provided by Mattermost into the authenticator app. | 6. In Mattermost, enter the MFA Code generated by the authenticator app. | 7. Select Save. | | +If your system admin has enabled multi-factor authentication (MFA), you can require a passcode in addition to your password to log-in to your Mattermost account. You'll need to download a MFA passcode generation app, such as Google Authenticator or a similar app, and then set-up MFA in your Mattermost account. Download a passcode generation app
Enable MFA in Mattermost
|
||
| Sign-in method | -This option allows you to switch your login method between using email/username and password and | single sign-on credentials. | | You can configure this setting using Mattermost in a web browser or using the desktop app. | | .. note:: | | While you can choose to log in with either set of credentials, you can only enable one login method | at a time. For example, if AD/LDAP single sign-on is enabled, you can select | Switch to using AD/LDAP, and enter your AD/LDAP credentials to switch login over to AD/LDAP. | You'll need to enter the password for your email account to verify your existing credentials. | Following the change, you'll receive an email to confirm the action. | | +This option allows you to switch your login method between using email/username and password and single sign-on credentials. You can configure this setting using Mattermost in a web browser or using the desktop app. While you can choose to log in with either set of credentials, you can only enable one login method at a time. For example, if AD/LDAP single sign-on is enabled, you can select Switch to using AD/LDAP, and enter your AD/LDAP credentials to switch login over to AD/LDAP. You'll need to enter the password for your email account to verify your existing credentials. Following the change, you'll receive an email to confirm the action. |
||
| View access history | Using Mattermost in a browser or using the desktop app, you can access a chronological list of the last 20 login and logout attempts, channel creations and deletions, account settings changes, or channel setting modifications made with your account. The details of the Session ID, which is a unique identifier for each Mattermost browser session, and IP Address of the action is recorded for audit log purposes. |
-|||
| View and log out of active sessions | Sessions are created when you log in with your credentials a new browser on a device. Sessions let you use Mattermost for up to 30 days without having to log in again. Using Mattermost in a browser or using the desktop app:
|
-|||
+
### What determines if an email notification should be triggered?
Email notifications are triggered under to following conditions. Click to expand the flow chart.
-
+
### What determines if a mobile push notification should be triggered?
Mobile push notifications are triggered under to following conditions. Click to expand the flow chart.
-
+
### Are mobile push notifications free?
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 64b45a1463ce..77254cb4e2c8 100644
--- a/docs/main/end-user-guide/project-management/boards-settings.mdx
+++ b/docs/main/end-user-guide/project-management/boards-settings.mdx
@@ -1,16 +1,18 @@
---
title: "Settings"
---
+import useBaseUrl from '@docusaurus/useBaseUrl';
+
located in the top right corner of that page.
## First-time contributor?
diff --git a/docs/main/integrations-guide/github.mdx b/docs/main/integrations-guide/github.mdx
index 574646d995f6..021feda8bda6 100644
--- a/docs/main/integrations-guide/github.mdx
+++ b/docs/main/integrations-guide/github.mdx
@@ -1,6 +1,7 @@
---
title: "Connect GitHub to Mattermost"
---
+import useBaseUrl from '@docusaurus/useBaseUrl';
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
@@ -16,7 +17,7 @@ A Mattermost system admin must perform the following steps to deploy the GitHub
### Install the integration
-1. In Mattermost, from the Product menu
+
-
+
-
+
-
+
-
+
## Parameters
@@ -94,7 +96,7 @@ The JSON payload can contain the following parameters:
textattachments is not set)@<username>, @channel, and @here for notifications.@<username>, @channel, and @here for notifications.channelusernameicon_urlicon_emojiicon_url with an emoji. Use the emoji name (e.g., :tada:). The Enable integrations to override profile picture icons setting must be enabled.icon_url with an emoji. Use the emoji name (e.g., :tada:). The Enable integrations to override profile picture icons setting must be enabled.attachments
+
### Example with Card Prop
diff --git a/docs/main/integrations-guide/integrations-guide-index.mdx b/docs/main/integrations-guide/integrations-guide-index.mdx
index a3d055ba8c03..8878d54a073f 100644
--- a/docs/main/integrations-guide/integrations-guide-index.mdx
+++ b/docs/main/integrations-guide/integrations-guide-index.mdx
@@ -1,6 +1,8 @@
---
title: "Integrations Guide"
---
+import useBaseUrl from '@docusaurus/useBaseUrl';
+
Mattermost provides a variety of methods to integrate with your favorite tools, automate critical workflows, and extend the capabilities of the platform. This guide provides a high-level overview of integration options and the level of technical skills required [(no-code, low-code, or pro-code)](/integrations-guide/faq#what-is-meant-by-no-code-low-code-and-pro-code), and links to detailed documentation for each.
## Choose Your Path
@@ -20,7 +22,7 @@ Mattermost provides a variety of methods to integrate with your favorite tools,
+
#### Custom-Built Plugins
diff --git a/docs/main/integrations-guide/jira.mdx b/docs/main/integrations-guide/jira.mdx
index b88b5f9affc5..4aa5c522534d 100644
--- a/docs/main/integrations-guide/jira.mdx
+++ b/docs/main/integrations-guide/jira.mdx
@@ -1,6 +1,8 @@
---
title: "Connect Jira to Mattermost"
---
+import useBaseUrl from '@docusaurus/useBaseUrl';
+
textattachments is not set) Markdown-formatted message.attachments is not set) Markdown-formatted message.response_typeusernameicon_urlattachments
+
You can also include [message attachments](https://developers.mattermost.com/integrate/reference/message-attachments/) and [interactive messages](https://developers.mattermost.com/integrate/plugins/interactive-messages/) in your response to create more advanced workflows.
diff --git a/docs/main/integrations-guide/popular-integrations.mdx b/docs/main/integrations-guide/popular-integrations.mdx
index da671371a1c6..5680180b5c90 100644
--- a/docs/main/integrations-guide/popular-integrations.mdx
+++ b/docs/main/integrations-guide/popular-integrations.mdx
@@ -19,18 +19,18 @@ Designed for teams that need reliability, auditability, and ownership of their c
Mattermost Channel Export | product-list > App Marketplace | Exports channel history and data for compliance purposes.
+Mattermost Channel Export | product-list > App Marketplace | Exports channel history and data for compliance purposes.
Mattermost Embedded for M365, Teams, and | Manual Upload | Embed Mattermost in Microsoft apps. | Outlook | | Use Outlook and Teams together with Mattermost for secure backup and extra features. |
+Mattermost Embedded for M365, Teams, and | Manual Upload | Embed Mattermost in Microsoft apps. | Outlook | | Use Outlook and Teams together with Mattermost for secure backup and extra features. |
GitHub | product-list > App Marketplace | Shows GitHub updates, like new pull requests, commits, or issues, in Mattermost channels.
+GitHub | product-list > App Marketplace | Shows GitHub updates, like new pull requests, commits, or issues, in Mattermost channels.
Software
Mattermost Team Edition (Open Source)
License | Terms and Conditions | Privacy Policy |
Open Source Add-ons available under Apache v2 and other licenses. | Mattermost Terms of Use |
You are welcome to use the Enterprise Edition of Mattermost free of charge in perpetuity when the subscription feature | | | are not enabled by a license key. +-------------------------------------------------------------------------------------------------------------------------------+ | | Self Managed Subscription Terms | | If you choose to purchase a subscription for paid features, terms and conditions are offered | | | as part of the subscription purchase (see “Terms”). | Enterprise Edition Subscription Terms for Purchase by Resale | | | | | | Cloud Subscription Agreement | |
License | Terms and Conditions | Privacy Policy |
Open Source Add-ons available under Apache v2 and other licenses. | Mattermost Terms of Use |
You are welcome to use the Enterprise Edition of Mattermost free of charge in perpetuity when the subscription feature | | | are not enabled by a license key. +-------------------------------------------------------------------------------------------------------------------------------+ | | Self Managed Subscription Terms | | If you choose to purchase a subscription for paid features, terms and conditions are offered | | | as part of the subscription purchase (see “Terms”). | Enterprise Edition Subscription Terms for Purchase by Resale | | | | | | Cloud Subscription Agreement | |