-
-
Minimum system requirements:
@@ -34,17 +20,27 @@ Install Mattermost Omnibus
-Mattermost Omnibus packages together all required components: the Enterprise Edition of Mattermost (free version), PostgreSQL database, and NGINX as the application proxy. It uses a custom CLI (``mmomni``) and ansible recipes to configure and connect these components.
+Mattermost Omnibus packages together all required components: the :ref:`free version Mattermost Enterprise
`, a PostgreSQL database, and NGINX as the application proxy. It uses a custom CLI (``mmomni``) and ansible recipes to configure and connect these components. **Omnibus supports Ubuntu distributions only.**
-.. note::
+This Mattermost deployment includes 4 steps: add the Mattermost PPA repositories, install Mattermost Omnibus, and set up Omnibus, and update Omnibus.
+
+**Step 1: Add the Mattermost PPA repositories**
+
+.. important:
+
+ The GPG public key has changed. You can `import the new public key `_ or run the automatic Mattermost PPA repository setup script provided below. Depending on your setup, additional steps may also be required, particularly for installations that didn't rely on the repository setup script. We recommend deleting the old key from ``/etc/apt/trusted.gpg.d`` before adding the apt repository.
+
+ - For Ubuntu Focal - 20.04 LTS:
- Omnibus supports Ubuntu distributions only.
+ ``sudo apt-key del A1B31D46F0F3A10B02CF2D44F8F2C31744774B28``
-Add the Mattermost PPA repositories
------------------------------------
+ ``curl -sL -o- https://deb.packages.mattermost.com/pubkey.gpg | gpg --dearmor | sudo apt-key add``
-.. include:: common-gpg-public-key-changed.rst
- :start-after: :nosearch:
+ - For Ubuntu Jammy - 22.04 LTS and Ubuntu Noble - 24.04 LTS:
+
+ ``sudo rm /usr/share/keyrings/mattermost-archive-keyring.gpg``
+
+ ``curl -sL -o- https://deb.packages.mattermost.com/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/mattermost-archive-keyring.gpg > /dev/null``
In a terminal window, run the following repository setup command:
@@ -59,35 +55,33 @@ This command sets up all required repositories and configures:
- Certbot for SSL certificate management
- Mattermost Omnibus repository
-Install Mattermost Omnibus
----------------------------
+**Step 2: Install Mattermost Omnibus**
-When installing Mattermost Omnibus, SSL is enabled by default to provide a secure connection between the Mattermost server and the Mattermost client. To install with SSL, run the following command:
+1. When installing Mattermost Omnibus, SSL is enabled by default to provide a secure connection between the Mattermost server and the Mattermost client. To install with SSL, run the following command:
.. code-block:: sh
// Install Mattermost Omnibus with SSL enabled
sudo apt install mattermost-omnibus -y
-You're prompted to specify a domain name and email address that will be used to generate the SSL certificate, and deliver related communications.
+.. tip::
-Just looking to try out Mattermost? Run the following command to install Omnibus without SSL:
+ Just looking to try out Mattermost? Run the following command to install Omnibus without SSL:
-.. code-block:: sh
+ .. code-block:: sh
- // Install Mattermost Omnibus without SSL
- sudo MMO_HTTPS=false apt install mattermost-omnibus -y
+ // Install Mattermost Omnibus without SSL
+ sudo MMO_HTTPS=false apt install mattermost-omnibus -y
-After all the packages are installed, Omnibus runs ansible scripts that configure all the platform components and starts the server.
+2. You're prompted to specify a domain name and email address that will be used to generate the SSL certificate, and deliver related communications.
-Next steps:
+3. After all the packages are installed, Omnibus runs ansible scripts that configure all the platform components and starts the server.
-1. Open a browser and navigate to your Mattermost domain either by domain name (e.g. ``mymattermostserver.com``), or by the server's IP address if you're not using a domain name.
+4. Open a browser and navigate to your Mattermost domain either by domain name (e.g. ``mymattermostserver.com``), or by the server's IP address if you're not using a domain name.
-2. Create your first Mattermost user, invite more users, and explore the Mattermost platform.
+5. Create your first Mattermost user, invite more users, and explore the Mattermost platform.
-Configure Mattermost Omnibus
------------------------------
+**Step 3: Configure Mattermost Omnibus**
.. note::
@@ -97,9 +91,7 @@ Unlike traditional Mattermost installations, Omnibus stores its configuration di
To modify Mattermost server settings within an Omnibus environment (with the exception of those listed below), you'll need to utilize the ``mmctl`` command-line tool. Specifically, the ``mmctl --local config edit`` command allows you to make the necessary adjustments. For detailed instructions and options, refer to the :doc:`mmctl ` documentation.
-Please note that certain configuration parameters, such as the Mattermost server port, must remain unchanged to ensure optimal Omnibus functionality.
-
-The following parameters must be configured directly using the ``mmomni.yml`` file:
+Please note that certain configuration parameters, such as the Mattermost server port, must remain unchanged to ensure optimal Omnibus functionality. The following parameters must be configured directly using the ``mmomni.yml`` file:
* ``db_user``: The PostgreSQL database user. This value is generated during the Omnibus installation and should not be changed.
* ``db_password``: The PostgreSQL database password. This value is generated during the Omnibus installation and should not be changed.
@@ -113,21 +105,19 @@ The following parameters must be configured directly using the ``mmomni.yml`` fi
After modifying the ``mmomni.yml`` configuration file, run ``mmomni reconfigure`` to apply the changes, and then restart the Mattermost server with ``systemctl restart mattermost``.
-Update Mattermost Omnibus
--------------------------
+**Step 4: Update Mattermost Omnibus**
-Mattermost Omnibus is integrated with the apt package manager. When a new Mattermost version is released, run the following command to download and update your Mattermost instance:
+Mattermost Omnibus is integrated with the apt package manager.
-.. code-block:: sh
+Before updating Mattermost , we strongly recommend stopping the Mattermost server by running the command ``sudo systemctl stop mattermost``.
- sudo apt update && sudo apt upgrade
+Run the following command to download and update your Mattermost instance (along with any other packages):
-.. note::
+.. code-block:: sh
- When you run the ``sudo apt upgrade`` command, Mattermost will be updated along with any other packages. Before running the ``apt`` command, we strongly recommend stopping the Mattermost server by running the command ``sudo systemctl stop mattermost``.
+ sudo apt update && sudo apt upgrade
-Backup and restore
-------------------
+**Backup and restore**
The Mattermost Omnibus CLI tool ``mmomni`` simplifies server and domain migration, as well as backup and restore. You can easily create snapshots of your entire Mattermost server, including all content, users, plugins, configurations, and databases. These snapshots can be restored to the same server or a different one.
@@ -144,37 +134,23 @@ To restore the contents of your Mattermost server, run the following two command
mmomni restore /tmp/mm_backup_datetime.tgz
mmomni reconfigure
-Remove Mattermost Omnibus
--------------------------
+**Remove Mattermost Omnibus**
-If you want to remove Mattermost and Mattermost Omnibus completely for any reason, you can run the following command:
+Run the following command to remove Mattermost and Mattermost Omnibus completely:
.. code-block:: sh
sudo apt remove --purge mattermost mattermost-omnibus
-Frequently asked questions
---------------------------
-
-Can I use a license with Omnibus?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Yes. Mattermost Omnibus bundles the free, unlicensed Mattermost Enterprise Edition, and Enterprise features are unlocked when you purchase and upload a license.
-
-Can I use an Omnibus server as part of a cluster?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**Frequently asked questions**
-No, Omnibus is designed to be a self-contained single server Mattermost platform. It expects all the necessary components to be on the same server.
+Can I use a license with Omnibus? **Yes.** Mattermost Omnibus bundles the free, unlicensed Mattermost Enterprise Edition, and Enterprise features are unlocked when you purchase and upload a license.
-Does the SSL Certificate automatically renew?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Can I use an Omnibus server as part of a cluster? **No.** Omnibus is designed to be a self-contained single server Mattermost platform. It expects all the necessary components to be on the same server.
-Yes. The SSL certificate automatically updated and renewed. Omnibus installs the certbot package to manage the certificate, and it comes with a cron job that you can find at /etc/cron.d/certbot that automatically launches the renewal process.
+Does the SSL Certificate automatically renew? **Yes.** The SSL certificate automatically updated and renewed. Omnibus installs the certbot package to manage the certificate, and it comes with a cron job that you can find at /etc/cron.d/certbot that automatically launches the renewal process.
-How do I fix an EXPKEYSIG error on upgrades?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In the rare case that you encounter an ``EXPKEYSIG`` error when upgrading, this indicates that your certificate is expired. To obtain a new certificate, run the following commands:
+How do I fix an EXPKEYSIG error on upgrades? **This error indicates that your certificate is expired.** Run the following commands to obtain a new certificate:
.. code-block:: sh
@@ -182,33 +158,17 @@ In the rare case that you encounter an ``EXPKEYSIG`` error when upgrading, this
sudo curl -o- https://deb.packages.mattermost.com/pubkey.gpg | sudo apt-key add -
sudo apt update
-Can I use a custom NGINX template?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Yes. Mattermost Omnibus supports using a custom NGINX template to generate its configuration.
-
-To use this feature, you need to copy and modify the original template located at ``/opt/mattermost/mmomni/ansible/playbooks/mattermost.conf`` to a new location. Then, you can either use the variables and internal logic already bundled in the template and modify the parts that you need, or use a fully static configuration instead.
-
-After the template has been customized, add an ``nginx_template`` property to the ``/etc/mattermost/mmomni.yml`` configuration file, and then run ``mmomni reconfigure``. The reconfigure process will use the new template to generate the NGINX final configuration. You can check the contents of the ``/etc/nginx/conf.d/mattermost.conf`` file to validate that the changes were applied successfully.
+Can I use a custom NGINX template? **Yes.** Mattermost Omnibus supports using a custom NGINX template to generate its configuration.
-.. note::
-
- Please use caution when using this feature. Making changes to the custom template can cause the reconfigure process to fail, or the generated NGINX configuration to be invalid.
+- To use this feature, you need to copy and modify the original template located at ``/opt/mattermost/mmomni/ansible/playbooks/mattermost.conf`` to a new location.
+- **Use caution when using this feature.** Making changes to the custom template can cause the reconfigure process to fail, or the generated NGINX configuration to be invalid.
+- Then, you can either use the variables and internal logic already bundled in the template and modify the parts that you need, or use a fully static configuration instead.
+- After the template has been customized, add an ``nginx_template`` property to the ``/etc/mattermost/mmomni.yml`` configuration file, and then run ``mmomni reconfigure``. The reconfigure process will use the new template to generate the NGINX final configuration. You can check the contents of the ``/etc/nginx/conf.d/mattermost.conf`` file to validate that the changes were applied successfully.
What ``mmomni`` commands are available?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ``mmomni backup``: Takes a complete snapshot of your Mattermost server and places the backup file in a specified file location.
-
- ``mmomni restore``: Restores specified backup file to your Mattermost server.
-
- ``mmomni reconfigure``: Reruns the process that changes domain, SSL, or any Omnibus-specified restrictions such as the ability to upload plugins. It also applies any changes made to the mmomni.yml configuration file.
-
- ``mmomni status``: Shows current status of all Omnibus components.
-
-- ``mmomni tail``: Runs a join tail of logs of all Omnibus components.
-
-Where can I get help?
-~~~~~~~~~~~~~~~~~~~~~
-
-If you have any problems installing Mattermost Omnibus, see the :doc:`troubleshooting guide ` for common error messages, or `join the Mattermost user community for troubleshooting help `__.
+- ``mmomni tail``: Runs a join tail of logs of all Omnibus components.
\ No newline at end of file
diff --git a/source/deploy/server/linux/deploy-rhel.rst b/source/deploy/server/linux/deploy-rhel.rst
new file mode 100644
index 00000000000..61642e66b07
--- /dev/null
+++ b/source/deploy/server/linux/deploy-rhel.rst
@@ -0,0 +1,240 @@
+.. raw:: html
+
+
+
+
+
Minimum system requirements:
+
+ - Operating System: Enterprise Linux 7+, Oracle Linux 6+, Oracle Linux 7+
+
- Hardware: 1 vCPU/core with 2GB RAM (support for up to 1,000 users)
+ - Database: PostgreSQL v13+
+ - Network:
+
+ - Application 80/443, TLS, TCP Inbound
+ - Administrator Console 8065, TLS, TCP Inbound
+ - SMTP port 10025, TCP/UDP Outbound
+
+
+
+
+
+
+
+You can deploy Mattermost Server using our ``rpm`` signed packages available through the Mattermost Yum repository.
+
+This Mattermost deployment includes 4 steps: download, install Matermost server, set up the server, and update the server.
+
+**Step 1: Download the latest Mattermost Server tarball**
+
+In a terminal window, ssh onto the system that will host the Mattermost Server.
+
+Using ``wget``, download the Mattermost Server release you want to install.
+
+.. tab:: Latest release
+
+ .. code-block:: sh
+
+ wget https://releases.mattermost.com/10.6.1/mattermost-10.6.1-linux-amd64.tar.gz
+
+.. tab:: Current ESR
+
+ .. code-block:: sh
+
+ wget https://releases.mattermost.com/10.5.2/mattermost-10.5.2-linux-amd64.tar.gz
+
+.. tab:: Older releases
+
+ If you are looking for an older release, Enterprise and Team Edition releases can be found in our :doc:`version archive ` documentation.
+
+**Step 2: Install Mattermost server**
+
+1. Ahead of installing the Mattermost Server, we recommend updating all your repositories and, where required, update existing packages by running the following commands:
+
+ .. code-block:: sh
+
+ sudo dnf update
+ sudo dnf upgrade
+
+2. After any updates, and any system reboots, are complete, install the Mattermost Server by extracting the tarball, creating users and groups, and setting file/folder permissions.
+
+ a. First extract the tarball:
+
+ .. code-block:: sh
+
+ tar -xvzf mattermost*.gz
+
+ b. Now move the entire folder to the ``/opt`` directory (or whatever path you require):
+
+ .. code-block:: sh
+
+ sudo mv mattermost /opt
+
+.. note::
+
+ If you choose a custom path, ensure this alternate path is used in all steps that follow.`
+
+3. Create the default storage folder. By default the Mattermost Server uses ``/opt/mattermost/data`` as the folder for files. This can be changed in the System Console during setup (even using alternative storage such as S3):
+
+ .. code-block:: sh
+
+ sudo mkdir /opt/mattermost/data
+
+4. Set up a user and group called ``mattermost``:
+
+ .. code-block:: sh
+
+ sudo useradd --system --user-group mattermost
+
+.. note::
+
+ If you choose a custom user and group name, ensure it is used in all the steps that follow.
+
+5. Set the file and folder permissions for your installation:
+
+ .. code-block:: sh
+
+ sudo chown -R mattermost:mattermost /opt/mattermost
+
+6. Give the ``mattermost`` group write permissions to the application folder:
+
+ .. code-block:: sh
+
+ sudo chmod -R g+w /opt/mattermost
+
+You will now have the latest Mattermost Server version installed on your system. Starting and stopping the Mattermost Server is done using ``systemd``.
+
+7. Create the systemd unit file:
+
+ .. code-block:: sh
+
+ sudo touch /lib/systemd/system/mattermost.service
+
+8. As root, edit the systemd unit file to add the following lines:
+
+ .. code-block:: text
+
+ [Unit]
+ Description=Mattermost
+ After=network.target
+
+ [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
+
+ [Install]
+ WantedBy=multi-user.target
+
+9. Save the file and reload systemd using ``sudo systemctl daemon-reload``. Mattermost Server is now installed and is ready for setup.
+
+**Step 3: Set up the server**
+
+Before you start the Mattermost Server, you need to edit the configuration file. A default configuration file is located at ``/opt/mattermost/config/config.json``. We recommend taking a backup of this default config ahead of making changes:
+
+.. code-block:: sh
+
+ sudo cp /opt/mattermost/config/config.json /opt/mattermost/config/config.defaults.json
+
+Configure the following properties in this file:
+
+* Under ``SqlSettings``, set ``DriverName`` to ``"postgres"``. This is the default and recommended database for all Mattermost installations.
+* Under ``SqlSettings``, set ``DataSource`` to ``"postgres://mmuser:
@:5432/mattermost?sslmode=disable&connect_timeout=10"`` replacing ``mmuser``, ````, ```` and ``mattermost`` with your database name.
+* Under ``ServiceSettings``, set ``"SiteURL"``: The domain name for the Mattermost application (e.g. ``https://mattermost.example.com``).
+
+.. note::
+
+ We recommend configuring the `Support Email `_ under ``SupportSettings``, set ``"SupportEmail"``. This is the email address your users will contact when they need help.
+
+After modifying the ``config.json`` configuration file, you can now start the Mattermost server:
+
+.. code-block:: sh
+
+ sudo systemctl start mattermost
+
+Verify that Mattermost is running: curl ``http://localhost:8065``. You should see the HTML that’s returned by the Mattermost Server.
+
+The final step, depending on your requirements, is to run sudo ``systemctl enable mattermost.service`` so that Mattermost will start on system boot. If you don't receive an error when starting Mattermost after the previous step, you are good to go. If you did receive an error, continue on.
+
+.. important::
+
+ **Modify SELinux settings**: When deploying Mattermost from RHEL9, which has SELinux running with enforceing mode enabled by default, additional configuration is required.
+
+ - SELinux is a security module that provides access control security policies. It's enabled by default on RHEL and CentOS systems. SELinux can block access to files, directories, and ports, which can cause issues when starting Mattermost. To resolve these issues, you'll need to set the appropriate SELinux contexts for the Mattermost binaries and directories, and allow Mattermost to bind to ports.
+ - Ensure that SELinux is enabled and in enforcing mode by running the ``sestatus`` command. If it's ``enforcing``, you'll need to configure it properly.
+ - Set bin contexts for ``/opt/mattermost/bin``: SELinux enforces security contexts for binaries. To label the Mattermost binaries as safe, you'll need to set them to the below SELinux context.
+
+ .. code-block:: sh
+
+ sudo semanage fcontext -a -t bin_t "/opt/mattermost/bin(/.*)?"
+ sudo restorecon -RF /opt/mattermost/bin
+
+ Now, try starting Mattermost again with
+
+ .. code-block:: sh
+
+ sudo systemctl start mattermost
+
+ If you don't receive an error, verify that Mattermost is running: curl ``http://localhost:8065``. You should see the HTML that's returned by the Mattermost Server. You're all set!
+
+
+ If on starting Mattermost you receive an error, before moving on, check for the existence of a file in ``/opt/mattermost/logs`` - if ``mattermost.log`` exists in that directory, it's more likely you're dealing with a configuration issue in ``config.json``. Double check the previous steps before continuing
+
+ Try different contexts for ``/opt/mattermost``: SELinux enforces security contexts for files and directories. To label your Mattermost directory as safe, you'll need to set an appropriate SELinux context.
+
+ 1. Check current context by running ``ls -Z /opt/mattermost``. When you see something like ``drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 mattermost`` returned, the ``default_t`` indicates that SELinux doesn't know what this directory is for.
+ 2. Set a safe context by assigning a SELinux type that's compatible with web services or applications by running ``sudo semanage fcontext -a -t httpd_sys_content_t "/opt/mattermost(/.*)?"``. A common one is ``httpd_sys_content_t``, used for serving files. Ensure you match the directory and its contents recursively. Run the ``sudo restorecon -R /opt/mattermost`` to apply the changes.
+
+ Allow Mattermost to bind to ports: When Mattermost needs specific ports (e.g., 8065), ensure that SELinux allows it by allowing Mattermost to bind to ports. Run the ``sudo semanage port -l | grep 8065`` command, and if the port's not listed, you'll need to add it by running ``sudo semanage port -a -t http_port_t -p tcp 8065``, replacing the ``8065`` with the required port.
+
+ Handle custom policies: If Mattermost requires actions that SELinux blocks, you'll need to generate a custom policy.
+
+ 1. Check for SELinux denials first in the logs by running ``sudo ausearch -m avc -ts recent``, or by checking the audit log: ``sudo cat /var/log/audit/audit.log | grep denied``.
+
+ 2. If needed, generate a policy module by installing ``audit2allow`` to generate policies automatically.
+
+ .. code-block:: sh
+
+ sudo yum install -y policycoreutils-python-utils
+ sudo grep mattermost /var/log/audit/audit.log | audit2allow -M mattermost_policy
+ sudo semodule -i mattermost_policy.pp
+
+ Test the configuration: Restart Mattermost to confirm the configuation works as expected by running ``sudo systemctl restart mattermost``. In the case of failures, revisit the logs to identify other SELinux-related issues.
+
+ Need Mattermost working quickly for testing purposes?
+
+ - You can change SELinux to permissive mode by running the ``sudo setenforce 0``. command where policies aren't enforced, only logged.
+ - This command changes the SELinux mode to "permissive". While in permissive mode, policies aren't enforced, and violations are logged instead of being blocked. This can be helpful for debugging and troubleshooting issues related to SELinux policies.
+ - Ensure you re-enable enforcing mode once context is working as needed by running the ``sudo setenforce 1`` command.
+
+ See the following SELinux resources for additional details:
+
+ - `SELinux User's and Administrator's Guide `_
+ - `SELinux Project Wiki `_
+ - `Introduction to SELinux `_
+ - `A Sysadmin's Guide to SELinux: 42 Answers to the Big Questions `_
+ - `Mastering SELinux: A Comprehensive Guide to Linux Security `_
+
+**Step 3: Update the server**
+
+Updating your Mattermost Server installation when using the tarball requires several manual steps. See the :doc:`upgrade Mattermost Server ` documentation for details.
+
+**Remove Mattermost**
+
+To remove the Mattermost Server, you must stop the Mattermost Server, back up all important files, and then run this command:
+
+.. code-block:: sh
+
+ sudo rm /opt/mattermost
+
+.. note::
+
+ Depending on your configuration, there are several important folders in ``/opt/mattermost`` to backup. These are ``config``, ``logs``, ``plugins``, ``client/plugins``, and ``data``. We strongly recommend you back up these locations before running the ``rm`` command.
+
+You may also remove the Mattermost systemd unit file and the user/group created for running the application.
\ No newline at end of file
diff --git a/source/deploy/server/linux/deploy-tar.rst b/source/deploy/server/linux/deploy-tar.rst
new file mode 100644
index 00000000000..1c4a6fddb06
--- /dev/null
+++ b/source/deploy/server/linux/deploy-tar.rst
@@ -0,0 +1,175 @@
+.. raw:: html
+
+
+
+
+
Minimum system requirements:
+
+ - Hardware: 1 vCPU/core with 2GB RAM (support for up to 1,000 users)
+ - Database: PostgreSQL v13+
+ - Network:
+
+ - Application 80/443, TLS, TCP Inbound
+ - Administrator Console 8065, TLS, TCP Inbound
+ - SMTP port 10025, TCP/UDP Outbound
+
+
+
+
+
+
+
+You can install the Mattermost Server on any 64-bit Linux system using the tarball. This is the most flexible installation method, but it comes with the highest effort, typically favored by advanced system administrators.
+
+This Mattermost deployment includes 3 steps: download, install Mattermost server, and set up the server.
+
+**Step 1: Download**
+
+In a terminal window, ssh onto the system that will host the Mattermost Server.
+
+Using ``wget``, download the Mattermost Server release you want to install.
+
+.. tab:: Latest release
+
+ .. code-block:: sh
+
+ wget https://releases.mattermost.com/10.6.1/mattermost-10.6.1-linux-amd64.tar.gz
+
+.. tab:: Current ESR
+
+ .. code-block:: sh
+
+ wget https://releases.mattermost.com/10.5.2/mattermost-10.5.2-linux-amd64.tar.gz
+
+.. tab:: Older releases
+
+ If you are looking for an older release, Enterprise and Team Edition releases can be found in our :doc:`version archive ` documentation.
+
+**Step 2: Install Mattermost server**
+
+Install the Mattermost Server by extracting the tarball, creating users and groups, and setting file/folder permissions.
+
+1. First extract the tarball:
+
+ .. code-block:: sh
+
+ tar -xvzf mattermost*.gz
+
+2. Move the entire folder to the ``/opt`` directory (or whatever path you require):
+
+ .. code-block:: sh
+
+ sudo mv mattermost /opt
+
+.. note::
+
+ If you choose a custom path, ensure this alternate path is used in all steps that follow.
+
+3. Create the default storage folder. By default the Mattermost Server uses ``/opt/mattermost/data`` as the folder for files. This can be changed in the System Console during setup (even using alternative storage such as S3).
+
+ .. code-block:: sh
+
+ sudo mkdir /opt/mattermost/data
+
+4. Set up a user and group called ``mattermost``:
+
+ .. code-block:: sh
+
+ sudo useradd --system --user-group mattermost
+
+.. note::
+
+ If you choose a custom user and group name, ensure it is used in all the steps that follow.
+
+5. Set the file and folder permissions for your installation:
+
+ .. code-block:: sh
+
+ sudo chown -R mattermost:mattermost /opt/mattermost
+
+6. Give the ``mattermost`` group write permissions to the application folder:
+
+ .. code-block:: sh
+
+ sudo chmod -R g+w /opt/mattermost
+
+You will now have the latest Mattermost Server version installed on your system. Starting and stopping the Mattermost Server is done using ``systemd``.
+
+7. Create the systemd unit file:
+
+ .. code-block:: sh
+
+ sudo touch /lib/systemd/system/mattermost.service
+
+8. As root, edit the systemd unit file to add the following lines:
+
+ .. code-block:: text
+
+ [Unit]
+ Description=Mattermost
+ After=network.target
+
+ [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
+
+ [Install]
+ WantedBy=multi-user.target
+
+.. note::
+
+ If you are installing the Mattermost server on the same system as your database, you may want to add both ``After=postgresql.service`` and ``BindsTo=postgresql.service`` to the ``[Unit]`` section of the systemd unit file.
+
+9. Save the file and reload systemd using ``sudo systemctl daemon-reload``. Mattermost Server is now installed and is ready for setup.
+
+**Step 3: Set up the server**
+
+Before you start the Mattermost Server, you need to edit the configuration file. A default configuration file is located at ``/opt/mattermost/config/config.json``. We recommend taking a backup of this default config ahead of making changes:
+
+.. code-block:: sh
+
+ sudo cp /opt/mattermost/config/config.json /opt/mattermost/config/config.defaults.json
+
+Configure the following properties in this file:
+
+* Under ``SqlSettings``, set ``DriverName`` to ``"postgres"``. This is the default and recommended database for all Mattermost installations.
+* Under ``SqlSettings``, set ``DataSource`` to ``"postgres://mmuser:@:5432/mattermost?sslmode=disable&connect_timeout=10"`` replacing ``mmuser``, ````, ```` and ``mattermost`` with your database name.
+* Under ``ServiceSettings``, set ``"SiteURL"``: The domain name for the Mattermost application (e.g. ``https://mattermost.example.com``).
+
+We recommend configuring the `Support Email `_ under ``SupportSettings``, set ``"SupportEmail"``. This is the email address your users will contact when they need help.
+
+After modifying the ``config.json`` configuration file, you can now start the Mattermost server:
+
+.. code-block:: sh
+
+ sudo systemctl start mattermost
+
+Verify that Mattermost is running: curl ``http://localhost:8065``. You should see the HTML that’s returned by the Mattermost Server.
+
+The final step, depending on your requirements, is to run sudo ``systemctl enable mattermost.service`` so that Mattermost will start on system boot.
+
+**Step 4: Update the server**
+
+Updating your Mattermost Server installation when using the tarball requires several manual steps. See the :doc:`upgrade Mattermost Server ` documentation for details.
+
+**Remove Mattermost**
+
+To remove the Mattermost Server for any reason, you must stop the Mattermost Server, back up all important files, and then run this command:
+
+.. code-block:: sh
+
+ sudo rm - rf /opt/mattermost
+
+.. note::
+
+ Depending on your configuration, there are several important folders in ``/opt/mattermost`` to backup. These are ``config``, ``logs``, ``plugins``, ``client/plugins``, and ``data``. We strongly recommend you back up these locations before running the ``rm`` command.
+
+You may also remove the Mattermost systemd unit file and the user/group created for running the application.
\ No newline at end of file
diff --git a/source/deploy/server/linux/deploy-ubuntu.rst b/source/deploy/server/linux/deploy-ubuntu.rst
new file mode 100644
index 00000000000..c24995bc970
--- /dev/null
+++ b/source/deploy/server/linux/deploy-ubuntu.rst
@@ -0,0 +1,125 @@
+.. raw:: html
+
+
+
+
+
Minimum system requirements:
+
+ - Operating System: 20.04 LTS, 22.04 LTS, 24.04 LTS
+
- Hardware: 1 vCPU/core with 2GB RAM (support for up to 1,000 users)
+ - Database: PostgreSQL v13+
+ - Network:
+
+ - Application 80/443, TLS, TCP Inbound
+ - Administrator Console 8065, TLS, TCP Inbound
+ - SMTP port 10025, TCP/UDP Outbound
+
+
+
+
+
+
+
+You can deploy Mattermost server using our ``.deb`` signed packages using the Mattermost PPA (Personal Package Archive). This is the quickest way to install a Mattermost Server that provides automatic updates. This install method is used for both single and clustered installations, as you can tools like Packer for a clustered deployment.
+
+.. tip::
+
+ Alternatively, an **Omnibus Package** deployment bundles together all required components to greatly reduce setup and ongoing maintenance, including Mattermost Server, a PostgreSQL database, NGINX as the application proxy, a custom CLI, and ansible recipes to configure and connect these components.
+
+This Mattermost deployment includes 4 steps: add the PPA repository, install Mattermost server, configure the server, and update the server.
+
+**Step 1: Add the Mattermost Server PPA repository**
+
+.. important::
+
+ The GPG public key has changed. You can `import the new public key `_ or run the automatic Mattermost PPA repository setup script provided below. Depending on your setup, additional steps may also be required, particularly for installations that didn't rely on the repository setup script. We recommend deleting the old key from ``/etc/apt/trusted.gpg.d`` before adding the apt repository.
+
+ - For Ubuntu Focal - 20.04 LTS:
+
+ ``sudo apt-key del A1B31D46F0F3A10B02CF2D44F8F2C31744774B28``
+
+ ``curl -sL -o- https://deb.packages.mattermost.com/pubkey.gpg | gpg --dearmor | sudo apt-key add``
+
+ - For Ubuntu Jammy - 22.04 LTS and Ubuntu Noble - 24.04 LTS:
+
+ ``sudo rm /usr/share/keyrings/mattermost-archive-keyring.gpg``
+
+ ``curl -sL -o- https://deb.packages.mattermost.com/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/mattermost-archive-keyring.gpg > /dev/null``
+
+In a terminal window, run the following repository setup command to add the Mattermost Server repositories:
+
+.. code-block:: sh
+
+ curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermost
+
+This command configures the repositories needed for a PostgreSQL database, configures an NGINX web server to act as a proxy, configures certbot to issue and renew the SSL certificate, and configures the Mattermost Omnibus repository so that you can run the install command.
+
+**Step 2: Instal Mattermost server**
+
+Ahead of installing the Mattermost Server, it's good practice to update all your repositories and, where required, update existing packages by running the following command:
+
+.. code-block:: sh
+
+ sudo apt update
+
+After any updates and system reboots are complete, you can install the Mattermost Server by running:
+
+.. code-block:: sh
+
+ sudo apt install mattermost -y
+
+You now have the latest Mattermost Server version installed on your system.
+
+The installation path is ``/opt/mattermost``. The package will have added a user and group named ``mattermost``. The required systemd unit file has also been created but will not be set to active.
+
+.. note::
+
+ Since the signed package from the Mattermost repository is used for mulitple installation types, we don't add any dependencies in the systemd unit file. If you are installing the Mattermost server on the same system as your database, you may want to add both ``After=postgresql.service`` and ``BindsTo=postgresql.service`` to the ``[Unit]`` section of the systemd unit file.
+
+**Step 3: Configure the server**
+
+Before you start the Mattermost Server, you need to edit the configuration file. A sample configuration file is located at ``/opt/mattermost/config/config.defaults.json``.
+
+Rename this configuration file with correct permissions:
+
+.. code-block:: sh
+
+ sudo install -C -m 600 -o mattermost -g mattermost /opt/mattermost/config/config.defaults.json /opt/mattermost/config/config.json
+
+Configure the following properties in this file:
+
+* Under ``SqlSettings``, set ``DriverName`` to ``"postgres"``. This is the default and recommended database for all Mattermost installations.
+* Under ``SqlSettings``, set ``DataSource`` to ``"postgres://mmuser:@:5432/mattermost?sslmode=disable&connect_timeout=10"`` replacing ``mmuser``, ````, ```` and ``mattermost`` with your database name.
+* Under ``ServiceSettings``, set ``"SiteURL"``: The domain name for the Mattermost application (e.g. ``https://mattermost.example.com``).
+
+We recommend configuring the `Support Email `_ under ``SupportSettings``, set ``"SupportEmail"``. This is the email address your users will contact when they need help.
+
+After modifying the ``config.json`` configuration file, you can now start the Mattermost Server:
+
+.. code-block:: sh
+
+ sudo systemctl start mattermost
+
+Verify that Mattermost is running: curl ``http://localhost:8065``. You should see the HTML that's returned by the Mattermost Server.
+
+The final step, depending on your requirements, is to run ``sudo systemctl enable mattermost.service`` so that Mattermost will start on system boot.
+
+.. note::
+
+ The value of the ``sslmode`` property in the ``DataSource`` configuration is entirely dependent on your native environment. Please consult the native environment setup documentation for guidance on its value. The available options for ``sslmode`` are ``disable`` or ``require``. For example, if you are using Amazon Lightsail as your data source, you must set ``sslmode`` to ``require`` to successfully connect to the database.
+
+**Step 4: Update the server**
+
+When a new Mattermost version is released, run: ``sudo apt update && sudo apt upgrade`` to download and update your Mattermost instance.
+
+.. note::
+
+ When you run the ``sudo apt upgrade`` command, ``mattermost-server`` will be updated along with any other packages. We strongly recommend you stop the Mattermost Server before running the ``apt`` command using ``sudo systemctl stop mattermost``.
+
+**Remove Mattermost**
+
+Run the following command to remove the Mattermost Server:
+
+.. code-block:: sh
+
+ sudo apt remove --purge mattermost
\ No newline at end of file
diff --git a/source/deploy/server/preparations.rst b/source/deploy/server/preparations.rst
new file mode 100644
index 00000000000..05a0c6e0765
--- /dev/null
+++ b/source/deploy/server/preparations.rst
@@ -0,0 +1,210 @@
+Prepare your Mattermost Server environment
+===========================================
+
+This guide outlines the key preparation steps required before installing the Mattermost Server, focusing on setting up the database and file storage systems.
+
+.. toctree::
+ :maxdepth: 1
+ :hidden:
+ :titlesonly:
+
+ Review software and hardware requirements
+ (Recommended) Set up an NGINX proxy
+ (Recommended) Configure Mattermost Calls
+ (Recommended) Enable Mattermost Copilot
+ (Optional) Set up TLS
+ (Optional) Use an image proxy
+ (Optional) Configure CloudFront to host Mattermost static assets
+ (Optional) Use an outbound proxy
+ (Optional) Use sockets to set up the database
+
+Database preparation
+--------------------
+
+Mattermost requires a PostgreSQL database (version 13 or higher). While MySQL was previously supported, PostgreSQL is now the recommended and preferred database.
+
+.. important::
+
+ - PostgreSQL v13+ is required for Mattermost server installations. :doc:`MySQL database support ` is being deprecated starting with Mattermost v11. See the :doc:`PostgreSQL migration ` documentation for guidance on migrating from MySQL to PostgreSQL.
+ - Learn how to :doc:`use sockets to set up the database `.
+
+1. Create an PostgreSQL server instance:
+
+ .. tab:: AWS
+
+ .. code-block:: sh
+
+ sudo apt update
+ sudo apt install postgresql
+
+ .. tab:: Azure
+
+ .. code-block:: sh
+
+ sudo apt update
+ sudo apt install postgresql
+
+ .. tab:: Ubuntu/Debian
+
+ .. code-block:: sh
+
+ sudo apt update
+ sudo apt install postgresql
+
+ .. tab:: RHEL/CentOS
+
+ .. code-block:: sh
+
+ sudo dnf install postgresql-server
+ sudo postgresql-setup --initdb
+
+2. Create the Mattermost database and user:
+
+ a. Access PostgreSQL by running:
+
+ .. code-block:: sh
+
+ sudo -u postgres psql
+
+ b. Create the database:
+
+ .. code-block:: sql
+
+ CREATE DATABASE mattermost WITH ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE=template0;
+
+ c. Create the Mattermost user with a secure password:
+
+ .. code-block:: sql
+
+ CREATE USER mmuser WITH PASSWORD 'mmuser-password';
+
+ d. Grant database access to the user:
+
+ .. code-block:: sql
+
+ GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
+
+ e. If using PostgreSQL v15.x or later, additional grants are required:
+
+ .. code-block:: sql
+
+ ALTER DATABASE mattermost OWNER TO mmuser;
+ GRANT USAGE, CREATE ON SCHEMA PUBLIC TO mmuser;
+
+3. Configure PostgreSQL for remote connections (if database is on a separate server):
+
+ a. Edit ``postgresql.conf`` to allow remote connections:
+
+ .. tab:: Ubuntu/Debian
+
+ Edit ``/etc/postgresql/{version}/main/postgresql.conf``:
+
+ .. code-block:: text
+
+ listen_addresses = '*'
+
+ .. tab:: RHEL/CentOS
+
+ Edit ``/var/lib/pgsql/{version}/data/postgresql.conf``:
+
+ .. code-block:: text
+
+ listen_addresses = '*'
+
+ b. Configure client authentication by editing ``pg_hba.conf``:
+
+ Add the following line, replacing ``{mattermost-server-IP}``:
+
+ .. code-block:: text
+
+ host all all {mattermost-server-IP}/32 md5
+
+.. important::
+
+ If you are upgrading a major version of Postgres, ensure that ``ANALYZE VERBOSE`` is run on the database post upgrade. This is required to re-populate the ``pg_statistics`` table used to generate optimal query plans. Database performance may suffer if this step is skipped.
+
+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)
+- local file storage
+
+S3-compatible object storage (Recommended)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+For production environments, we recommend using S3-compatible object storage such as:
+
+- Amazon S3
+- MinIO
+- 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)
+
+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:
+
+ .. code-block:: sh
+
+ sudo mkdir -p /opt/mattermost/data
+
+2. Set appropriate permissions:
+
+ .. code-block:: sh
+
+ sudo chown -R mattermost:mattermost /opt/mattermost/data
+
+(Optional) Use an image proxy
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Using an :doc:`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
+--------------------
+
+Ensure the following ports are available:
+
+- Application ports: 80/443 (TCP) for HTTP/HTTPS
+- Database port: 5432 (TCP) for PostgreSQL
+- SMTP port: 10025 (TCP/UDP) for outbound email
+
+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 v13+
+- Network: Reliable internet connection with sufficient bandwidth
+
+See the :doc:`software and hardware requirements ` documentation for additional requirements.
+
+Next steps
+-----------
+
+Once you've completed these preparation steps, you can proceed with installing the Mattermost server. Choose your preferred installation method:
+
+- :doc:`Deploy with Kubernetes `
+- :doc:`Deploy with Containers `
+- :doc:`Deploy on Linux `
\ No newline at end of file
diff --git a/source/install/prepare-mattermost-mysql-database.rst b/source/deploy/server/prepare-mattermost-mysql-database.rst
similarity index 97%
rename from source/install/prepare-mattermost-mysql-database.rst
rename to source/deploy/server/prepare-mattermost-mysql-database.rst
index 8dc305e208c..eaac5dd5921 100644
--- a/source/install/prepare-mattermost-mysql-database.rst
+++ b/source/deploy/server/prepare-mattermost-mysql-database.rst
@@ -3,12 +3,12 @@
Prepare your Mattermost MySQL database
======================================
-.. include:: ../_static/badges/allplans-selfhosted.rst
+.. include:: ../../_static/badges/allplans-selfhosted.rst
:start-after: :nosearch:
.. important::
- - PostgreSQL is our preferred database of choice. See the :ref:`database software ` documentation for details on database version support, and see the :doc:`Migrate from MySQL to PostgreSQL ` documentation for details on migrating from MySQL to PostgreSQL.
+ - PostgreSQL is our preferred database of choice. See the :ref:`database software ` documentation for details on database version support, and see the :doc:`Migrate from MySQL to PostgreSQL ` documentation for details on migrating from MySQL to PostgreSQL.
- MySQL 8.0.22 contains an `issue with JSON column types `__ changing string values to integers which is preventing Mattermost from working properly. Users are advised to avoid this database version.
Set up the Mattermost MySQL database
@@ -251,8 +251,6 @@ Migrate from Bitnami to a self-hosted Mattermost deployment
If you're planning a migration from Bitnami to a self-hosted Mattermost installation with a MySQL database, read these notes in our migration guide: :ref:`Migrating from Bitnami `.
-
-
Downgrade Mattermost v6.0 to v5.38
-----------------------------------
diff --git a/source/deploy/server/server-architecture.rst b/source/deploy/server/server-architecture.rst
new file mode 100644
index 00000000000..266a3bb1c02
--- /dev/null
+++ b/source/deploy/server/server-architecture.rst
@@ -0,0 +1,96 @@
+Server architecture reference
+==============================
+
+The following diagrams detail suggested architecture configurations of :ref:`high availability Mattermost deployments ` at different scales. Hardware and infrastructure requirements will vary significantly based on usage and policies. See the :doc:`scaling for enterprise ` documentation for reference architecture guidance at scale, including hardware and infrastructure requirements.
+
+Reference architectures
+------------------------
+
+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.
+
+.. important
+
+ Mattermost does not support high availability deployments spanning multiple datacenters. All nodes in a high availability cluster must reside within the same datacenter to ensure proper functionality and performance.
+
+You can apply most configuration changes and dot release security updates without interrupting service, provided that you update the system components in the correct sequence. Changes to configuration settings that require a server restart, and server version upgrades that involve a change to the database schema, require a short period of downtime. Downtime for a server restart is around 5 seconds. For a database schema update, downtime can be up to 30 seconds.
+
+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 and AWS and Azure versions of each diagram. See the :doc:`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.
+- Each Azure diagram represents a full High Availability deployment on Microsoft Azure making full use of the available services.
+- Push proxy can be replaced by the Mattermost :ref:`hosted push notification service `.
+
+.. tab:: 5000 users
+
+ **General**
+
+ .. image:: /images/MattermostDeployment5kUsers.png
+ :class: bg-white
+
+ **AWS**
+
+ .. image:: /images/MattermostDeployment5kaws.png
+ :class: bg-white
+
+ **Azure**
+
+ .. image:: /images/MattermostDeployment5kAzure.png
+ :class: bg-white
+
+.. tab:: 10,000 users
+
+ **General**
+
+ .. image:: /images/MattermostDeployment10kUsers.png
+ :class: bg-white
+
+ **AWS**
+
+ .. image:: /images/MattermostDeployment10kaws.png
+ :class: bg-white
+
+ **Azure**
+
+ .. image:: /images/MattermostDeployment10kAzure.png
+ :class: bg-white
+
+.. tab:: 25,000 users
+
+ **General**
+
+ .. image:: /images/MattermostDeployment25kUsers.png
+ :class: bg-white
+
+ **AWS**
+
+ .. image:: /images/MattermostDeployment25kaws.png
+ :class: bg-white
+
+ **Azure**
+
+ .. image:: /images/MattermostDeployment25kAzure.png
+ :class: bg-white
+
+.. tab:: 50,000 users
+
+ **AWS**
+
+ .. image:: /images/MattermostDeployment50kaws.png
+ :class: bg-white
+
+ **Azure**
+
+ .. image:: /images/MattermostDeployment50kAzure.png
+ :class: bg-white
+
+Database with Virtual IPs
+--------------------------
+
+We recommend the following configuration for Highly-Available databases through virtual IPs.
+
+.. image:: /images/DatabasewithVIPs.png
+ :class: bg-white
\ No newline at end of file
diff --git a/source/deploy/server/server-deployment-planning.rst b/source/deploy/server/server-deployment-planning.rst
new file mode 100644
index 00000000000..fa055002488
--- /dev/null
+++ b/source/deploy/server/server-deployment-planning.rst
@@ -0,0 +1,117 @@
+Server deployment planning
+==========================
+
+.. toctree::
+ :maxdepth: 1
+ :hidden:
+ :titlesonly:
+
+ Preparations
+ Deploy with Kubernetes
+ Deploy with Containers
+ Deploy with Linux
+ Architecture reference
+ Scale for enterprise
+
+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.
+
+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 or cloud storage (S3, MinIO) 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. :doc:`Kubernetes (Recommended) `
+
+ 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. :doc:`Container-Based Deployment `
+
+ Docker containers are suitable for smaller deployments that offer:
+
+ * Simplified installation and updates
+ * Consistent environments
+ * Easy dependency management
+
+3. :doc:`Traditional Linux Installation `
+
+ A direct installation on Linux servers offers:
+
+ * Simple, straightforward setup
+ * Full control over the installation
+ * For situations where containers aren't preferred
+
+Prerequisites
+--------------
+
+Before deploying Mattermost, ensure you have reviewed the :doc:`software and hardware requirements `, and have:
+
+* A supported Linux distribution
+* Database server (PostgreSQL 13+)
+* 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.
+
+.. note::
+
+ Mattermost v10.6 is not an :ref:`Extended Support Release (ESR) `. 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** |
++===========================================================+==================+================================+
+| :ref:`v9.11 ESR ` | 2024-8-15 | 11.x |
++-----------------------------------------------------------+------------------+--------------------------------+
+| :ref:`v10.5 ESR ` | 2025-2-15 | 11.x |
++-----------------------------------------------------------+------------------+--------------------------------+
+| :ref:`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 `_. to discuss your options.
diff --git a/source/install/setting-up-socket-based-mattermost-database.rst b/source/deploy/server/setting-up-socket-based-mattermost-database.rst
similarity index 54%
rename from source/install/setting-up-socket-based-mattermost-database.rst
rename to source/deploy/server/setting-up-socket-based-mattermost-database.rst
index 90ce1263609..729ffe4df79 100644
--- a/source/install/setting-up-socket-based-mattermost-database.rst
+++ b/source/deploy/server/setting-up-socket-based-mattermost-database.rst
@@ -1,29 +1,23 @@
-Using sockets for database
-==========================
+(Optional) Using sockets for database
+======================================
-.. include:: ../_static/badges/allplans-selfhosted.rst
+.. include:: ../../_static/badges/allplans-selfhosted.rst
:start-after: :nosearch:
-Mattermost requires a database back-end, and PostgreSQL is our database of choice. In this document let's understand how
-you can use sockets for setting up the database.
-
-- Install and configure PostgreSQL.
-- Choose between TCP or UNIX Socket, and jump to the corresponding section.
+You can use sockets for setting up the database. Choose between TCP or UNIX Socket.
With TCP socket
---------------
-- Create the new user while connecting to the server as ``postgres`` user
- (you will be prompted for a password for the new user):
+1. Create the new user while connecting to the server as ``postgres`` user (you will be prompted for a password for the new user):
``sudo -u postgres createuser -P mmuser``
-- Create the Mattermost database, owned by ``mmuser`` user:
+2. Create the Mattermost database, owned by ``mmuser`` user:
``sudo -u postgres createdb -O mmuser mattermostdb``
-- In the connections and authentications section, set the ``listen_address`` list
- line per your needs:
+3. In the connections and authentications section, set the ``listen_address`` list line per your needs:
.. code-block:: sh
@@ -32,7 +26,7 @@ With TCP socket
You can use '*' to listen on all available addresses.
-- Then add a line like the following to the authentication config:
+4. Then add a line like the following to the authentication config:
.. code-block:: sh
@@ -41,7 +35,7 @@ With TCP socket
# IPv4 local connections:
host all all ip_address/32 md5
-- Run the setup using:
+5. Run the setup using:
.. code-block:: sh
@@ -50,27 +44,27 @@ With TCP socket
With Unix socket
----------------
-- Create the new user while connecting to the server as ``postgres`` user:
+1. Create the new user while connecting to the server as ``postgres`` user:
.. code-block:: sh
sudo -u postgres createuser mattermost
-- Create the Mattermost database, owned by ``mattermost`` user:
+2. Create the Mattermost database, owned by ``mattermost`` user:
.. code-block:: sh
sudo -u postgres createdb -O mattermost mattermostdb
-- Setup the Unix socket by adding the following line to ``/var/lib/postgres/data/pg_hba.conf``:
+3. Set up the Unix socket by adding the following line to ``/var/lib/postgres/data/pg_hba.conf``:
.. code-block:: sh
local mattermostdb mattermost peer
-- Restart postgresql.service.
+4. Restart postgresql.service.
-- Run the setup using:
+5. Run the setup using:
.. code-block:: sh
@@ -79,12 +73,11 @@ With Unix socket
Configuring Mattermost
----------------------
-- Mattermost is configured in ``/etc/webapps/mattermost/config.json``.
- Strings need to be quoted.
+Mattermost is configured in ``/etc/webapps/mattermost/config.json``. Strings need to be quoted.
- Set ``DriverName`` to ``postgres``.
- Set ``DataSource``:
+- Set ``DataSource``:
- TCP socket: ``postgres://mmuser:mmuser_password@127.0.0.1:5432/mattermostdb?sslmode=disable&connect_timeout=10``
- Unix socket: ``postgres:///mattermostdb?host=/run/postgresql``, where ``mattermostdb`` is the name of the database and ``/run/postgresql`` is the directory containing the Unix socket.
\ No newline at end of file
diff --git a/source/install/setup-nginx-proxy.rst b/source/deploy/server/setup-nginx-proxy.rst
similarity index 87%
rename from source/install/setup-nginx-proxy.rst
rename to source/deploy/server/setup-nginx-proxy.rst
index 3b4b910a511..3a80e84819e 100644
--- a/source/install/setup-nginx-proxy.rst
+++ b/source/deploy/server/setup-nginx-proxy.rst
@@ -1,15 +1,23 @@
-Set up an NGINX proxy
-=====================
+(Recommended) Set up an NGINX proxy
+===================================
-.. include:: ../_static/badges/allplans-selfhosted.rst
- :start-after: :nosearch:
+A proxy server is a server (a computer system or an application) that acts as an intermediary for requests from clients seeking resources from other servers. Mattermost recommends using a proxy in front of Mattermost to increase security, performance and the ability to monitor and shape traffic connecting to Mattermost:
+
+- **Security:** A proxy server can manage Secure Socket Layer (TLS/SSL) encryption and set policy on how network traffic will be routed to the Mattermost server.
+- **Performance:** In a High Availability configuration, the proxy server balances the network load across multiple Mattermost servers for optimized performance. A hardware proxy with dedicated devices for processing SSL encryption and decryption can also be used to increase performance.
+- **Monitoring**: A proxy server can monitor connection traffic and record traffic in standard audit logs that common monitoring tools like Kibana and Splunk can consume and report on. Some of the events that can be captured include file uploads and downloads, which are not tracked by the Mattermost server logging process.
+
+Mattermost supports the `NGINX proxy `_
+
+.. image:: ../../images/architecture_with_proxy.png
+ :alt: Mattermost architecture with NGINX proxy
Install NGINX server
--------------------
NGINX is a popular web server and is responsible for hosting some of the largest and highest-traffic sites on the internet. It's more resource-friendly than Apache in most cases, and can be used as a web server or reverse proxy.
-In a production setting, we recommend using a proxy server for greater security and performance of Mattermost.
+In a production setting, we recommend using a proxy server for greater security and performance of Mattermost:
- SSL termination
- HTTP to HTTPS redirect
@@ -25,7 +33,6 @@ Install NGINX on Ubuntu Server
Because NGINX is available in Ubuntu's default repositories, it's possible to install it from these repositories using the ``apt`` packaging system. First, update your local ``apt`` package index for access to the most recent package listings. Then, install ``nginx``:
-
.. code-block:: sh
sudo apt update
@@ -65,11 +72,11 @@ Now that you have your web server up and running, let's review some basic manage
To stop your web server, use: ``sudo systemctl stop nginx``
To start the web server when it's stopped, use: ``sudo systemctl start nginx``
-
+
To stop and then start the service again, use: ``sudo systemctl restart nginx``
-
+
If you're simply making configuration changes, NGINX can often reload without dropping connections. To do this, use: ``sudo systemctl reload nginx``
-
+
By default, NGINX is configured to start automatically when the server boots. If this isn't what you want, you can disable this behavior using: ``sudo systemctl disable nginx``
To re-enable the service to start up at boot, use: ``sudo systemctl enable nginx``
@@ -95,12 +102,12 @@ NGINX is configured using a file in the ``/etc/nginx/sites-available`` directory
SSL and HTTP/2 are enabled in the provided configuration example.
- .. note::
+.. note::
- - If you're going to use Let's Encrypt to manage your SSL certificate, stop at step 3 and see the :ref:`NGINX HTTP/2 and SSL product documentation ` for details.
- - You'll need valid SSL certificates in order for NGINX to pin the certificates properly. Additionally, your browser must have permissions to accept the certificate as a valid CA-signed certificate.
- - Note that the IP address included in the examples in this documentation may not match your network configuration.
- - If you're running NGINX on the same machine as Mattermost, and NGINX resolves ``localhost`` to more than one IP address (IPv4 or IPv6), we recommend using ``127.0.0.1`` instead of ``localhost``.
+ - If you're going to use Let's Encrypt to manage your SSL certificate, stop at step 3 and see the :ref:`NGINX HTTP/2 and SSL product documentation ` for details.
+ - You'll need valid SSL certificates in order for NGINX to pin the certificates properly. Additionally, your browser must have permissions to accept the certificate as a valid CA-signed certificate.
+ - Note that the IP address included in the examples in this documentation may not match your network configuration.
+ - If you're running NGINX on the same machine as Mattermost, and NGINX resolves ``localhost`` to more than one IP address (IPv4 or IPv6), we recommend using ``127.0.0.1`` instead of ``localhost``.
.. code-block:: text
@@ -196,9 +203,7 @@ SSL and HTTP/2 are enabled in the provided configuration example.
6. Restart NGINX by running ``sudo systemctl restart nginx``.
-7. Verify that you can see Mattermost through the proxy by running ``curl https://localhost``.
-
- If everything is working, you will see the HTML for the Mattermost signup page.
+7. Verify that you can see Mattermost through the proxy by running ``curl https://localhost``. If everything is working, you will see the HTML for the Mattermost signup page.
8. Restrict access to port 8065.
@@ -219,7 +224,7 @@ You can use any certificate that you want, but these instructions show you how t
.. note::
- If Let’s Encrypt is enabled, forward port 80 through a firewall, with :ref:`Forward80To443 ` ``config.json`` setting set to ``true`` to complete the Let’s Encrypt certification. See the `Let's Encrypt/Certbot documentation `_ for additional assistance.
+ If Let’s Encrypt is enabled, forward port 80 through a firewall, with :ref:`Forward80To443 ` ``config.json`` setting set to ``true`` to complete the Let’s Encrypt certification. See the `Let's Encrypt/Certbot documentation `_ for additional assistance.
1. Log in to the server that hosts NGINX and open a terminal window.
@@ -227,10 +232,10 @@ You can use any certificate that you want, but these instructions show you how t
.. note::
- - On Ubuntu this file is located at ``/etc/nginx/sites-available/``. If you don't have this file, run ``sudo touch /etc/nginx/sites-available/mattermost``.
- - On CentOS/RHEL this file is located at ``/etc/nginx/conf.d/``. If you don't have this file, run ``sudo touch /etc/nginx/conf.d/mattermost``.
- - The IP address included in the examples in this documentation may not match your network configuration.
- - If you're running NGINX on the same machine as Mattermost, and NGINX resolves ``localhost`` to more than one IP address (IPv4 or IPv6), we recommend using ``127.0.0.1`` instead of ``localhost``.
+ - On Ubuntu this file is located at ``/etc/nginx/sites-available/``. If you don't have this file, run ``sudo touch /etc/nginx/sites-available/mattermost``.
+ - On CentOS/RHEL this file is located at ``/etc/nginx/conf.d/``. If you don't have this file, run ``sudo touch /etc/nginx/conf.d/mattermost``.
+ - The IP address included in the examples in this documentation may not match your network configuration.
+ - If you're running NGINX on the same machine as Mattermost, and NGINX resolves ``localhost`` to more than one IP address (IPv4 or IPv6), we recommend using ``127.0.0.1`` instead of ``localhost``.
.. code-block:: text
@@ -534,4 +539,4 @@ If you're running Let's Encrypt within Mattermost you'll see this error:
{"level":"error","ts":1609092001.752515,"caller":"http/server.go:3088","msg":"http: TLS handshake error from ip:port: 429 urn:ietf:params:acme:error:rateLimited: Error creating new order :: too many failed authorizations recently: see https://letsencrypt.org/docs/rate-limits/","source":"httpserver"}
-This means that you've attempted to generate a cert too many times. You can find more information `here `_.
+This means that you've attempted to generate a cert too many times. You can find more information `here `_.
\ No newline at end of file
diff --git a/source/deploy/server/setup-tls.rst b/source/deploy/server/setup-tls.rst
new file mode 100644
index 00000000000..927d97c3df4
--- /dev/null
+++ b/source/deploy/server/setup-tls.rst
@@ -0,0 +1,70 @@
+(Optional) Set up TLS
+======================
+
+You have two options if you want users to connect with HTTPS:
+
+:doc:`Install a proxy such as NGINX ` and then `set up TLS on the proxy <#Use-TLS-on-NGINX-as-a-proxy>`__. This is our recommended option if you have a large number of users (more than 200), or if you want to use a reverse proxy for other reasons, such as load balancing or caching. A proxy server delivers better performance and provides standard HTTP request logs.
+
+Alternatively, if you have fewer than 200 users, you can set up TLS on Mattermost server. This is the easiest option when you don't need to use a reverse proxy.
+
+ - You can use `Let's Encrypt `__ to automatically install and set up the certificate.
+ - You can also specify your own certificate.
+ - You can use a self-signed certificate, but this is not recommended for production environments.
+
+Configure TLS on the Mattermost server
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+1. In **System Console > Environment > Web Server**:
+
+ a. Change the **Listen Address** setting to ``:443``.
+ b. Change the **Connection Security** setting to ``TLS``.
+ c. Change the **Forward port 80 to 443** setting to ``true``.
+
+2. Activate the ``CAP_NET_BIND_SERVICE`` capability to allow Mattermost to bind to low ports:
+
+ .. code-block:: sh
+
+ sudo setcap cap_net_bind_service=+ep /opt/mattermost/bin/mattermost
+
+3. Install the security certificate. Use Let's Encrypt to automatically install and setup the certificate, or specify your own certificate.
+
+Use a Let's Encrypt certificate
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The certificate is retrieved the first time that a client tries to connect to the Mattermost server. Certificates are retrieved for any hostname a client tries to reach the server at.
+
+1. Change the **Use Let's Encrypt** setting to ``true``.
+2. Restart the Mattermost server for these changes to take effect.
+
+.. note::
+
+ - If Let's Encrypt is enabled, forward port 80 through a firewall, with :ref:`Forward80To443 ` ``config.json`` setting set to ``true`` to complete the Let's Encrypt certification.
+ - Your Mattermost server must be accessible from the Let's Encrypt CA in order to verify your domain name and issue the certificate. Be sure to open your firewall and configure any reverse proxies to forward traffic to ports 80 and 443. More information can be found `at Let's Encrypt `_.
+
+Use your own certificate
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+1. Change the **Use Let's Encrypt** setting to ``false``.
+2. Change the **TLS Certificate File** setting to the location of the certificate file.
+3. Change the **TLS Key File** setting to the location of the private key file.
+4. Restart the Mattermost server for these changes to take effect.
+
+.. note::
+
+ Password-protected certificates aren't supported.
+
+Use TLS on NGINX (as a proxy)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. warning::
+
+ Do not set up TLS on Mattermost before doing so for NGINX. It breaks the connection as the TLS prevents it from successfully communicating with the Mattermost server.
+
+- NGINX will act as a forward proxy to encrypt the traffic between the client and Mattermost server. After installing the SSL certificate, the incoming traffic will be handled via NGINX on port 443 exposed to the internet, proxy to the Mattermost server running on port 80.
+- (Optional) Upstream encryption between NGINX to Mattermost server is allowed.
+- Follow `NGINX's guide on setting up SSL Termination for TCP Upstream Servers `__.
+
+More helpful resources:
+
+- `NGINX's SSL blog `_
+- `NGINX's SSL guide `_
\ No newline at end of file
diff --git a/source/install/trouble-postgres.rst b/source/deploy/server/trouble-postgres.rst
similarity index 85%
rename from source/install/trouble-postgres.rst
rename to source/deploy/server/trouble-postgres.rst
index a4ebf3319a4..80787237ea3 100644
--- a/source/install/trouble-postgres.rst
+++ b/source/deploy/server/trouble-postgres.rst
@@ -1,7 +1,7 @@
PostgreSQL installation troubleshooting
=======================================
-From Mattermost v8.0, :ref:`PostgreSQL ` is our database of choice for Mattermost to enhance the platform’s performance and capabilities.
+From Mattermost v8.0, :ref:`PostgreSQL ` 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.
@@ -25,3 +25,8 @@ CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_posts_message_txt_spanish ON posts U
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.
\ No newline at end of file
diff --git a/source/install/trouble_mysql.rst b/source/deploy/server/trouble_mysql.rst
similarity index 96%
rename from source/install/trouble_mysql.rst
rename to source/deploy/server/trouble_mysql.rst
index 602c2f19133..83a51878c06 100644
--- a/source/install/trouble_mysql.rst
+++ b/source/deploy/server/trouble_mysql.rst
@@ -1,15 +1,12 @@
MySQL installation troubleshooting
==================================
-.. include:: ../_static/badges/allplans-selfhosted.rst
- :start-after: :nosearch:
-
Before you can run the Mattermost server, you must first install and configure a database. You can start Mattermost by navigating to the ``/opt/mattermost`` directory and entering the command ``sudo -u mattermost bin/mattermost``. If the Mattermost server can't connect to the database, it will fail to start. This section deals with MySQL database issues that you may encounter when you start up Mattermost for the first time.
.. note::
- - Additional database tuning guidance is available for specific Mattermost releases. See the :doc:`important upgrade notes ` documentation for more details.
- - See the :ref:`database configuration settings ` documentation for details on configuration options specific to MySQL databases.
+ - Additional database tuning guidance is available for specific Mattermost releases. See the :doc:`important upgrade notes ` documentation for more details.
+ - See the :ref:`database configuration settings ` documentation for details on configuration options specific to MySQL databases.
How you install MySQL varies depending upon which Linux distribution you use. However, once MySQL is installed, the configuration instructions are the
same. For all distributions you must create a ``mattermost`` database and a ``mattermost`` database user. Failure to create these database
diff --git a/source/install/troubleshooting.rst b/source/deploy/server/troubleshooting.rst
similarity index 82%
rename from source/install/troubleshooting.rst
rename to source/deploy/server/troubleshooting.rst
index 21cd3320e00..3a1ea632c2a 100644
--- a/source/install/troubleshooting.rst
+++ b/source/deploy/server/troubleshooting.rst
@@ -1,78 +1,31 @@
-Troubleshooting Mattermost issues
-=================================
+General deployment troubleshooting
+===================================
-.. include:: ../_static/badges/allplans-selfhosted.rst
- :start-after: :nosearch:
+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 troubleshooting issues and techniques.
+Start Mattermost at system boot
+-------------------------------
-Depending on the type of error or problem you're experiencing, refer to the sections below for troubleshooting guidance. If you're a new user, it might help to go over the installation steps again to confirm the process.
-
-If you have a :doc:`paid subscription to a Mattermost offering `, such as :ref:`Mattermost Professional ` or :ref:`Mattermost Enterprise `, you're entitled to open support tickets via our `online support portal `_.
-
-Additionally, peer-to-peer support is available for all Mattermost users in our `troubleshooting forum `_ and on our `community server `_.
-
-Important notes
----------------
-
-- Do not manipulate the Mattermost database directly. Mattermost is designed to stop working if data integrity is compromised.
-- Any manipulation of the database must be done using the built in command line tools.
-- Start simple with the step-by-step install guides for your operating system.
-
-Deployment troubleshooting
---------------------------
-
-Docker deployments
-~~~~~~~~~~~~~~~~~~
-
-If you're deploying the Mattermost server using Docker on an M1 Mac and encountering permission issues in the Docker container, re-create the required directories and set their permissions, then skip the following command because it causes the deploy to stop working.
+To have the Mattermost Server start at system boot, the systemd unit file needs to be enabled. Run the following command:
.. code-block:: sh
- sudo chown -R 2000:2000 ./volumes/app/mattermost
+ sudo systemctl enable mattermost.service
-If you're experiencing issues deploying on Docker generally, ensure the docker daemon is enabled and running:
+If your database is on the same system as your Mattermost Server, we recommend editing the default ``/lib/systemd/system/mattermost.service`` systemd unit file to add ``After=postgresql.service`` and ``BindsTo=postgresql.service`` to the ``[Unit]`` section.
-.. code-block:: sh
-
- sudo systemctl enable --now docker
+Run Mattermost without a proxy
+------------------------------
-To remove all data and settings for your Mattermost deployment:
+Mattermost binds to 443 instead of 8065. The Mattermost binary requires the correct permissions to do that binding. You must activate the ``CAP_NET_BIND_SERVICE`` capability to allow the new Mattermost binary to bind to ports lower than 1024 by running the following command:
.. code-block:: sh
- sudo rm -rf ./volumes
-
-Postgres issues
-~~~~~~~~~~~~~~~
-
-You can change the Postgres username and/or password (recommended) in the ``.env`` file.
-
-TLS and NGINX issues
-~~~~~~~~~~~~~~~~~~~~~
+ sudo setcap cap_net_bind_service=+ep ./mattermost/bin/mattermost
-For an in-depth guide to configuring the TLS certificate and key for NGINX, please refer to `this document in the repository `__.
-
-Install a different version of Mattermost
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-1. Shut down your deployment.
-
-2. Run ``git pull`` to fetch any recent changes to the repository, paying attention to any potential ``env.example`` changes.
-
-3. Adjust the ``MATTERMOST_IMAGE_TAG`` in the ``.env`` file to point your desired `enterprise `__ or `team `__ image version.
-
-4. Redeploy Mattermost.
-
-Upgrading from ``mattermost-docker``
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-For an in-depth guide to upgrading from the deprecated `mattermost-docker repository `__, please refer to `this document `__. For additional help, please refer to `this issue `__.
-
-General troubleshooting
------------------------
+.. note::
-Some of these suggestions can be done directly, and others may need consultation from your network administrator.
+ We highly recommend using a proxy in front of Mattermost server for up to 200 concurrent users. If you have fewer than 200 concurrent users, you can :doc:`set up TLS `. If you're exceeding 200 concurrent users, you'll need :doc:`a proxy `, such as NGINX, in front of Mattermost to manage the traffic.
Review Mattermost logs
----------------------
@@ -80,7 +33,7 @@ Review Mattermost logs
You can access logs for Mattermost and use them for troubleshooting. These steps assume that you have appropriate :doc:`system admin permissions ` to do so.
Mattermost Server logs
-----------------------
+~~~~~~~~~~~~~~~~~~~~~~~
- Ensure that log files are being created: Navigate to **System Console > Environment > Logging**, confirm that **Output logs to file** is set to **true**.
- You can obtain the path for the log files in **System Console > Environment > Logging > File Log Directory**.
@@ -95,7 +48,7 @@ If filesystem access is not possible, navigate to **System Console > Reporting >
You can find more on logging settings :ref:`here `.
Mattermost Desktop App logs
----------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Access desktop app logs by going to **Help > Show logs** from the menu bar.
@@ -106,17 +59,17 @@ Alternatively, you can access desktop app log files in the following directory:
- **MacOS:** ``~/Library/Logs/Mattermost`` (DMG installation) OR ``~Library/Containers/Mattermost.Desktop/Data/Library/Logs/Mattermost`` (Appstore installation only)
Mattermost web logs
---------------------
+~~~~~~~~~~~~~~~~~~~~
The browser-based app does not produce additional log files. If the app has to be debugged, use the development tools integrated in your browser for action history.
Mattermost Push Notification Service logs
------------------------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Logging for the Mattermost Push Notification Service is handled via system log with logger and is appended to ``/var/log/syslog``.
Review Mattermost environment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-----------------------------
Put together a timeline to eliminate events prior to the error/problem occurring. For example, if you recently reconfigured your firewall and are now having connection issues it might be worth reviewing the settings or rolling back to see whether that resolves the problem.
diff --git a/source/install/software-hardware-requirements.rst b/source/deploy/software-hardware-requirements.rst
similarity index 70%
rename from source/install/software-hardware-requirements.rst
rename to source/deploy/software-hardware-requirements.rst
index 142d456d557..1d7af7a35bd 100644
--- a/source/install/software-hardware-requirements.rst
+++ b/source/deploy/software-hardware-requirements.rst
@@ -9,11 +9,7 @@ This guide outlines minimum software and hardware requirements for deploying Mat
Deployment overview
-------------------
-Please see the :doc:`Mattermost Deployment Overview ` documentation for a summary of software systems whose requirements are described in this document.
-
-.. image:: ../images/network-diagram.svg
- :alt: Mattermost network diagram shows how the components can be deployed. Includes optional configurations for scaling for larger enterprise organizations.
- :class: bg-white
+Please see the :doc:`Application architecture ` documentation for a summary of software systems and components whose requirements are described in this document.
Software requirements
---------------------
@@ -101,13 +97,44 @@ Database software
Amazon Aurora equivalents of both PostgreSQL and MySQL are also supported.
-See the :ref:`minimum supported version policy ` documentation for minimum PostgreSQL version support details, and see the :doc:`Migrate from MySQL to PostgreSQL ` product documentation to learn about migrating from MySQL to PostgreSQL.
-
.. important::
- MariaDB v10+ no longer functions as a MySQL drop-in replacement, and it's not supported for Mattermost due to the requirement of MySQL 5.7.12. Prior versions of MariaDB were not officially supported but may have functioned in older Mattermost releases. If you are running MariaDB now, migrating from MariaDB to the MySQL equivalent is recommended.
+ - MariaDB v10+ no longer functions as a MySQL drop-in replacement, and it's not supported for Mattermost due to the requirement of MySQL 5.7.12. Prior versions of MariaDB were not officially supported but may have functioned in older Mattermost releases. If you are running MariaDB now, migrating from MariaDB to the MySQL equivalent is recommended.
+ - Deployments requiring searching in Chinese, Japanese, and Korean languages require MySQL 5.7.6+ and the configuration of `ngram Full-Text parser `__. For searching two characters, you will also need to set ``ft_min_word_len`` and ``innodb_ft_min_token_size`` to ``2`` and restart MySQL. See `CJK discussion `__ for details.
+
+Minimum PostgreSQL database support 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.
+
+.. note::
+
+ Mattermost v10.6 is not an :ref:`Extended Support Release (ESR) `. 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** |
++===========================================================+==================+================================+
+| :ref:`v9.11 ESR ` | 2024-8-15 | 11.x |
++-----------------------------------------------------------+------------------+--------------------------------+
+| :ref:`v10.5 ESR ` | 2025-2-15 | 11.x |
++-----------------------------------------------------------+------------------+--------------------------------+
+| :ref:`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 `_. to discuss your options.
-Deployments requiring searching in Chinese, Japanese, and Korean languages require MySQL 5.7.6+ and the configuration of `ngram Full-Text parser `__. For searching two characters, you will also need to set ``ft_min_word_len`` and ``innodb_ft_min_token_size`` to ``2`` and restart MySQL. See `CJK discussion `__ for details.
+Database Search limitations
+:::::::::::::::::::::::::::::
Search limitations on PostgreSQL:
diff --git a/source/deploy/transport-encryption.rst b/source/deploy/transport-encryption.rst
new file mode 100644
index 00000000000..93e7eea9b42
--- /dev/null
+++ b/source/deploy/transport-encryption.rst
@@ -0,0 +1,474 @@
+Configuring transport encryption
+=================================
+
+.. include:: ../_static/badges/ent-selfhosted.rst
+ :start-after: :nosearch:
+
+The components of the Mattermost setup are shown in the following diagram, including the transport encryption used. Aside from the encryption between the nodes of the Mattermost cluster, all transports rely on TLS encryption.
+
+.. note::
+
+ The transport between the Application servers is not used by default and requires additional setup steps. Enhancing the core product to include automatic encryption between cluster nodes is in progress and planned for a later release.
+
+.. image:: ../images/transport-encryption.png
+ :alt: Components of the Mattermost setup where all transports rely on TLS encryption.
+
+Configuring proxy to Mattermost transport encryption
+-----------------------------------------------------
+
+.. include:: ../_static/badges/ent-selfhosted.rst
+ :start-after: :nosearch:
+
+Mattermost is able to encrypt the traffic between the proxy and the application server using TLS.
+
+Prerequisites
+~~~~~~~~~~~~~~
+
+- Operational Mattermost server or cluster.
+- Authentication credentials for Mattermost user on application server.
+
+Example environment
+~~~~~~~~~~~~~~~~~~~
+
+In this scenario there is one Mattermost application server and one NGINX server, both running Ubuntu 20.04, with the following IPs:
+
+- **transport-encryption-mattermost1:** 10.10.250.146
+- **transport-encryption-nginx:** 10.10.250.107
+
+Configuring NGINX
+~~~~~~~~~~~~~~~~~~
+
+On the NGINX server, connect to both servers with a sudo or root user. Open the Mattermost proxy configuration and search for the following line twice:
+
+.. code-block:: text
+
+ proxy_pass http://backend;
+
+Change the protocol from ``http`` to ``https``:
+
+.. code-block:: text
+
+ proxy_pass https://backend;
+
+Afterwards do not reload the NGINX server yet to minimize the downtime of the service.
+
+Configuring Mattermost
+~~~~~~~~~~~~~~~~~~~~~~~
+
+On the Mattermost server, change to the config directory of Mattermost and generate a self-signed certificate that will be used to encrypt the traffic between the proxy server and the application server.
+
+**Note:** Alternatively you can sign a certificate from your company's CA.
+
+.. code-block:: sh
+
+ cd /opt/mattermost/config
+ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
+ chown root:mattermost *.pem
+ chmod 640 *.pem
+
+
+Once complete, open the file ``config.json`` and modify the values ``ConnectionSecurity``, ``TLSCertFile`` and ``TLSKeyFile`` in the ``ServiceSettings`` section.
+
+**Before**
+
+.. code-block:: json
+
+ {
+ "ServiceSettings": {
+ "SiteURL": "https://transport-encryption.dev.example.com",
+ "WebsocketURL": "",
+ "LicenseFileLocation": "",
+ "ListenAddress": ":8065",
+ "ConnectionSecurity": "",
+ "TLSCertFile": "",
+ "TLSKeyFile": "",
+ "...":"..."
+ },
+ "...":"..."
+ }
+
+
+**After**
+
+.. code-block:: json
+
+ {
+ "ServiceSettings": {
+ "SiteURL": "https://transport-encryption.dev.example.com",
+ "WebsocketURL": "",
+ "LicenseFileLocation": "",
+ "ListenAddress": ":8065",
+ "ConnectionSecurity": "TLS",
+ "TLSCertFile": "/opt/mattermost/config/cert.pem",
+ "TLSKeyFile": "/opt/mattermost/config/key.pem",
+ "...":"..."
+ },
+ "...":"..."
+ }
+
+
+Restart the Mattermost server and ensure it's up and running:
+
+.. code-block:: sh
+
+ sudo systemctl restart mattermost
+ systemctl status mattermost
+
+.. code-block:: text
+
+ ● mattermost.service - Mattermost
+ Loaded: loaded (/lib/systemd/system/mattermost.service; static; vendor preset: enabled)
+ Active: active (running) since Mon 2019-10-28 16:45:29 UTC; 1h 15min ago
+ [...]
+
+Finally, on the **NGINX server**, reload the configuration to ensure that requests are sent on HTTPS:
+
+.. code-block:: sh
+
+ sudo systemctl reload nginx
+
+Configuring database transport encryption
+------------------------------------------
+
+.. include:: ../_static/badges/ent-selfhosted.rst
+ :start-after: :nosearch:
+
+Mattermost is able to encrypt the traffic between the database and the application using TLS. This guide describes the setup steps for a single, separate MySQL server.
+
+Prerequisites
+~~~~~~~~~~~~~~
+
+- Operational Mattermost server or cluster.
+- Operational MySQL server.
+- Confirmed connectivity between Mattermost and MySQL server.
+- Authentication credentials for Mattermost user on MySQL server.
+
+Example environment
+~~~~~~~~~~~~~~~~~~~
+
+In this scenario there is one Mattermost application server and one MySQL server, both running Ubuntu 20.04, with the following IPs:
+
+- **transport-encryption-mattermost1:** 10.10.250.146
+- **transport-encryption-mysql1:** 10.10.250.148
+
+Configuring MySQL
+~~~~~~~~~~~~~~~~~~
+
+As a first step, connect to both servers with a sudo or root user.
+
+Execute the following command to prepare the server for SSL connections:
+
+.. code-block:: sh
+
+ sudo mysql_ssl_rsa_setup --uid=mysql
+
+This generates self-signed certificates in ``/var/lib/mysql/`` that the MySQL server uses to encrypt the connection. If you would like to use certificates from your company CA, please follow the MySQL documentation for configuration steps.
+
+**Note:** Optionally, it can be enforced that all connections must be made via a local socket connection or TLS. To do this, open ``/etc/mysql/mysql.conf.d/mysqld.cnf`` and append the following line to the file:
+
+.. code-block:: text
+
+ require_secure_transport = ON
+
+Any connection to the MySQL server must now be made with secure transport enabled.
+
+Last but not least, restart the server and confirm it is up and running:
+
+ .. code-block:: sh
+
+ systemctl restart mysql
+ systemctl status mysql
+
+.. code-block:: text
+
+ ● mysql.service - MySQL Community Server
+ Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
+ Active: active (running) since Fri 2019-10-18 16:41:25 UTC; 2s ago
+ Process: 8380 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid (code=exited, status=0/SUCCESS)
+ Process: 8360 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
+ Main PID: 8382 (mysqld)
+ Tasks: 27 (limit: 2361)
+ CGroup: /system.slice/mysql.service
+ └─8382 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
+
+ Oct 18 16:41:25 transport-encryption-mysql1 systemd[1]: Stopped MySQL Community Server.
+ Oct 18 16:41:25 transport-encryption-mysql1 systemd[1]: Starting MySQL Community Server...
+ Oct 18 16:41:25 transport-encryption-mysql1 systemd[1]: Started MySQL Community Server.
+
+Configuring Mattermost
+~~~~~~~~~~~~~~~~~~~~~~~
+
+On the Mattermost server, open the file ``config.json`` and look for the ``DataSource`` value in the ``SqlSettings`` section. It should look similar to this:
+
+.. code-block:: text
+
+ "DataSource": "mmuser:sad09zusaopdhsad123@tcp(10.10.250.148:3306)/mattermost?charset=utf8mb4,utf8\u0026writeTimeout=30s",
+
+At the end of the line, we can configure that TLS must be turned on with the ``tls`` flag which supports the following values:
+
+- true (Require TLS + a trusted certificate)
+- false
+- skip-verify (Require TLS + accept self-signed)
+- preferred (Try TLS, fallback to unencrypted)
+
+In our case we need to use ``skip-verify`` since we use a self-signed certificate. The configuration setting will now look like this:
+
+.. code-block:: text
+
+ "DataSource": "mmuser:sad09zusaopdhsad123@tcp(10.10.250.148:3306)/mattermost?charset=utf8mb4,utf8\u0026writeTimeout=30s&tls=skip-verify",
+
+If you're running Mattermost in a cluster, be sure to update the value on each node of the cluster. If you are using configuration in the database, be sure to update the ``systemd`` unit file and enable TLS for the configuration store.
+
+Once complete, restart the Mattermost server and ensure the system is operational:
+
+.. code-block:: sh
+
+ sudo systemctl restart mattermost
+ systemctl status mattermost
+
+.. code-block:: text
+
+ ● mattermost.service - Mattermost
+ Loaded: loaded (/lib/systemd/system/mattermost.service; static; vendor preset: enabled)
+ Active: active (running) since Fri 2019-10-18 16:47:08 UTC; 3s ago
+ Process: 3424 ExecStartPre=/opt/mattermost/bin/pre_start.sh (code=exited, status=0/SUCCESS)
+ Main PID: 3443 (mattermost)
+ Tasks: 20 (limit: 2361)
+ CGroup: /system.slice/mattermost.service
+ ├─3443 /opt/mattermost/bin/mattermost --config=mysql://mmuser:sad09zusaopdhsad123@tcp(10.10.250.148:3306)/mattermost?charset=utf8mb4,utf8&writeTimeout=30s&tls=skip-verify
+ └─3459 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64
+
+ Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"debug","ts":1571417228.8637397,"caller":"scheduler/worker.go:36","msg":"Worker started","worker":"Plugins"}
+ Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"debug","ts":1571417228.8639545,"caller":"jobs/jobs_watcher.go:38","msg":"Watcher Started"}
+ Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"info","ts":1571417228.8641603,"caller":"jobs/schedulers.go:72","msg":"Starting schedulers."}
+ Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"debug","ts":1571417228.8645394,"caller":"app/web_hub.go:436","msg":"Hub for index 0 is starting with goroutine 3923"}
+ Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"debug","ts":1571417228.8648505,"caller":"app/web_hub.go:436","msg":"Hub for index 1 is starting with goroutine 3924"}
+ Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"debug","ts":1571417228.8656101,"caller":"web/static.go:31","msg":"Using client directory at /opt/mattermost/client"}
+ Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"info","ts":1571417228.8681324,"caller":"commands/server.go:105","msg":"Sending systemd READY notification."}
+ Oct 18 16:47:08 transport-encryption-mattermost1 systemd[1]: Started Mattermost.
+ Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"debug","ts":1571417228.9003174,"caller":"jobs/schedulers.go:166","msg":"Next run time for scheduler","scheduler_name":"MigrationsSched
+ Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"debug","ts":1571417228.9025588,"caller":"jobs/schedulers.go:166","msg":"Next run time for scheduler","scheduler_name":"PluginsSchedule
+
+Configuring cluster transport encryption
+-----------------------------------------
+
+.. include:: ../_static/badges/ent-selfhosted.rst
+ :start-after: :nosearch:
+
+Mattermost is able to encrypt the messages sent within the cluster of a deployment using SSH tunneling. The guide walks through the deployment of this solution on Ubuntu 20.04, but it can be adapted for any Linux operating system.
+
+While this document only describes the configuration of a three-node cluster, it is by no means limited to that number.
+
+Prerequisites
+~~~~~~~~~~~~~
+
+- SSH port whitelisted between each node of the deployment.
+- Active ufw/iptables on each node.
+- Access to the root/sudo user of each node for configuration.
+- A configured Mattermost cluster.
+- Mattermost running with a dedicated service user.
+- Mattermost service is stopped on each cluster node.
+
+.. note::
+ Support on the application level is currently in development and, when available, will deprecate this document.
+
+Example environment
+~~~~~~~~~~~~~~~~~~~
+
+In this scenario there are three application nodes in our environment with the following hostname/IP mapping:
+
+- **transport-encryption-mattermost1:** 10.10.250.146
+- **transport-encryption-mattermost2:** 10.10.250.231
+- **transport-encryption-mattermost3:** 10.10.250.165
+
+Preparations
+~~~~~~~~~~~~~
+
+- Connect to each Mattermost server with a sudo or root user.
+- Make a note of the IP from each cluster member used for the internal communication.
+- Ensure ``AllowTcpForwarding`` is enabled in ``/etc/ssh/sshd_config`` of each cluster node.
+
+SSH authentication
+~~~~~~~~~~~~~~~~~~~
+
+On each node, generate a SSH key-pair for the service account. In our scenario this is called ``mattermost``:
+
+.. code-block:: sh
+
+ sudo -u mattermost ssh-keygen -t rsa
+
+.. code-block:: text
+
+ Generating public/private rsa key pair.
+ Enter file in which to save the key (/home/mattermost/.ssh/id_rsa):
+ Enter passphrase (empty for no passphrase):
+ Enter same passphrase again:
+ Your identification has been saved in /home/mattermost/.ssh/id_rsa.
+ Your public key has been saved in /home/mattermost/.ssh/id_rsa.pub.
+ The key fingerprint is:
+ SHA256:redacted mattermost@transport-encryption-mattermost1
+
+
+The location of the SSH key itself is irrelevant if company policies require the usage of another storage location.
+
+Next, ensure that the SSH public key of each node is added to the ``authorized_keys`` file of the other nodes of the cluster. To do so, copy the contents of ``/home/mattermost/.ssh/id_rsa.pub`` of nodes 2 and 3, and add it to ``/home/mattermost/.ssh/authorized_keys`` of node 1.
+
+Repeat this step for each node of the cluster. As a result, each node should be able to establish an SSH connection to the other nodes of the cluster.
+
+.. note::
+
+ This service account can be separate from the service account already used for the Mattermost ``systemd`` service itself. It's important that this service account is allowed to create a SSH tunnel with port forwarding, but it doesn't require any additional permissions.
+
+ufw configuration
+~~~~~~~~~~~~~~~~~
+
+As a next step, allow SSH access from each of the other member nodes, e.g.:
+
+- mattermost1 allows from mattermost2 and mattermost3
+- mattermost2 allows from mattermost1 and mattermost3
+- mattermost3 allows from mattermost1 and mattermost2
+
+To do so, we add an exception in the firewall. The commands for ``mattermost1`` look as follows:
+
+.. code-block:: sh
+
+ sudo ufw allow from 10.10.250.231/32 to any port ssh
+ sudo ufw allow from 10.10.250.165/32 to any port ssh
+ sudo ufw status
+
+.. code-block:: text
+
+ Rule added
+ Rule added
+ Status: active
+
+ To Action From
+ -- ------ ----
+ 22/tcp ALLOW 10.10.250.10
+ 8065/tcp ALLOW Anywhere
+ 22/tcp ALLOW 10.10.250.231
+ 22/tcp ALLOW 10.10.250.165
+
+
+Repeat the same steps on the other nodes, replacing the IPs with the ones from the other member nodes. Do so for each member node, excluding the node itself.
+
+Next, open ``/etc/ufw/after.rules`` and add the following block to the bottom of the file:
+
+.. code-block:: text
+
+ *nat
+ :POSTROUTING ACCEPT [0:0]
+ :PREROUTING ACCEPT [0:0]
+
+ -A OUTPUT -p tcp -d 10.10.250.231 --dport 8075 -j DNAT --to-destination 127.0.0.1:18075
+ -A OUTPUT -p tcp -d 10.10.250.231 --dport 8074 -j DNAT --to-destination 127.0.0.1:18074
+ -A OUTPUT -p tcp -d 10.10.250.165 --dport 8075 -j DNAT --to-destination 127.0.0.1:28075
+ -A OUTPUT -p tcp -d 10.10.250.165 --dport 8074 -j DNAT --to-destination 127.0.0.1:28074
+
+ COMMIT
+
+
+Two lines always belong to a single node, so in a deployment with four nodes:
+
+.. code-block:: text
+
+ -A OUTPUT -p tcp -d ip_node_2 --dport 8075 -j DNAT --to-destination 127.0.0.1:18075
+ -A OUTPUT -p tcp -d ip_node_2 --dport 8074 -j DNAT --to-destination 127.0.0.1:18074
+ -A OUTPUT -p tcp -d ip_node_3 --dport 8075 -j DNAT --to-destination 127.0.0.1:28075
+ -A OUTPUT -p tcp -d ip_node_3 --dport 8074 -j DNAT --to-destination 127.0.0.1:28074
+ -A OUTPUT -p tcp -d ip_node_4 --dport 8075 -j DNAT --to-destination 127.0.0.1:38075
+ -A OUTPUT -p tcp -d ip_node_4 --dport 8074 -j DNAT --to-destination 127.0.0.1:38074
+
+Please be aware that the ports on the right side must be unique, so if you have a cluster of six nodes, use 8075 and 8074 with 1 to 5 in front of it. If the cluster is of bigger size, additional ports must be used.
+
+Ensure that your operating system has IP forwarding enabled using the following command:
+
+.. code-block:: sh
+
+ sysctl -w net.ipv4.ip_forward=1
+
+After that, reload the ufw rules and confirm that the iptable rules were successfully created:
+
+.. code-block:: sh
+
+ iptables -t nat -L
+
+.. code-block:: text
+
+ Chain PREROUTING (policy ACCEPT)
+ target prot opt source destination
+
+ Chain INPUT (policy ACCEPT)
+ target prot opt source destination
+
+ Chain OUTPUT (policy ACCEPT)
+ target prot opt source destination
+ DNAT tcp -- anywhere 10.10.250.231 tcp dpt:8075 to:127.0.0.1:18075
+ DNAT tcp -- anywhere 10.10.250.231 tcp dpt:8074 to:127.0.0.1:18074
+ DNAT tcp -- anywhere 10.10.250.165 tcp dpt:8075 to:127.0.0.1:28075
+ DNAT tcp -- anywhere 10.10.250.165 tcp dpt:8074 to:127.0.0.1:28074
+
+Repeat those steps for every node on the cluster. At the end of this section the following should be configured:
+
+- SSH access enabled in firewall from each cluster node to another.
+- Per node 2 iptables rules for port 8074 and 8075.
+- IP forwarding enabled.
+
+SSH configuration
+~~~~~~~~~~~~~~~~~
+
+As a next step, ensure that the SSH tunnels are created as part of the Mattermost service start. To do so, create a file called ``pre_start.sh`` in ``/opt/mattermost/bin`` on ``mattermost1``:
+
+.. code-block:: sh
+
+ #!/bin/bash
+ ssh -N -f -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -L 18075:10.10.250.231:8075 10.10.250.231 || true
+ ssh -N -f -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -L 18074:10.10.250.231:8074 10.10.250.231 || true
+ ssh -N -f -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -L 28075:10.10.250.165:8075 10.10.250.165 || true
+ ssh -N -f -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -L 28074:10.10.250.165:8074 10.10.250.165 || true
+
+.. note::
+
+ - We're ignoring the error from the SSH connection itself in case a tunnel is already active. Otherwise the Mattermost server would fail to start.
+ - Please make sure to back up this script in case of a version upgrade.
+
+Afterwards, set the executable bit on the shell script:
+
+.. code-block:: sh
+
+ chmod +x /opt/mattermost/bin/pre_start.sh
+
+Open the systemd unit file of Mattermost and search for ``Type=Notify``. After this, enter a ``ExecStartPre`` script that will be executed before Mattermost itself is started:
+
+.. code-block:: text
+
+ [Service]
+ Type=notify
+ ExecStartPre=/opt/mattermost/bin/pre_start.sh
+
+Reload the systemd daemon afterwards:
+
+.. code-block:: sh
+
+ systemctl daemon-reload
+
+Repeat the same steps on each of the member nodes and adapt the node IPs and amount of entries for your environment.
+
+Cluster start
+~~~~~~~~~~~~~~
+
+Once each node is configured, restart the service on each cluster and confirm that it's running using the command below:
+
+.. code-block:: sh
+
+ systemctl start mattermost
+ systemctl status mattermost.service
+
+.. code-block:: text
+
+ ● mattermost.service - Mattermost
+ Loaded: loaded (/lib/systemd/system/mattermost.service; static; vendor preset: enabled)
+ Active: active (running) since Fri 2019-10-04 19:44:20 UTC; 5min ago
+ Process: 16734 ExecStartPre=/opt/mattermost/bin/pre_start.sh (code=exited, status=0/SUCCESS)
+
+Next, open the Mattermost System Console and confirm that each node is reporting successfully in the High Availability section.
diff --git a/source/deploy/use-prebuilt-mobile-apps.rst b/source/deploy/use-prebuilt-mobile-apps.rst
deleted file mode 100644
index a860584cb9c..00000000000
--- a/source/deploy/use-prebuilt-mobile-apps.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-Using Mattermost's pre-built mobile apps
-========================================
-
-.. include:: ../_static/badges/allplans-cloud-selfhosted.rst
- :start-after: :nosearch:
-
-We strongly recommend using Mattermost’s pre-built mobile app. This approach is recommended for all Mattermost customers.
-
-Deployment options
-------------------
-
-When you decide to use the pre-built Mattermost mobile apps, you have two ways to distribute them: ask your users to download them, or distribute them through an Enterprise Mobile Management (EMM) provider.
-
-Using public app stores
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Your users can download the Mattermost mobile app as an `iOS app `__ or an `Android app `__ from a public app store. When users launch the Mattermost Mobile App, they must enter the address of your Mattermost server to connect their mobile app to the server.
-
-Using an EMM provider
-~~~~~~~~~~~~~~~~~~~~~
-
-See our :doc:`Deploying Using an EMM Provider ` documentation to learn more about deploying Mattermost mobile apps through an EMM provider.
-
-Setting up push notifications
------------------------------
-
-See our :doc:`Mobile Push Notifications ` documentation to learn about setting up push notifications for Mattermost pre-built mobile apps.
-
-Success! Your public app store deployment is complete
------------------------------------------------------
-
-If you don't need the additional security provided via an EMM provider, your deployment is complete! Feel free to point your users to our :doc:`Mattermost ` end user product documentation to learn more.
diff --git a/source/getting-started/architecture-overview.rst b/source/getting-started/architecture-overview.rst
deleted file mode 100644
index ee416c5b80c..00000000000
--- a/source/getting-started/architecture-overview.rst
+++ /dev/null
@@ -1,220 +0,0 @@
-Architecture overview
-=====================
-
-.. include:: ../_static/badges/allplans-selfhosted.rst
- :start-after: :nosearch:
-
-This page provides an overview of the Mattermost architecture with reference architecture. For a more detailed deployment overview, :doc:`check out our deployment wiki `.
-
-.. toctree::
- :maxdepth: 2
-
-Basics
-------
-
-At its core, Mattermost is a single-compiled Go binary that is exposed as a Restful JSON web server with Javascript and Go clients. See the Restful API docs `here `__.
-
-It is configured using :doc:`config/config.json ` and provides the following:
-
-- **Authentication client:** The functionality for users to log into Mattermost via email address and password in Team Edition. Mattermost Professional adds the ability for users to authenticate using Active Directory or LDAP, and Mattermost Enterprise adds the ability to authenticate using SAML SSO providers like ADFS, OneLogin, and Okta.
-- **Authentication provider:** Enables the Mattermost server to authenticate to other services like GitLab and Zapier using OAuth 2.0.
-- **Notification service:** Sends notifications via SMTP or a Push Notification Service for mobile applications.
-- **Data management service:** Connects to supported databases and file storage solutions (local, network-attached storage, Amazon S3, etc), and manages the reading and writing of data between them.
-
-The binary talks to a database, typically PostgreSQL, and a filestore. See the :doc:`Migrate from MySQL to PostgreSQL ` product documentation for details on migrating from MySQL to PostgreSQL.
-
-.. image:: ../images/architecture_basics.png
-
-Push notification service
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Mattermost :doc:`hosted push notification service ` can be used to send push notifications to mobile clients. Team Edition users can deploy the service using the Mattermost :ref:`test push notification service ` or :ref:`host their own push notification service ` and :doc:`compile their mobile applications ` to use that service.
-
-Proxy
-~~~~~
-
-A proxy server is a server (a computer system or an application) that acts as an intermediary for requests from clients seeking resources from other servers. Mattermost recommends using a proxy in front of Mattermost to increase security, performance and the ability to monitor and shape traffic connecting to Mattermost:
-
-- **Security:** A proxy server can manage Secure Socket Layer (TLS/SSL) encryption and set policy on how network traffic will be routed to the Mattermost server.
-- **Performance:** In a High Availability configuration, the proxy server balances the network load across multiple Mattermost servers for optimized performance. A hardware proxy with dedicated devices for processing SSL encryption and decryption can also be used to increase performance.
-- **Monitoring**: A proxy server can monitor connection traffic and record traffic in standard audit logs that common monitoring tools like Kibana and Splunk can consume and report on. Some of the events that can be captured include file uploads and downloads, which are not tracked by the Mattermost server logging process.
-
-Mattermost provides documentation and support for the `NGINX proxy `_. For information on how to install and configure NGINX for your environment, see :doc:`our deployment guides `. Mattermost also unofficially supports other proxies including Apache 2.
-
-.. image:: ../images/architecture_with_proxy.png
-
-Communication protocols
-~~~~~~~~~~~~~~~~~~~~~~~
-
-There are also communication protocols (HTTPS and WS) that define the type of connection the user makes with the Mattermost server.
-
-**HTTPS Connection** (Secure Hypertext Transfer Protocol)
-
-- HTTPS connections to the Mattermost server render pages and provide access to core platform functionality, but do not include real-time interactivity (which is enabled by WSS connections).
-- HTTPS is a secure, encrypted protocol and is highly recommended for production. Unencrypted HTTP connections may be used in initial testing and configuration, but should never be used in a production environment.
-
-**WSS Connection** (Secure WebSocket Protocol)
-
-Secure WebSocket (WSS) connections to the Mattermost Server enable real-time updates and notifications between clients and the server.
-
-If a WSS connection is not available and HTTPS is substituted, the system will appear to work but real-time updates and notifications will not. In this mode of operation, updates will only appear on a page refresh. WSS has a persistent connection to the Mattermost server when a client is connected, while HTTPS has an intermittent connection and only connects to the server when a page or file is requested.
-
-.. image:: ../images/architecture_with_protocol.png
-
-Mattermost services ports
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following table lists the Mattermost services ports for Mattermost Server, push proxy, and mobile app clients. System admins with clients that need to speak to the Mattermost server without a proxy can open specific firewall ports as needed.
-
-**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 | |
-+-------------------------------------------------------------+---------------------------------------+-----------------------------------+-----------+------------+---------------------------------------------------------------+
-
-**Push Proxy**
-
-+---------------+-----------------+-----------------+-----------+------------+----------------------------------------------+
-| Service Name | Config Setting | Port (default) | Protocol | Direction | Info |
-+===============+=================+=================+===========+============+==============================================+
-| Push Proxy | ListenAddress | 8066 | TCP | Inbound | External (no proxy) / Internal (with proxy) |
-+---------------+-----------------+-----------------+-----------+------------+----------------------------------------------+
-
-**Mobile Clients**
-
-In order to receive push notifications, your network must allow traffic on `port 5223 for iOS devices `_ and `ports 5228-5230 for Android `_.
-
-High Availability and scalability
----------------------------------
-
-Mattermost Enterprise supports:
-
-1. Clustered Mattermost servers, which minimize latency by:
-
-- Storing static assets over a global CDN.
-- Deploying multiple Mattermost servers to host API communication closer to the location of end users.
-
-They can also be used to handle scale and failure handoffs in disaster recovery scenarios.
-
-2. Database read replicas, where replicas can be:
-
-- Configured as a redundant backup to the active database server.
-- Used to scale up the number of concurrent users.
-- Deployed closer to the location of end users, reducing latency.
-
-Moreover, search replicas are also supported to handle search queries.
-
-.. image:: ../images/architecture_high_availability.png
-
-Reference architectures
------------------------
-
-The following diagrams show the suggested architecture configurations enterprise deployments of Mattermost at different scales. These diagrams are meant as guidelines for typical Mattermost deployments. Hardware and infrastructure requirements can vary significantly based on usage and policies.
-
-There are two versions of each diagram. One is generalized while the other focuses on AWS.
-
-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. Push proxy can be replaced by the Mattermost :doc:`HPNS `.
-
-Each AWS diagram represents a full High Availability deployment on Amazon Web Services making full use of the available services. Push proxy can optionally be deployed manually in place of HPNS.
-
-5,000 users on Enterprise - General
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. image:: ../images/MattermostDeployment5kUsers.png
- :class: bg-white
-
-5,000 users on Enterprise - AWS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. image:: ../images/MattermostDeployment5kaws.png
- :class: bg-white
-
-5,000 users on Enterprise - Azure
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. image:: ../images/MattermostDeployment5kAzure.png
- :class: bg-white
-
-10,000 users on Enterprise - General
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. image:: ../images/MattermostDeployment10kUsers.png
- :class: bg-white
-
-10,000 users on Enterprise - AWS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. image:: ../images/MattermostDeployment10kaws.png
- :class: bg-white
-
-10,000 users on Enterprise - Azure
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. image:: ../images/MattermostDeployment10kAzure.png
- :class: bg-white
-
-25,000 users on Enterprise - General
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. image:: ../images/MattermostDeployment25kUsers.png
- :class: bg-white
-
-25,000 users on Enterprise - AWS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. image:: ../images/MattermostDeployment25kaws.png
- :class: bg-white
-
-25,000 users on Enterprise - Azure
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. image:: ../images/MattermostDeployment25kAzure.png
- :class: bg-white
-
-50,000 users on Enterprise - AWS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. image:: ../images/MattermostDeployment50kaws.png
- :class: bg-white
-
-50,000 users on Enterprise - Azure
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. image:: ../images/MattermostDeployment50kAzure.png
- :class: bg-white
-
-Database with VIPs
-~~~~~~~~~~~~~~~~~~
-
-The following diagram is a suggested configuration for Highly-Available databases through virtual IPs.
-
-.. image:: ../images/DatabasewithVIPs.png
- :class: bg-white
-
-Load testing
-~~~~~~~~~~~~
-
-Mattermost Enterprise Edition was `load tested `__ with 60,000 concurrent active users with:
-
-- Six Mattermost servers: m4.2xlarge (8 vCPU, 32 GB RAM)
-- One MySQL database server with five read replicas: db.r4.2xlarge (8 vCPU, 61 GB RAM)
-- Three load test runners (for running the loadtest)
-- Three NGINX proxies
diff --git a/source/getting-started/implementation-plan.rst b/source/getting-started/implementation-plan.rst
deleted file mode 100644
index 746668b124b..00000000000
--- a/source/getting-started/implementation-plan.rst
+++ /dev/null
@@ -1,374 +0,0 @@
-Implementation plan
-===================
-
-.. include:: ../_static/badges/allplans-selfhosted.rst
- :start-after: :nosearch:
-
-1 Introduction
---------------
-
-1.1 Purpose
-~~~~~~~~~~~
-
-Mattermost is an open source, private cloud alternative to proprietary SaaS collaboration solutions designed to offer organizations superior control, data sovereignty, configurability, freedom from lock-in, and enhanced security by keeping vital communications behind your firewall. You've chosen to implement Mattermost in our supported `editions and offerings:`_
-
-.. _`editions and offerings:`: https://docs.mattermost.com/about/editions-and-offerings.html
-
-The purpose of this Implementation Plan is to:
-
-- Describe the solution to be deployed;
-- Outline the process for implementing the solution (key personnel, tasks, schedule, etc.);
-- Identify support required during the implementation process.
-
-2 System overview
------------------
-
-This section provides a brief overview of the system to be implemented, including a description of the system and its organization.
-
-2.1 System description
-~~~~~~~~~~~~~~~~~~~~~~
-
-Mattermost is a collaboration solution designed to remove organizational friction. You're implementing Mattermost in order to:
-
-1. **[STATE REASON]**
-2. **[STATE REASON]**
-3. **[STATE REASON]**
-
-In this implementation, you are planning to deploy Mattermost to **[NUMBER OF USERS]** users on the following teams:
-
-1. **[TEAM 1]**
-2. **[TEAM 2]**
-3. **[TEAM 3]**
-
-2.2 System organization
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-A Mattermost Enterprise implementation consists of the following system components:
-
-- **Mattermost Server**
- - The Mattermost Server is a single binary that includes the RESTful JSON web service, authentication client, authentication provider, notification service, and data management service. The Mattermost Server can be deployed in stand-alone or high availability mode where two or more servers are clustered together using gossip protocol and a proxy server that routes traffic from client applications to healthy servers in the cluster.
-- **Mattermost Database**
- - A PostgreSQL database in stand-alone or high-availability configurations (master with read replicas). When choosing the database, consider the :ref:`inherent search limitations of the database type ` and whether :doc:`Elasticsearch ` is most appropriate for your deployment. See the :doc:`Migrate from MySQL to PostgreSQL ` product documentation for details on migrating from MySQL to PostgreSQL.
-- **Mattermost Push Notification Service**
- - Hosted or on-premise service that pushes notifications to Mattermost Android and Mattermost iOS mobile applications.
-- **Mattermost Client Applications**
- - Client applications are available for Mattermost for the following platforms: Android, iOS, Windows, OSX, and Linux (Beta).
-- **Mattermost Web Client**
- - Mattermost users can use their favorite Web browser to connect to their Mattermost server in place of the Mattermost mobile and desktop applications.
-- **Proxy Server**
- - The use of a proxy server (NGINX, Apache, HAProxy, ELB, etc.) is recommended with Mattermost to obtain the benefits of: SSL termination, HTTP to HTTPS redirection, port mapping :80 to :8065, and the creation of standard request logs.
-
-The following diagram is a high-level illustration of the Mattermost platform and how its various components interact with each other within a network:
-
-.. image:: ../images/network-diagram.svg
- :alt: Mattermost network diagram shows how the various system components of the Mattermost platform interact with each other within a network deployment.
- :class: bg-white
-
-**Reference**: https://docs.mattermost.com/deploy/deployment-overview.html
-
-A recommended installation of Mattermost Enterprise configured with a redundant, highly available, highly scalable mode, with application (Mattermost Server) and database High Availability features enabled, will require the following physical, or virtual, servers:
-
-+-------------------+---------+---------------+--------+----------+
-| Task | Qty | CPU | Memory | Storage |
-+===================+=========+===============+========+==========+
-| Mattermost Server | 2 | 2 vCPUs/cores | 4 GB | 45-90 GB |
-+-------------------+---------+---------------+--------+----------+
-| Database Server | 2 | 2 vCPUs/cores | 8 GB | 100 GB |
-+-------------------+---------+---------------+--------+----------+
-| Proxy | 2 | 1 vCPUs/cores | 4 GB | 10 GB |
-+-------------------+---------+---------------+--------+----------+
-
-.. note::
- See the :ref:`Mattermost hardware sizing guidance ` documentation for details.
-
-2.3 Project references
-~~~~~~~~~~~~~~~~~~~~~~
-
-This section provides a bibliography of key project references and deliverables that have been produced before this point in the project development.
-
-- Mattermost Overview: https://docs.mattermost.com/about/product.html
-- Mattermost Software/Hardware Requirements: https://docs.mattermost.com/install/software-hardware-requirements.html
-- Mattermost Security Features: https://docs.mattermost.com/about/security.html
-- Mattermost: https://docs.mattermost.com/guides/collaborate.html
-- Collaborative playbooks: https://docs.mattermost.com/guides/repeatable-processes.html
-
-2.4 Glossary
-~~~~~~~~~~~~
-
-Provide a glossary of all terms and abbreviations used in the manual. If it is several pages in length, it may be placed in an appendix.
-
-3 Management overview
----------------------
-
-The subsequent sections provide a brief description of the implementation and major tasks involved in this section.
-
-3.1 Description of implementation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-3.2 Team
-~~~~~~~~
-
-In this section, identify the System Proponent, the name of the responsible organization(s), and titles and telephone numbers of the staff who serve as points of contact for the system implementation. These points of contact could include the Project Manager. Program Manager, Security Manager. Database Administrator, Configuration Management Manager, or other managers with responsibilities relating to the system implementation. The site implementation representative for each field installation or implementation site should also be included, if appropriate. List all managers and staff with whom the implementation must be coordinated.
-
-3.2.1 Team members
-^^^^^^^^^^^^^^^^^^
-
-+----------+-----------------+----------------------+--------------+
-| Name | Title | Email | Phone |
-+==========+=================+======================+==============+
-| Jane Doe | Project Manager | jane.doe@company.com | 111.111.1111 |
-+----------+-----------------+----------------------+--------------+
-| | | | |
-+----------+-----------------+----------------------+--------------+
-| | | | |
-+----------+-----------------+----------------------+--------------+
-
-3.3 Major tasks
-~~~~~~~~~~~~~~~~
-
-This section provides a brief description of each major task required for the implementation of the system. Add as many subsections as necessary to this section to describe all the major tasks adequately. The tasks described in this section are not site-specific, but generic or overall project tasks that are required to install hardware and software, prepare data, and verify the system.
-
-3.3.1 Create system architecture document
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The system architecture document is used to document the environments that Mattermost will be deployed to including:
-
-- The environment (development, staging, production, etc.)
-- Server, or virtual machine, specifications
-- IP addresses and DNS
-- Network diagram
-
-**Reference**: https://docs.mattermost.com/deploy/deployment-overview.html
-
-3.3.2 Gather required software and documentation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Gather all of the software and documentation required for a successful implementation of the Mattermost platform and place it within the organization’s configuration management system.
-
-3.3.3 Prepare deployment environments
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Build out the required deployment environments (development, staging, production, etc.) and implement configuration management (using a tool like Chef, Puppet, Salt, etc.)
-
-**Reference**: https://docs.mattermost.com/install/software-hardware-requirements.html
-
-3.3.4 Install software
-^^^^^^^^^^^^^^^^^^^^^^
-
-Install and configure Mattermost and its component software (PostgreSQL, NGINX, or another proxy, etc.)
-
-**Reference**: https://docs.mattermost.com/guides/deployment.html#install-guides
-
-Install in High Availability (Available in Mattermost Enterprise): https://docs.mattermost.com/scale/high-availability-cluster-based-deployment.html
-
-3.3.5 Test deployment
-^^^^^^^^^^^^^^^^^^^^^
-
-Verify that the software has been deployed successfully in each environment. Create, or update, automated tests to verify deployments.
-
-**Reference**: https://docs.mattermost.com/manage/health-checks.html
-
-3.3.6 Bulk load data
-^^^^^^^^^^^^^^^^^^^^
-
-Large quantities of data can be imported from a JSON 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.
-
-You can import the following data types:
-
-- Teams
-- Channels (public and private)
-- Users
-- Users’ team memberships
-- Users’ channel memberships
-- Users’ notification preferences
-- Posts (regular, non-reply posts)
-- Direct message and group message channels
-- Direct messages and group messages
-
-**Reference**: https://docs.mattermost.com/onboard/bulk-loading-data.html
-
-3.3.7 Implement backup
-^^^^^^^^^^^^^^^^^^^^^^
-
-Implement backup procedures to protect data stored within the Mattermost database, files uploaded by users, and the Mattermost ``config.json`` file.
-
-**Reference**: https://docs.mattermost.com/deploy/backup-disaster-recovery.html
-
-3.3.8 Implement monitoring
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Mattermost Enterprise supports integrated health and performance monitoring with Prometheus and Grafana. A guide to the statistics collected and reported on is available in the reference below:
-
-**Reference**: https://docs.mattermost.com/scale/deploy-prometheus-grafana-for-performance-monitoring.html
-
-3.3.9 AD/LDAP setup
-^^^^^^^^^^^^^^^^^^^^
-
-Available in Mattermost Enterprise and Professional subscription plans.
-
-Mattermost supports AD/LDAP integration for user authentication and user attribute syncing.
-
-**Reference**: https://docs.mattermost.com/onboard/ad-ldap.html
-
-3.3.10 Multi-factor authentication
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Available in Mattermost Enterprise and Professional subscription plans.
-
-Configure multi-factor authentication (“MFA”) if required as part of your IT security policy. Compatible with Google Authenticator.
-
-**Reference**: https://docs.mattermost.com/onboard/multi-factor-authentication.html
-
-3.3.11 SAML Single-Sign-On
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Available in Mattermost Enterprise and Professional subscription plans.
-
-Mattermost can be configured to act as a SAML 2.0 Service Provider. Mattermost officially supports Okta, OneLogin, and Microsoft ADFS as the identity providers (IDPs).
-
-**Reference**: https://docs.mattermost.com/onboard/sso-saml.html
-
-3.3.12 Train administrators
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Train administrators on the tasks required to manage Mattermost.
-
-**Reference**: https://docs.mattermost.com/guides/administration.html
-
-3.3.13 Update legal and support settings
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Mattermost has configuration settings for the terms of service, privacy policy, and support URLs and emails. It is highly recommended that you modify these in your configuration so that your users have the correct legal information and can contact administrators to resolve account issues. You can find these under **System Console > Legal and Support** in prior versions or **System Console** > **Site Configuration** > **Customization** in versions after 5.12.
-
-.. image:: ../images/legal_and_support_settings.png
- :alt: Legal and Support settings
-
-3.3.14 Onboard users
-^^^^^^^^^^^^^^^^^^^^
-
-Send all users a welcome email with instructions on how to get started using Mattermost including links to the mobile applications and the User Guide.
-
-**References**:
-- Links to download Mattermost apps: https://mattermost.com/apps
-- Channels Guide: https://docs.mattermost.com/guides/collaborate.html
-
-3.4 Implementation schedule
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In this section, provide a schedule of activities to be accomplished during implementation. Show the required tasks (described in Section 3.3, Major Tasks) in chronological order, with the beginning and end dates of each task.
-
-+----+--------------------------------------------+------------+------------+
-| | Task | Start Date | End Date |
-+====+============================================+============+============+
-| 1 | Create System Architecture Document | xx/xx/xxxx | xx/xx/xxxx |
-+----+--------------------------------------------+------------+------------+
-| 2 | Gather Required Software and Documentation | | |
-+----+--------------------------------------------+------------+------------+
-| 3 | Prepare Deployment Environments | | |
-+----+--------------------------------------------+------------+------------+
-| 4 | Install Software | | |
-+----+--------------------------------------------+------------+------------+
-| 5 | Test Deployment | | |
-+----+--------------------------------------------+------------+------------+
-| 6 | Bulk Load Data | | |
-+----+--------------------------------------------+------------+------------+
-| 7 | Implement Backup | | |
-+----+--------------------------------------------+------------+------------+
-| 8 | Implement Monitoring | | |
-+----+--------------------------------------------+------------+------------+
-| 9 | Train Administrators | | |
-+----+--------------------------------------------+------------+------------+
-| 10 | Onboard Users | | |
-+----+--------------------------------------------+------------+------------+
-
-3.5 Security
-~~~~~~~~~~~~
-
-If appropriate for the system to be implemented, include an overview of the system security features and requirements during the implementation.
-
-3.5.1 System security features
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Mattermost platform will be secured in the following ways:
-
-- Mattermost will be hosted entirely on-premises behind your company firewall with access restricted to VPN connections;
-- Mobile access to Mattermost will be further restricted by the use of multi-factor authorization;
-- Transmissions to and from Mattermost will be encrypted using TLS;
-- Encryption-at-rest will be applied using your company's standards;
-- Mattermost’s integrity and audit controls store a complete history of messages, including edits and deletes, along with all files uploaded. User interface actions for “deleting” messages and channels remove the data only from the user interface; the data is retained within your database. If your compliance guidelines require it, you can turn off users’ ability to edit and delete their messages after they are posted.
-- Mattermost will be protected against brute force attacks by its rate limiting API;
-- Authentication to Mattermost will be controlled using your company's Active Directory/LDAP/SAML directory server.
-
-**Reference**: https://docs.mattermost.com/about/security.html
-
-3.5.2 Security during implementation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section addresses security issues specifically related to the implementation effort, if any. For example, if LAN servers or workstations will be installed at a site with sensitive data preloaded on non-removable hard disk drives, address how security would be provided for the data on these devices during shipping, transport, and installation because theft of the devices could compromise the sensitive data.
-
-4 Implementation support
-------------------------
-
-This section describes the support software, materials, equipment, and facilities required for the implementation, as well as the personnel requirements and training necessary for the implementation. The information provided in this section is not site-specific. If there are additional support requirements not covered by the subsequent sections, others may be added as needed.
-
-4.1 Hardware, software, facilities, and materials
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In this section, list support software, materials, equipment, and facilities required for the implementation, if any.
-
-4.1.1 Hardware
-^^^^^^^^^^^^^^
-
-This section provides a list of support equipment and includes all hardware used for testing time implementation. For example, if a client/server database is implemented on a LAN, a network monitor or “sniffer” might be used, along with test programs. to determine the performance of the database and LAN at high-utilization rates. If the equipment is site-specific, list it in Section 5, Implementation Requirements by Site.
-
-4.1.2 Software
-^^^^^^^^^^^^^^
-
-This section provides a list of software and databases required to support the implementation. Identify the software by name, code, or acronym. Identify which software is commercial off-the-shelf and which is State-specific. Identify any software used to facilitate the implementation process. If the software is site-specific, list it in Section 4.
-
-4.1.3 Facilities
-^^^^^^^^^^^^^^^^
-
-In this section, identify the physical facilities and accommodations required during implementation. Examples include physical workspace for assembling and testing hardware components, desk space for software installers, and classroom space for training the implementation stall. Specify the hours per day needed, number of days, and anticipated dates. If the facilities needed are site-specific, provide this information in Section 4, Implementation Requirements by Site.
-
-4.1.4 Material
-^^^^^^^^^^^^^^
-
-This section provides a list of required support materials, such as magnetic tapes and disk packs.
-
-4.2 Personnel
-~~~~~~~~~~~~~
-
-This section describes personnel requirements and any known or proposed staffing requirements, if appropriate. Also describe the training, if any, to be provided for the implementation staff.
-
-4.2.1 Personnel requirements and staffing
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In this section, describe the number of personnel, length of time needed, types of skills, and skill levels for the staff required during the implementation period. If particular staff members have been selected or proposed for the implementation, identify them and their roles in the implementation.
-
-4.2.2 Training of implementation staff
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section addresses the training, if any, necessary to prepare staff for implementing and maintaining the system; it does not address user training, which is the subject of the Training Plan. Describe the type and amount of training required for each of the following areas, if appropriate, for the system:
-
-- System hardware/software installation
-- System support
-- System maintenance and modification
-
-Present a training curriculum listing the courses that will be provided, a course sequence. and a proposed schedule. If appropriate, identify which courses particular types of staff should attend by job position description.
-
-If training will be provided by one or more commercial vendors, identify them, the course name(s), and a brief description of the course content.
-
-If the training will be provided by State staff, provide the course name(s) and an outline of the content of each course. Identify the resources, support materials, and proposed instructors required to teach the course(s).
-
-4.3 Performance monitoring
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Available in Mattermost Enterprise.
-
-This section describes the performance monitoring tool and techniques and how it will be used to help decide if the implementation is successful: https://docs.mattermost.com/scale/deploy-prometheus-grafana-for-performance-monitoring.html
-
-4.4 Configuration management interface
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section describes the interactions required with the Configuration Management (CM) representative on CM-related issues, such as when software listings will be distributed, and how to confirm that libraries have been moved from the development to the production environment.
diff --git a/source/getting-started/light-install.rst b/source/getting-started/light-install.rst
deleted file mode 100644
index 908f71fb8d2..00000000000
--- a/source/getting-started/light-install.rst
+++ /dev/null
@@ -1,70 +0,0 @@
-:orphan:
-
-Light install guide
-===================
-
-.. include:: ../_static/badges/allplans-selfhosted.rst
- :start-after: :nosearch:
-
-Mattermost is a collaboration platform. With Mattermost, you can integrate the tools you use every day into one place and never miss a notification or task.
-
-Before you get started you'll need:
-
-* A clean Ubuntu server with root level access
-* (Recommended) A domain name pointing to your server (e.g. ``mymattermostserver.com``)
-* (Recommended) Email addresses of your team members so you can invite them to the server
-
-Installation
--------------
-
-Install Mattermost using :doc:`Mattermost Omnibus `.
-
-Open a terminal window and enter:
-
-.. code-block:: sh
-
- curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash
-
-Then, to install the Omnibus package, run:
-
-.. code-block:: sh
-
- sudo apt install mattermost-omnibus
-
-.. note::
-
- Although the recommended way to install and configure Omnibus is with SSL enabled, if you want to use or test without it (or without a domain name), you can run:
-
- .. code-block:: sh
-
- sudo MMO_HTTPS=false apt install mattermost-omnibus
-
-When your server is up and running, navigate to it via the domain name (e.g. ``mymattermostserver.com``) that points to your server (or the server’s IP address if you’re not using a domain name). Next, create a team and invite people to join your Mattermost server.
-
-If you have any problems installing Mattermost Omnibus, see the :doc:`troubleshooting guide ` for common error messages, or `join the Mattermost user community for troubleshooting help `_.
-
-Add users
----------
-
-Next, add people to your team by sending them an invitation:
-
-1. Select your team name at the top left corner of Mattermost.
-2. Select **Invite People** and enter the email addresses of the people you want to add.
-3. Select **Invite Members**.
-
-When the invitee receives the email with the link, it’s a single click to join your server, chat to you in the channel you’ve created, or create their own channels. More information about adding users is available :doc:`here `.
-
-Create a notifications hub
---------------------------
-
-Create a `“heartbeat” channel `_ and integrate your most-used apps and plugins with Mattermost to send status updates and critical notifications in one place.
-
-You can find and install integrations and plugins via **Product menu > Marketplace**.
-
-Get started with GitHub, Jira, and Jenkins:
-
-* Connect your GitHub organization to Mattermost using a slash command, to manage your reviews, pull requests, comments, and merges. GitHub is pre-packaged in Mattermost. Follow the `configuration steps `_, and then let your team know to run /github connect so they can receive notifications.
-* Connect your Jira account to Mattermost and set up a channel for the bot to post issues so your team is always up to date. Visit the `configuration guide `_ to get started. Once configured, share the `end user documentation `_ with your team so they can start receiving notifications.
-* Connect your Jenkins server to Mattermost to centralize your workflows and manage builds. Visit the `installation guide `_ to get started. Share the `features list `_ with your team so they can ramp up quickly.
-
-**Next:** :doc:`Learn more about organizing conversations ` and setting up :doc:`Mattermost on your mobile device `.
diff --git a/source/guides/additional-server-installation-guides.rst b/source/guides/additional-server-installation-guides.rst
deleted file mode 100644
index e7dac467c6e..00000000000
--- a/source/guides/additional-server-installation-guides.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-Additional server installation guides
-=====================================
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :titlesonly:
-
- Deploy Mattermost on Bitnami
- AWS Elastic Beanstalk Docker setup
- Open source components
-
-These guides are for administrators looking for alternate deployment methods as well as a list of all open source copmonents included across Mattermost releases.
-
-* :doc:`Deploy Mattermost on Bitnami `
-* :doc:`AWS Elastic Beanstalk Docker setup `
-* :doc:`Open source components `
diff --git a/source/guides/administration-guide.rst b/source/guides/administration-guide.rst
new file mode 100644
index 00000000000..9c09535c371
--- /dev/null
+++ b/source/guides/administration-guide.rst
@@ -0,0 +1,31 @@
+Administration Guide
+=====================
+
+Welcome to the Mattermost Administration Guide. This guide is organized into sections based on administrative tasks and scenarios to help you effectively manage and optimize your Mattermost workspace.
+
+Whether you’re configuring server settings, managing users, monitoring performance, or ensuring compliance, this guide provides all the information you need. Use the navigation below to access detailed instructions and best practices for each topic.
+
+.. toctree::
+ :maxdepth: 1
+ :hidden:
+ :titlesonly:
+
+ Self-hosted billing
+ Cloud workspace management
+ Server maintenance
+ Server configuration
+ User provisioning
+ User management
+ Monitoring and performance
+ Compliance
+ Migration
+
+* :doc:`Self-hosted billing ` - Billing and payment options for Mattermost self-hosted deployments.
+* :doc:`Cloud workspace management ` - Learn how to manage cloud workspaces in Mattermost.
+* :doc:`Server maintenance ` - Learn about Mattermost server maintenance and best practices.
+* :doc:`Server configuration ` - Learn about server configuration and settings.
+* :doc:`User provisioning ` - Learn about user provisioning and management.
+* :doc:`User management ` - Learn about user management and best practices.
+* :doc:`Monitoring and performance ` - Learn about monitoring and performance optimization.
+* :doc:`Compliance ` - Learn about compliance and security best practices.
+* :doc:`Migration ` - Learn about migrating to Mattermost.
\ No newline at end of file
diff --git a/source/guides/administration.rst b/source/guides/administration.rst
deleted file mode 100644
index a265506b546..00000000000
--- a/source/guides/administration.rst
+++ /dev/null
@@ -1,28 +0,0 @@
-Manage Mattermost
-==================
-
-.. include:: ../_static/badges/allplans-cloud-selfhosted.rst
- :start-after: :nosearch:
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :titlesonly:
-
- Get started
- Cloud workspace management
- Self-hosted administration
- Other resources
-
-This guide is for people who administer an existing Mattermost server using the System Console, the ``config.json`` file, or through the management of environment variables.
-
-As a system admin, access the System Console by selecting the **Product** |product-list| menu and selecting **System Console**.
-
-This administrative guide is divided into 4 parts:
-
-* :doc:`Get started ` - An overview of standard configurations and features for both self-hosted and Cloud deployments.
-* :doc:`Cloud workspace management ` - Detailed information about admin capabilities of Mattermost Cloud deployments.
-* :doc:`Self-hosted administration ` - Detailed information about admin capabilities of self-hosted Mattermost servers.
-* :doc:`Other resources ` - Additional migration, conversion, and troubleshooting resources.
-
-If you’re looking for resources to help you install, deploy, and scale your self-hosted Mattermost server, see the :doc:`Mattermost Deployment Guide `.
diff --git a/source/guides/cloud-workspace-management.rst b/source/guides/cloud-workspace-management.rst
index d51777af869..b45b6f54b95 100644
--- a/source/guides/cloud-workspace-management.rst
+++ b/source/guides/cloud-workspace-management.rst
@@ -5,7 +5,7 @@ This section of the guide is for system admins of Mattermost Cloud deployments.
.. tip::
- If you're the system admin for a Mattermost self-hosted workspace, see the :doc:`Self-hosted administration ` documentation.
+ If you're the system admin for a Mattermost self-hosted workspace, see the :doc:`Self-hosted administration ` documentation.
.. toctree::
:maxdepth: 1
diff --git a/source/guides/compliance-with-mattermost.rst b/source/guides/compliance-with-mattermost.rst
index 977be7e7bdd..0021d24b628 100644
--- a/source/guides/compliance-with-mattermost.rst
+++ b/source/guides/compliance-with-mattermost.rst
@@ -15,6 +15,7 @@ Mattermost is purpose-built to help enterprises keep sensitive data safe and com
Logging
Export channel data
Legal Hold
+ JSON audit log schema
* :doc:`Compliance exports ` - Export compliance reports to third-party systems to archive history.
* :doc:`Compliance monitoring ` - Enable oversight and prevent unauthorized queries with compliance exports.
@@ -22,4 +23,5 @@ Mattermost is purpose-built to help enterprises keep sensitive data safe and com
* :doc:`Data retention ` - Control how long data is stored in Mattermost with global and custom retention policies to meet data retention compliance requirements.
* :doc:`Logging ` - Learn how to customize logging options based on business practices and needs.
* :doc:`Export channel data ` - Migrate data between systems and back data up for operational continuity.
-* :doc:`Legal Hold ` - Preserve relevant Mattermost information when litigation is anticipated.
\ No newline at end of file
+* :doc:`Legal Hold ` - Preserve relevant Mattermost information when litigation is anticipated.
+* :doc:`JSON audit log schema ` - Learn how to configure Mattermost audit logging using a JSON object.
\ No newline at end of file
diff --git a/source/guides/deployment-guide.rst b/source/guides/deployment-guide.rst
new file mode 100644
index 00000000000..cf7da89f87e
--- /dev/null
+++ b/source/guides/deployment-guide.rst
@@ -0,0 +1,42 @@
+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.
+
+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.
+
+.. toctree::
+ :maxdepth: 1
+ :hidden:
+ :titlesonly:
+
+ Application Architecture
+ Server Deployment
+ Desktop App Deployment
+ Mobile App Deployment
+ Deployment Troubleshooting
+
+* :doc:`Application architecture ` - An overview of Mattermost's architecture and components.
+* :doc:`Server deployment ` - Pre-deployment checks, security considerations, hardware recommendations, software prerequisites, and step-by-step guidance to deploying Mattermost server.
+* :doc:`Desktop deployment ` - Installation procedures for Mattermost's desktop applications across Windows, macOS, and Linux, and large-scale, enterprise-wide deployments.
+* :doc:`Mobile deployment ` - How to set up push notifications using Mattermost's notification service and troubleshooting tips.
+* :doc:`Deployment troubleshooting ` - Best practices for diagnosing and resolving common deployment issues.
+
+How to use this guide
+----------------------
+
+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.
+
+If you are new to Mattermost, we recommend starting with the Preparations section under Server Application to understand the prerequisites and get started.
+
+.. note::
+
+ - Mattermost server deployment is officially supported on Linux operating systems only.
+ - macOS and Windows deployments are supported for testing and development purposes only.
+ - If you encounter issues that aren't covered in this documentation:
+
+ - Non-commercial customers: Reference the `Mattermost community forums `_
+ - Commercial customers: See the `Mattermost Support Knowledge Base `_, or `contact Mattermost Support `_ for assistance.
+ - For advanced customization or integrations, refer to the :doc:`Open source components ` documentation for details about extending Mattermost functionality.
+
+Enjoy deploying Mattermost with confidence!
diff --git a/source/guides/deployment-guides.rst b/source/guides/deployment-guides.rst
deleted file mode 100644
index edddaaebd32..00000000000
--- a/source/guides/deployment-guides.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-Deployment guides
-=================
-
-These deployment guides are for administrators who are ready to integrate Mattermost with their organization’s IT infrastructure.
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :titlesonly:
-
- Server deployment
- Desktop and mobile app deployment
-
-* :doc:`Server deployment ` - Guides for admins setting up a self-hosted deployment.
-* :doc:`Desktop and mobile app deployment ` - Guides for admins deploying the desktop and mobile apps.
\ No newline at end of file
diff --git a/source/guides/deployment-troubleshooting.rst b/source/guides/deployment-troubleshooting.rst
index 13faa597a1f..87df95c2273 100644
--- a/source/guides/deployment-troubleshooting.rst
+++ b/source/guides/deployment-troubleshooting.rst
@@ -6,14 +6,18 @@ Deployment troubleshooting
:hidden:
:titlesonly:
- General troubleshooting
- Troubleshooting mobile applications
- PostgreSQL installation troubleshooting
- MySQL installation troubleshooting
+ General deployment troubleshooting
+ Docker deployment troubleshooting
+ Desktop app troubleshooting
+ Mobile app troubleshooting
+ PostgreSQL installation troubleshooting
+ MySQL installation troubleshooting
These guides will help you troubleshoot aspects of your Mattermost deployment.
-* :doc:`General deployment troubleshooting `
-* :doc:`Mobile applications troubleshooting `
-* :doc:`PostgreSQL installation troubleshooting `
-* :doc:`MySQL installation troubleshooting `
\ No newline at end of file
+* :doc:`General deployment troubleshooting `
+* :doc:`Docker deployment troubleshooting `
+* :doc:`Desktop app installation troubleshooting `
+* :doc:`Mobile applications troubleshooting `
+* :doc:`PostgreSQL installation troubleshooting `
+* :doc:`MySQL installation troubleshooting `
\ No newline at end of file
diff --git a/source/guides/deployment.rst b/source/guides/deployment.rst
deleted file mode 100644
index 6ba2da00140..00000000000
--- a/source/guides/deployment.rst
+++ /dev/null
@@ -1,58 +0,0 @@
-Deploy Mattermost
-=================
-
-.. include:: ../_static/badges/allplans-selfhosted.rst
- :start-after: :nosearch:
-
-Learn how to install, deploy, and scale Mattermost for teams and organizations of any size.
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :titlesonly:
-
- Migrate from MySQL to PostgreSQL
- Prepare your Mattermost database
- Deploy on Ubuntu
- Deploy using Docker
- Deploy with a tarball
- Deploy using Omnibus
- Deploy using Kubernetes
- Deploy Mattermost on Azure AKS
- Deploy on Red Hat
- Set up an NGINX proxy
- Set up TLS
- Prepare for your Mattermost deployment
- Deployment guides
- Upgrade Mattermost
- Scale Mattermost
- Secure Mattermost
- Compliance with Mattermost
- Deployment troubleshooting
- Additional server installation guides
-
-.. tip::
-
- * See the :doc:`configuration settings ` documentation to learn more about customizing your production deployment.
-
- * Encountering issues with your deployment? See the :ref:`Deployment Troubleshooting ` documentation for details.
-
-* :doc:`Migrate from MySQL to PostgreSQL ` - Learn how to migrate from MySQL to PostgreSQL.
-* :doc:`Prepare your Mattermost database ` - Learn how to prepare and configure a database for Mattermost.
-* :doc:`Deploy on Ubuntu ` - Signed packages direct from Mattermost featuring a single command for install and upgrades.
-* :doc:`Deploy using Docker ` - The fastest way to try Mattermost and a great single server installation option.
-* :doc:`Deploy with a tarball ` - Support for any Linux distribution.
-* :doc:`Deploy using Omnibus ` - An entire Mattermost installation on a single server.
-* :doc:`Deploy using Kubernetes ` - Install using the Mattermost Helm Chart or Operator and simplified updates.
-* :doc:`Deploy Mattermost on Azure AKS ` - Deploy Mattermost on Azure AKS.
-* :doc:`Deploy on Red Hat ` - Support for all current Red Hat Enterprise Linux platforms with a tarball.
-* :doc:`Set up NGINX proxy ` - Learn how to configure Mattermost for HTTPS for deployments of more than 200 users.
-* :doc:`Set up TLS ` - Learn how to configure Mattermost for HTTPS for deployments of fewer than 200 concurrent users.
-* :doc:`Deployment guides ` - for administrators who are ready to integrate Mattermost with their organization’s IT infrastructure.
-* :doc:`Prepare for your Mattermost deployment ` - Review software and hardware requirements for Mattermost server, and plan out your Mattermost rollout.
-* :doc:`Upgrade Mattermost ` - Learn how to stay up to date with the latest features and improvements.
-* :doc:`Scale Mattermost ` - Learn how to scale and monitor your Mattermost deployment.
-* :doc:`Secure Mattermost ` - Learn how to safeguard your Mattermost data.
-* :doc:`Compliance with Mattermost ` - Learn how to keep sensitive data safe and compliant in the strictest, most complex environments.
-* :doc:`Deployment troubleshooting ` - Having trouble with your deployment?
-* :doc:`Additional server installation guides ` - Additional deployment guides and an open source component list you can reference for every release.
\ No newline at end of file
diff --git a/source/guides/desktop-mobile-app-deployment.rst b/source/guides/desktop-mobile-app-deployment.rst
deleted file mode 100644
index 1bffd1f1fa1..00000000000
--- a/source/guides/desktop-mobile-app-deployment.rst
+++ /dev/null
@@ -1,46 +0,0 @@
-Desktop and mobile app deployment
-=================================
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :titlesonly:
-
- Desktop app deployment guide
- Desktop MSI installer and group policy installation guides (Beta)
- Desktop App custom dictionaries
- Desktop managed resources
- Using Mattermost’s pre-built mobile apps
- Testing push notifications
- Deploy Mattermost mobile apps
- Mobile push notifications
- Building and distributing your own custom Mattermost mobile apps
- Deploying mobile apps using an EMM provider
- AppConfig for EMM solutions with Mattermost Mobile Apps
- Mobile VPN options
- Mobile apps FAQ
- Client-side data storage FAQ
-
-Customize the Mattermost desktop and mobile apps to meet any deployment needs.
-
-Desktop app
-------------
-
-* :doc:`Desktop app deployment guide ` - Customize and distribute the Mattermost desktop app with pre-configured settings.
-* :doc:`Desktop MSI installer and group policy installation guides (Beta) ` - Use the Mattermost MSI installer and Group Policy definitions for Windows deployment.
-* :doc:`Desktop app custom dictionaries ` - Create custom dictionaries for Mattermost spellcheck.
-* :doc:`Desktop managed resources ` - Configure resource management for services running on the same domain as your Mattermost instance.
-
-Mobile apps
------------
-
-* :doc:`Using Mattermost’s pre-built mobile apps ` - Connect users to your Mattermost server with our prebuilt apps for Android and iOS.
-* :doc:`Testing push notifications ` - Learn how to test mobile push notifications.
-* :doc:`Deploy Mattermost mobile apps ` - Learn the basics of how to customize and deploy Mattermost to the Enterprise.
-* :doc:`Mobile push notifications ` - Set up mobile push notifications.
-* :doc:`Building and distributing your own custom Mattermost mobile apps ` - Build custom mobile Mattermost apps.
-* :doc:`Deploying mobile apps using an EMM provider ` - Deploy with Enterprise Mobile Management software to enforce security policies and enforce specific versions of the Mattermost mobile apps.
-* :doc:`AppConfig for EMM solutions with Mattermost mobile apps ` - Learn how AppConfig provides an easy way to configure enterprise mobile applications.
-* :doc:`Mobile VPN options ` - Learn how to use the Mattermost mobile apps with Mobile VPNs.
-* :doc:`Mobile apps frequently asked questions `
-* :doc:`Client-side data storage frequently asked questions `
\ No newline at end of file
diff --git a/source/guides/get-started-with-administration.rst b/source/guides/get-started-with-administration.rst
deleted file mode 100644
index bc687ad7514..00000000000
--- a/source/guides/get-started-with-administration.rst
+++ /dev/null
@@ -1,95 +0,0 @@
-Get started with administration
-================================
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :titlesonly:
-
- Mattermost feature labels
- Optimize your workspace
- Mattermost configuration settings
- Self-hosted edition and license
- Cloud subscription, billing, and account
- Reporting configuration settings
- User management configuration settings
- Environment configuration settings
- Site configuration settings
- Authentication configuration settings
- Plugins configuration settings
- Enable Copilot
- Product limits
- Manage user surveys
- Integrations configuration settings
- Compliance configuration settings
- Experimental configuration settings
- Deprecated configuration settings
- Environment variables
- Provisioning workflows
- Active Directory/LDAP
- GitLab SSO
- OpenID SSO
- Google SSO
- Entra ID SSO
- Advanced permissions
- Manage team and channel members
- Custom branding tools
- Notify Admin
-
-These resources will help you get started with your Mattermost self-hosted or Cloud workspace.
-
-.. tip::
-
- As a system admin, access the System Console by selecting the **Product** |product-list| menu and selecting **System Console**.
-
-* **Mattermost feature labels** - Learn what :doc:`Mattermost feature labels `, including :ref:`Experimental `, :ref:`Beta `, :ref:`General Availability `, and :ref:`Deprecated ` mean to the status, maturity, and support level of Mattermost product features and functionality in your Mattermost deployment.
-* **Optimize your workspace** - Review health and growth scores for your Mattermost workspace, and take necessary action using the :doc:`workspace optimization ` page in the System Console.
-* **Configure your workspace** - Mattermost offers extensive configuration options for both :doc:`self-hosted Mattermost servers and Mattermost Cloud workspaces `, and provides a list of :doc:`deprecated configuration settings ` no longer supported.
-* **Enable Copilot** - Learn how to :doc:`enable Copilot in Mattermost `
-* **Product Limits** - Learn about Mattermost :doc:`product limits `.
-* **Manage user surveys** - Learn how to :doc:`create, manage, and export data from user surveys ` in your self-hosted Mattermost deployment.
-* **Environment variables** - Learn how to use :doc:`environment variables ` to manage configuration for a self-hosted deployment.
-* **Provisioning workflows** - Learn how to :doc:`provision ` and de-provision user accounts.
-* **User authentication** - All versions of Mattermost provide basic authentication and offer :doc:`multi-factor authentication ` out of the box. Enterprise and Professional versions of Mattermost also include :doc:`Active Directory/LDAP ` and SSO for :doc:`GitLab SSO `, :doc:`OpenID `, :doc:`Google `, and :doc:`Entra ID `.
-* **User permissions** - All versions of Mattermost offer standard user permissions control. Enterprise and Professional versions also include :doc:`advanced permissions control ` to customize which users can perform specific actions.
-* **Manage team and channel members** - :doc:`Manage team and channel members ` synchronization, moderation, and membership settings.
-* **Customize branding** - Change Mattermost branding, site name, and description with :doc:`custom branding tools `.
-* **Notify admin** - Keep track of your users' :doc:`feature requirement needs `.
-
-Advanced user management
--------------------------
-
-.. toctree::
- :maxdepth: 1
- :hidden:
-
- Use AD/LDAP synchronized groups to manage team or private channel membership
- Guest accounts
- SAML Single Sign-On
- SAML Single-Sign-On: technical documentation
-
-* :doc:`Use AD/LDAP synchronized groups to manage team or private channel membership ` - Synchronize your AD/LDAP group with private Mattermost channels and teams.
-* :doc:`Guest accounts ` - Create guest accounts to collaborate with individuals outside your organization.
-* :doc:`SAML Single Sign-On ` - Configure Mattermost to be a SAML 2.0 service provider.
-* :doc:`SAML Single Sign-On: technical documentation ` - SAML 2.0 reference documentation for Mattermost.
-
-Advanced workspace management
------------------------------
-
-.. toctree::
- :maxdepth: 1
- :hidden:
-
- Connected workspaces
- Statistics
- In-product notices
- User satisfaction surveys
- System-wide notifications
- Bulk export tool
-
-* :doc:`Connected workspaces ` - Connect channels from multiple Mattermost servers in a federated architecture.
-* :doc:`Statistics ` - Get statistics about your Mattermost server usage.
-* :doc:`In-product notices ` - Get notified about Mattermost updates via in-app notices.
-* :doc:`User satisfaction surveys ` - Learn about Mattermost user satisfaction surveys and how to configure their operation.
-* :doc:`System-wide notifications ` - Display system-wide notifications to all users across all teams.
-* :doc:`Bulk export tool ` - Export user, team, channel, and post data from Mattermost.
diff --git a/source/guides/other-administration-resources.rst b/source/guides/other-administration-resources.rst
deleted file mode 100644
index 1d7188bdc69..00000000000
--- a/source/guides/other-administration-resources.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-Other administration resources
-==============================
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :titlesonly:
-
- Convert OAuth 2.0 providers to OpenID Connect
- Generate a support packet
- mmctl command line tool
- Migration announcement email template
- Advanced permissions infrastructure
- Command line tools
- Code Signing Custom Builds
-
-If the information above doesn’t solve your problem, look at these other resources to find something that meets your needs. Alternatively, you can also :doc:`get help ` from our community or via premium support services.
-
-* :doc:`Convert OAuth 2.0 service providers to OpenID Connect ` - Migrate from OAuth 2.0 to OpenID Connect.
-* :doc:`Generate a support packet ` - Generate configuration information, logs, plugin details, and data dependencies to provide when contacting Mattermost support.
-* :doc:`mmctl command line tool ` - Use mmctl to manage self-hosted Mattermost servers from the command line.
-* :doc:`Migration announcement email template ` - Use this email template to notify your users about migrating to Mattermost.
-* :doc:`Advanced permissions: backend infrastructure ` - Read our technical guide on modifying self-hosted Mattermost installations to create custom permissions schemes.
-* :doc:`Command line tools ` - Learn how to use the command line to manage self-hosted Mattermost servers.
-* :doc:`Code signing custom builds ` - Learn how to reduce security warnings from operating systems and ensure smoother, more trustworthy installations with Code Signing.
\ No newline at end of file
diff --git a/source/guides/prepare-for-your-mattermost-deployment.rst b/source/guides/prepare-for-your-mattermost-deployment.rst
deleted file mode 100644
index 1ddc7bf18e3..00000000000
--- a/source/guides/prepare-for-your-mattermost-deployment.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-Prepare for your Mattermost deployment
-=======================================
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :titlesonly:
-
- Software and hardware requirements
- Administrator tasks
- Architecture overview
- Plan your Mattermost implementation
- Enterprise roll out checklist
- Welcome email template
-
-These guides will help you prepare for your Mattermost deployment.
-
-* :doc:`Migrate from MySQL to PostgreSQL ` - Learn how to migrate from MySQL to PostgreSQL.
-* :doc:`Software and hardware requirements ` - Confirm software and hardware requirements for your Mattermost deployment.
-* :doc:`Administrator tasks ` - Learn about the standard configurations and settings you’ll encounter.
-* :doc:`Architecture overview ` - Learn the basics of user authentication, notifications, data management services, network connectivity, and high availability.
-* :doc:`Plan your Mattermost implementation ` - Get a detailed breakdown of the technical requirements to deploy Mattermost for your team or organization.
-* :doc:`Enterprise roll out checklist ` - Learn how to roll Mattermost out to thousands of users.
-* :doc:`Welcome email template ` - Use our sample email template when you’re ready to invite users to your server.
\ No newline at end of file
diff --git a/source/guides/scale-mattermost.rst b/source/guides/scale-mattermost.rst
index 337cc851f40..4ec38f59ee7 100644
--- a/source/guides/scale-mattermost.rst
+++ b/source/guides/scale-mattermost.rst
@@ -2,7 +2,7 @@ Scale Mattermost
================
.. toctree::
- :maxdepth: 2
+ :maxdepth: 1
:hidden:
:titlesonly:
@@ -16,14 +16,6 @@ Scale Mattermost
Scale up to 90000 users
Scale up to 100000 users
Scale up to 200000 users
- High availability cluster-based deployment
- Elasticsearch
- Collect performance metrics
- Deploy Prometheus and Grafana for performance monitoring
- Performance monitoring metrics
- Push notification health targets
- Mattermost performance alerting guide
- Ensuring releases perform at scale
Scale and monitor your Mattermost deployment.
@@ -37,13 +29,4 @@ Scale and monitor your Mattermost deployment.
* :doc:`Scale up to 80000 users ` - Learn how to scale Mattermost to up to 80000 users.
* :doc:`Scale up to 90000 users ` - Learn how to scale Mattermost to up to 90000 users.
* :doc:`Scale up to 100000 users ` - Learn how to scale Mattermost to up to 100000 users.
- * :doc:`Scale up to 200000 users ` - Learn how to scale Mattermost to up to 200000 users.
-
-* :doc:`High availability cluster-based deployment ` - Learn how to run Mattermost at scale with all the config tweaks needed.
-* :doc:`Elasticsearch ` - Enhance search performance with Elasticsearch.
-* :doc:`Collect performance metrics ` - Learn how to collect performance metrics without deploying Prometheus.
-* :doc:`Deploy Prometheus and Grafana for performance monitoring ` - Use Prometheus and Grafana to monitor the health and performance of your Mattermost cluster.
-* :doc:`Performance monitoring metrics ` - The custom and standard Go metrics available for monitoring system performance.
-* :doc:`Push notification health targets ` - Learn the push notification thresholds to maintain to ensure a performant production deployment of Mattermost.
-* :doc:`Mattermost performance alerting guide ` - Learn strategies and best practices for monitoring your Mattermost cluster.
-* :doc:`Ensuring releases perform at scale ` - Learn how Mattermost ensures new releases perform at scale.
+ * :doc:`Scale up to 200000 users ` - Learn how to scale Mattermost to up to 200000 users.
\ No newline at end of file
diff --git a/source/guides/secure-mattermost.rst b/source/guides/secure-mattermost.rst
index d2301d2913c..251e1f9572b 100644
--- a/source/guides/secure-mattermost.rst
+++ b/source/guides/secure-mattermost.rst
@@ -8,22 +8,26 @@ Mattermost ships with several security features that can help organizations safe
:hidden:
:titlesonly:
- Encryption options
+ Encryption options
+ Transport encryption
Multi-factor authentication
Delegated granular administration
Custom terms of service
User and group provisioning via AD/LDAP
SAML-based SSO
+ SAML SSO techical documentation
Certificate-based authentication
* :doc:`Encryption options ` - Setup encryption for data in transit and at rest.
+* :doc:`Transport encryption ` - Secure data in transit between Mattermost and other services.
* :doc:`Multi-factor authentication ` - Require users to provide a secure one-time code in addition to their username and password to log in to Mattermost.
-* :ref:`ID-only push notifications ` - Enable fully private mobile notifications to protect against iOS and Android notification infrastructure breaches.
-* :doc:`Enterprise mobility management ` - Secure mobile endpoints with management application configuration.
+* :ref:`ID-only push notifications ` - Enable fully private mobile notifications to protect against iOS and Android notification infrastructure breaches.
+* :doc:`Enterprise mobility management ` - Secure mobile endpoints with management application configuration.
* :doc:`Delegated granular administration ` - Grant user access to specific areas of the Mattermost System Console.
* :doc:`Custom terms of service ` - Increase clarity on legal Mattermost expectations for internal employees and guests.
* :ref:`Manage session length ` - Control how long user sessions remain active.
* :doc:`User and group provisioning via AD/LDAP ` - Provision and synchronize users and groups to pre-defined roles.
* :doc:`SAML-based single sign-on (SSO) ` - Enable login using a single user ID and password managed through a SAML 2.0 Service Provider.
+* :doc:`SAML SSO technical documentation ` - Technical details on SAML SSO.
* :doc:`Certificate-based authentication ` - Identify a user or a device before granting access to Mattermost.
* :ref:`Manage file sharing and downloads ` - Control file sharing and downloads in Mattermost.
\ No newline at end of file
diff --git a/source/guides/self-hosted-administration.rst b/source/guides/self-hosted-administration.rst
deleted file mode 100644
index 539d1d99a80..00000000000
--- a/source/guides/self-hosted-administration.rst
+++ /dev/null
@@ -1,51 +0,0 @@
-Self-hosted administration
-==========================
-
-This section of the guide is for system admins of self-hosted Mattermost servers.
-
-.. tip::
-
- If you're the system admin for a Mattermost Cloud workspace, see the :doc:`Cloud workspace management ` documentation.
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :titlesonly:
-
- Mattermost self-hosted billing
- Mattermost error codes
- Request a server Health Check
- Store configuration in your database
- Bulk loading data
- SMTP email setup
- Email templates
- Calls deployment
- Configure CloudFront to host static assets
- Use an outbound proxy
- Migration guide
- Migrate from Slack
- Chinese, Japanese, and Korean search
- Customize Mattermost
- JSON audit log schema
- SSL client certificate setup
- Manage telemetry
- Configure health check probes
-
-* :doc:`Mattermost self-hosted billing ` - Manage your Mattermost subscription.
-* :doc:`Mattermost error codes ` - Learn more about the error code you're encountering in Mattermost.
-* :doc:`Request a server Health Check ` - Learn how to request a detailed analysis of your current system health, actionable recommendations to enhance performance, reliability, and security, and guidance on best practices for future system maintenance as an Enterprise customer.
-* :doc:`Store configuration in your Mattermost database ` - Store Mattermost configuration information in your database rather than as a JSON file. We recommend this for High Availability environments.
-* :doc:`Bulk loading data ` - Import bulk data into Mattermost for teams, channels, users, post content, and more.
-* :doc:`SMTP email setup ` - Connect to an email server to send emails for password resets and system notifications.
-* :doc:`Email templates ` - Alter the transactional emails Mattermost sends to your users.
-* :doc:`Calls deployment ` - Learn about the different calls deployment types.
-* :doc:`Configure CloudFront to host Mattermost static assets ` - Improve caching performance to reduce content load times.
-* :doc:`Use an outbound proxy ` - Monitor outbound traffic and control the websites that can appear in embedded content.
-* :doc:`Migration guide ` - Learn how to migrate from other chat services to Mattermost.
-* :doc:`Migrate from Slack ` - Learn how to migrate from Slack to Mattermost.
-* :doc:`Chinese, Japanese, and Korean search ` - Set up search capabilities for teams communicating via Chinese, Japanese, or Korean.
-* :doc:`Whitelabel Mattermost ` - Whitelabel the Mattermost server and apps.
-* :doc:`JSON audit log schema ` - Learn how to configure Mattermost audit logging using a JSON object.
-* :doc:`SSL client certificate setup ` - Configure SSL client certificates for Mattermost Desktop and Web Apps.
-* :doc:`Manage telemetry ` - Self-hosted system admins can opt out of sharing telemetry data with Mattermost.
-* :doc:`Configure health check probes ` - Configure health check probes for your self-hosted Mattermost server.
\ No newline at end of file
diff --git a/source/guides/server-deployment.rst b/source/guides/server-deployment.rst
deleted file mode 100644
index 0fdf268defe..00000000000
--- a/source/guides/server-deployment.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-Server deployment
-==================
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :titlesonly:
-
- Deployment overview
- Set up a socket-based Mattermost database
- Image proxy
- Backup and disaster recovery
- Configure transport encryption
- Bleve search
- Trial Mattermost using Docker
-
-* :doc:`Deployment overview ` - Learn the basics of the Mattermost user experience, communication protocols, network access, data storage, and deployment options.
-* :doc:`Set up a socket-based Mattermost database ` - Connect your Mattermost server to your database service.
-* :doc:`Image proxy ` - Setup and configure an image proxy to make loading images faster and more reliable and prevent pixel tracking.
-* :doc:`Backup and disaster recovery ` - Implement data backups, disaster recovery, and high availability deployment.
-* :doc:`Configure transport encryption ` - Use transport encryption between Mattermost clusters and your proxy and database.
-* :doc:`Bleve search ` - Use the Bleve search engine to provide Lucene-style full-text search.
-* :doc:`Trial Mattermost using Docker ` - Learn how to evaluate Mattermost in a non-production environment using Docker.
\ No newline at end of file
diff --git a/source/guides/upgrade-mattermost.rst b/source/guides/upgrade-mattermost.rst
index 86b43bc3c83..0ba12956fbe 100644
--- a/source/guides/upgrade-mattermost.rst
+++ b/source/guides/upgrade-mattermost.rst
@@ -1,9 +1,6 @@
Upgrade Mattermost
==================
-.. include:: ../_static/badges/allplans-selfhosted.rst
- :start-after: :nosearch:
-
.. toctree::
:maxdepth: 1
:hidden:
@@ -13,16 +10,22 @@ Upgrade Mattermost
Prepare to upgrade Mattermost
Communicate scheduled maintenance best practices
Upgrade Mattermost Server
- Enterprise install and upgrade
- Install a license key
+ Enterprise install and upgrade
+ Administrator onboarding tasks
+ Enterprise roll-out-checklist
+ Welcome email to end users
Downgrade Mattermost Server
+ Open source components
Stay up to date with the latest features and improvements.
+* :doc:`Important upgrade notes ` - Find version-specific upgrade considerations.
* :doc:`Prepare to upgrade Mattermost ` - Learn how to prepare for a Mattermost upgrade.
* :doc:`Communicate scheduled mainenance best practices ` - Learn best practices for communicating scheduled server mainenance in advance of a service maintenance window.
* :doc:`Upgrade Mattermost Server ` - Learn the basics of upgrading your Mattermost server to the latest version.
-* :doc:`Enterprise install and upgrade ` - Learn how to upgrade your Mattermost server to premium versions.
-* :doc:`Install a license key ` - Learn how to add or change a Mattermost license key.
-* :doc:`Important upgrade notes ` - Find version-specific upgrade considerations.
+* :doc:`Enterprise install and upgrade ` - Learn how to upgrade your Mattermost server to premium versions.
+* :doc:`Administrator onboarding tasks ` - Learn about the onboarding tasks for administrators after an upgrade.
+* :doc:`Enterprise roll-out-checklist ` - Learn about the roll-out checklist for enterprise users.
+* :doc:`Welcome email to end users ` - Learn how to send a welcome email to end users after an upgrade.
* :doc:`Downgrade Mattermost Server ` - Find out how to roll back to older versions of Mattermost.
+* :doc:`Open source components ` - Find out about the open source components used in Mattermost.
\ No newline at end of file
diff --git a/source/index.rst b/source/index.rst
index d31c8a8b41e..3b9af9683ab 100644
--- a/source/index.rst
+++ b/source/index.rst
@@ -16,9 +16,9 @@ Mattermost product documentation
:glob:
About Mattermost
- Deploy Mattermost
- Manage Mattermost
- Use Mattermost
+ User Guide
+ Deployment Guide
+ Administration Guide
Integrate and extend
Develop with Mattermost
Get help with Mattermost
diff --git a/source/install/cluster-transport-encryption.rst b/source/install/cluster-transport-encryption.rst
deleted file mode 100644
index 45dc3658933..00000000000
--- a/source/install/cluster-transport-encryption.rst
+++ /dev/null
@@ -1,223 +0,0 @@
-Configuring cluster transport encryption
-========================================
-
-.. include:: ../_static/badges/ent-selfhosted.rst
- :start-after: :nosearch:
-
-Mattermost is able to encrypt the messages sent within the cluster of a deployment using SSH tunneling. The guide walks through the deployment of this solution on Ubuntu 20.04, but it can be adapted for any Linux operating system.
-
-While this document only describes the configuration of a three-node cluster, it is by no means limited to that number.
-
-Prerequisites
--------------
-
-- SSH port whitelisted between each node of the deployment.
-- Active ufw/iptables on each node.
-- Access to the root/sudo user of each node for configuration.
-- A configured Mattermost cluster.
-- Mattermost running with a dedicated service user.
-- Mattermost service is stopped on each cluster node.
-
-.. note::
- Support on the application level is currently in development and, when available, will deprecate this document.
-
-Example environment
--------------------
-
-In this scenario there are three application nodes in our environment with the following hostname/IP mapping:
-
-- **transport-encryption-mattermost1:** 10.10.250.146
-- **transport-encryption-mattermost2:** 10.10.250.231
-- **transport-encryption-mattermost3:** 10.10.250.165
-
-Preparations
-------------
-
-- Connect to each Mattermost server with a sudo or root user.
-- Make a note of the IP from each cluster member used for the internal communication.
-- Ensure ``AllowTcpForwarding`` is enabled in ``/etc/ssh/sshd_config`` of each cluster node.
-
-SSH authentication
-------------------
-
-On each node, generate a SSH key-pair for the service account. In our scenario this is called ``mattermost``:
-
-.. code-block:: sh
-
- sudo -u mattermost ssh-keygen -t rsa
-
-.. code-block:: text
-
- Generating public/private rsa key pair.
- Enter file in which to save the key (/home/mattermost/.ssh/id_rsa):
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been saved in /home/mattermost/.ssh/id_rsa.
- Your public key has been saved in /home/mattermost/.ssh/id_rsa.pub.
- The key fingerprint is:
- SHA256:redacted mattermost@transport-encryption-mattermost1
-
-
-The location of the SSH key itself is irrelevant if company policies require the usage of another storage location.
-
-Next, ensure that the SSH public key of each node is added to the ``authorized_keys`` file of the other nodes of the cluster. To do so, copy the contents of ``/home/mattermost/.ssh/id_rsa.pub`` of nodes 2 and 3, and add it to ``/home/mattermost/.ssh/authorized_keys`` of node 1.
-
-Repeat this step for each node of the cluster. As a result, each node should be able to establish an SSH connection to the other nodes of the cluster.
-
-.. note::
-
- This service account can be separate from the service account already used for the Mattermost ``systemd`` service itself. It's important that this service account is allowed to create a SSH tunnel with port forwarding, but it doesn't require any additional permissions.
-
-ufw configuration
------------------
-
-As a next step, allow SSH access from each of the other member nodes, e.g.:
-
-- mattermost1 allows from mattermost2 and mattermost3
-- mattermost2 allows from mattermost1 and mattermost3
-- mattermost3 allows from mattermost1 and mattermost2
-
-To do so, we add an exception in the firewall. The commands for ``mattermost1`` look as follows:
-
-.. code-block:: sh
-
- sudo ufw allow from 10.10.250.231/32 to any port ssh
- sudo ufw allow from 10.10.250.165/32 to any port ssh
- sudo ufw status
-
-.. code-block:: text
-
- Rule added
- Rule added
- Status: active
-
- To Action From
- -- ------ ----
- 22/tcp ALLOW 10.10.250.10
- 8065/tcp ALLOW Anywhere
- 22/tcp ALLOW 10.10.250.231
- 22/tcp ALLOW 10.10.250.165
-
-
-Repeat the same steps on the other nodes, replacing the IPs with the ones from the other member nodes. Do so for each member node, excluding the node itself.
-
-Next, open ``/etc/ufw/after.rules`` and add the following block to the bottom of the file:
-
-.. code-block:: text
-
- *nat
- :POSTROUTING ACCEPT [0:0]
- :PREROUTING ACCEPT [0:0]
-
- -A OUTPUT -p tcp -d 10.10.250.231 --dport 8075 -j DNAT --to-destination 127.0.0.1:18075
- -A OUTPUT -p tcp -d 10.10.250.231 --dport 8074 -j DNAT --to-destination 127.0.0.1:18074
- -A OUTPUT -p tcp -d 10.10.250.165 --dport 8075 -j DNAT --to-destination 127.0.0.1:28075
- -A OUTPUT -p tcp -d 10.10.250.165 --dport 8074 -j DNAT --to-destination 127.0.0.1:28074
-
- COMMIT
-
-
-Two lines always belong to a single node, so in a deployment with four nodes:
-
-.. code-block:: text
-
- -A OUTPUT -p tcp -d ip_node_2 --dport 8075 -j DNAT --to-destination 127.0.0.1:18075
- -A OUTPUT -p tcp -d ip_node_2 --dport 8074 -j DNAT --to-destination 127.0.0.1:18074
- -A OUTPUT -p tcp -d ip_node_3 --dport 8075 -j DNAT --to-destination 127.0.0.1:28075
- -A OUTPUT -p tcp -d ip_node_3 --dport 8074 -j DNAT --to-destination 127.0.0.1:28074
- -A OUTPUT -p tcp -d ip_node_4 --dport 8075 -j DNAT --to-destination 127.0.0.1:38075
- -A OUTPUT -p tcp -d ip_node_4 --dport 8074 -j DNAT --to-destination 127.0.0.1:38074
-
-Please be aware that the ports on the right side must be unique, so if you have a cluster of six nodes, use 8075 and 8074 with 1 to 5 in front of it. If the cluster is of bigger size, additional ports must be used.
-
-Ensure that your operating system has IP forwarding enabled using the following command:
-
-.. code-block:: sh
-
- sysctl -w net.ipv4.ip_forward=1
-
-After that, reload the ufw rules and confirm that the iptable rules were successfully created:
-
-.. code-block:: sh
-
- iptables -t nat -L
-
-.. code-block:: text
-
- Chain PREROUTING (policy ACCEPT)
- target prot opt source destination
-
- Chain INPUT (policy ACCEPT)
- target prot opt source destination
-
- Chain OUTPUT (policy ACCEPT)
- target prot opt source destination
- DNAT tcp -- anywhere 10.10.250.231 tcp dpt:8075 to:127.0.0.1:18075
- DNAT tcp -- anywhere 10.10.250.231 tcp dpt:8074 to:127.0.0.1:18074
- DNAT tcp -- anywhere 10.10.250.165 tcp dpt:8075 to:127.0.0.1:28075
- DNAT tcp -- anywhere 10.10.250.165 tcp dpt:8074 to:127.0.0.1:28074
-
-Repeat those steps for every node on the cluster. At the end of this section the following should be configured:
-
-- SSH access enabled in firewall from each cluster node to another.
-- Per node 2 iptables rules for port 8074 and 8075.
-- IP forwarding enabled.
-
-SSH configuration
------------------
-
-As a next step, ensure that the SSH tunnels are created as part of the Mattermost service start. To do so, create a file called ``pre_start.sh`` in ``/opt/mattermost/bin`` on ``mattermost1``:
-
-.. code-block:: sh
-
- #!/bin/bash
- ssh -N -f -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -L 18075:10.10.250.231:8075 10.10.250.231 || true
- ssh -N -f -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -L 18074:10.10.250.231:8074 10.10.250.231 || true
- ssh -N -f -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -L 28075:10.10.250.165:8075 10.10.250.165 || true
- ssh -N -f -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -L 28074:10.10.250.165:8074 10.10.250.165 || true
-
-.. note::
-
- - We're ignoring the error from the SSH connection itself in case a tunnel is already active. Otherwise the Mattermost server would fail to start.
- - Please make sure to back up this script in case of a version upgrade.
-
-Afterwards, set the executable bit on the shell script:
-
-.. code-block:: sh
-
- chmod +x /opt/mattermost/bin/pre_start.sh
-
-Open the systemd unit file of Mattermost and search for ``Type=Notify``. After this, enter a ``ExecStartPre`` script that will be executed before Mattermost itself is started:
-
-.. code-block:: text
-
- [Service]
- Type=notify
- ExecStartPre=/opt/mattermost/bin/pre_start.sh
-
-Reload the systemd daemon afterwards:
-
-.. code-block:: sh
-
- systemctl daemon-reload
-
-Repeat the same steps on each of the member nodes and adapt the node IPs and amount of entries for your environment.
-
-Cluster start
--------------
-
-Once each node is configured, restart the service on each cluster and confirm that it's running using the command below:
-
-.. code-block:: sh
-
- systemctl start mattermost
- systemctl status mattermost.service
-
-.. code-block:: text
-
- ● mattermost.service - Mattermost
- Loaded: loaded (/lib/systemd/system/mattermost.service; static; vendor preset: enabled)
- Active: active (running) since Fri 2019-10-04 19:44:20 UTC; 5min ago
- Process: 16734 ExecStartPre=/opt/mattermost/bin/pre_start.sh (code=exited, status=0/SUCCESS)
-
-Next, open the Mattermost System Console and confirm that each node is reporting successfully in the High Availability section.
diff --git a/source/install/common-configure-support-email.rst b/source/install/common-configure-support-email.rst
deleted file mode 100644
index a0903299c96..00000000000
--- a/source/install/common-configure-support-email.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-:orphan:
-:nosearch:
-
-.. note::
- We recommend configuring the `Support Email `_ under ``SupportSettings``, set ``"SupportEmail"``. This is the email address your users will contact when they need help.
diff --git a/source/install/common-default-config-changes.rst b/source/install/common-default-config-changes.rst
deleted file mode 100644
index 4701bdd49cd..00000000000
--- a/source/install/common-default-config-changes.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-:orphan:
-:nosearch:
-
-Configure the following properties in this file:
-
-* Under ``SqlSettings``, set ``DriverName`` to ``"postgres"``. This is the default and recommended database for all Mattermost installations.
-* Under ``SqlSettings``, set ``DataSource`` to ``"postgres://mmuser:@:5432/mattermost?sslmode=disable&connect_timeout=10"`` replacing ``mmuser``, ````, ```` and ``mattermost`` with your database name.
-* Under ``ServiceSettings``, set ``"SiteURL"``: The domain name for the Mattermost application (e.g. ``https://mattermost.example.com``).
\ No newline at end of file
diff --git a/source/install/common-deploy-faq.rst b/source/install/common-deploy-faq.rst
deleted file mode 100644
index ff8fdaba9de..00000000000
--- a/source/install/common-deploy-faq.rst
+++ /dev/null
@@ -1,37 +0,0 @@
-:orphan:
-:nosearch:
-
-.. This page is intentionally not accessible via the LHS navigation pane because it's common content included on other docs pages.
-
-Why doesn't Mattermost start at system boot?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To have the Mattermost Server start at system boot, the systemd unit file needs to be enabled. Run the following command:
-
-.. code-block:: sh
-
- sudo systemctl enable mattermost.service
-
-Why does Mattermost fail to start at system boot?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If your database is on the same system as your Mattermost Server, we recommend editing the default ``/lib/systemd/system/mattermost.service`` systemd unit file to add ``After=postgresql.service`` and ``BindsTo=postgresql.service`` to the ``[Unit]`` section.
-
-Can I run Mattermost without a proxy?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Yes. Mattermost binds to 443 instead of 8065. The Mattermost binary requires the correct permissions to do that binding. You must activate the ``CAP_NET_BIND_SERVICE`` capability to allow the new Mattermost binary to bind to ports lower than 1024 by running the following command:
-
-.. code-block:: sh
-
- sudo setcap cap_net_bind_service=+ep ./mattermost/bin/mattermost
-
-.. note::
-
- We highly recommend using a proxy in front of Mattermost server for up to 200 concurrent users. If you have fewer than 200 concurrent users, you can :doc:`set up TLS `. If you're exceeding 200 concurrent users, you'll need :doc:`a proxy `, such as NGINX, in front of Mattermost to manage the traffic.
-
-Where can I access Mattermost Server logs?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Mattermost Server logs are located in the ``logs`` directory of wherever you installed Mattermost. By default, this is ``/opt/mattermost/logs``, inside the ``mattermost.log`` file.
-
diff --git a/source/install/common-gpg-public-key-changed.rst b/source/install/common-gpg-public-key-changed.rst
deleted file mode 100644
index d51ab96fbf0..00000000000
--- a/source/install/common-gpg-public-key-changed.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-:orphan:
-:nosearch:
-
-.. important::
-
- The GPG public key has changed. You can `import the new public key `_ or run the automatic Mattermost PPA repository setup script provided below. Depending on your setup, additional steps may also be required, particularly for installations that didn't rely on the repository setup script. We recommend deleting the old key from ``/etc/apt/trusted.gpg.d`` before adding the apt repository.
-
- - For Ubuntu Focal - 20.04 LTS:
-
- ``sudo apt-key del A1B31D46F0F3A10B02CF2D44F8F2C31744774B28``
-
- ``curl -sL -o- https://deb.packages.mattermost.com/pubkey.gpg | gpg --dearmor | sudo apt-key add``
-
- - For Ubuntu Jammy - 22.04 LTS and Ubuntu Noble - 24.04 LTS:
-
- ``sudo rm /usr/share/keyrings/mattermost-archive-keyring.gpg``
-
- ``curl -sL -o- https://deb.packages.mattermost.com/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/mattermost-archive-keyring.gpg > /dev/null``
\ No newline at end of file
diff --git a/source/install/common-omnibus-tip.rst b/source/install/common-omnibus-tip.rst
deleted file mode 100644
index 479b748de9d..00000000000
--- a/source/install/common-omnibus-tip.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-:orphan:
-:nosearch:
-
-.. tip::
-
- If you are running the Mattermost Server and database on a single system, we recommend the :doc:`Mattermost Omnibus install method ` as this greatly reduces setup and ongoing maintenance.
-
diff --git a/source/install/common-postgres-database-important.rst b/source/install/common-postgres-database-important.rst
deleted file mode 100644
index ebc40ee836a..00000000000
--- a/source/install/common-postgres-database-important.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-:orphan:
-:nosearch:
-
-.. important::
-
- You need a PostgreSQL database. See the :doc:`database preparation ` documentation for details on this prerequisite.
diff --git a/source/install/config-tls-mattermost.rst b/source/install/config-tls-mattermost.rst
deleted file mode 100644
index 830730777bd..00000000000
--- a/source/install/config-tls-mattermost.rst
+++ /dev/null
@@ -1,74 +0,0 @@
-:nosearch:
-
-.. This page is intentionally not accessible via the LHS navigation pane because it's common content included on other docs pages.
-
-Configure TLS on Mattermost server
------------------------------------
-
-You have two options if you want users to connect with HTTPS:
-
-1. Set up TLS on Mattermost server.
-2. Install a proxy such as NGINX and set up TLS on the proxy.
-
-The easiest option is to set up TLS on the Mattermost Server, but if you expect to have more than 200 users, use a proxy for better performance. A proxy server also provides standard HTTP request logs.
-
-.. note::
-
- Your Mattermost server must be accessible from the Let's Encrypt CA in order to verify your domain name and issue the certificate. Be sure to open your firewall and configure any reverse proxies to forward traffic to ports 80 and 443. More information can be found `at Let's Encrypt `_.
-
-Configure TLS on the Mattermost server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-1. In **System Console > Environment > Web Server** (or **System Console > General > Configuration** in versions prior to 5.12).
-
- a. Change the **Listen Address** setting to ``:443``.
- b. Change the **Connection Security** setting to ``TLS``.
- c. Change the **Forward port 80 to 443** setting to ``true``.
-
-2. Activate the ``CAP_NET_BIND_SERVICE`` capability to allow Mattermost to bind to low ports.
-
- .. code-block:: sh
-
- sudo setcap cap_net_bind_service=+ep /opt/mattermost/bin/mattermost
-
-3. Install the security certificate. You can use `Let's Encrypt `__ to automatically install and setup the certificate, or you can specify your own certificate.
-
-To use a Let's Encrypt certificate
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The certificate is retrieved the first time that a client tries to connect to the Mattermost server. Certificates are retrieved for any hostname a client tries to reach the server at.
-
- a. Change the **Use Let's Encrypt** setting to ``true``.
- b. Restart the Mattermost server for these changes to take effect.
-
-.. note::
-
- If Let's Encrypt is enabled, forward port 80 through a firewall, with :ref:`Forward80To443 ` ``config.json`` setting set to ``true`` to complete the Let's Encrypt certification.
-
-To use your own certificate
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-a. Change the **Use Let's Encrypt** setting to ``false``.
-b. Change the **TLS Certificate File** setting to the location of the certificate file.
-c. Change the **TLS Key File** setting to the location of the private key file.
-d. Restart the Mattermost server for these changes to take effect.
-
-.. note::
-
- Password-protected certificates are not supported.
-
-Use TLS on NGINX (as a proxy)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. note::
-
- Do not set up TLS on Mattermost before doing so for NGINX. It breaks the connection as the TLS prevents it from successfully communicating with the Mattermost server.
-
-- NGINX will act as a forward proxy to encrypt the traffic between the client and Mattermost server. After installing the SSL certificate, the incoming traffic will be handled via NGINX on port 443 exposed to the internet, proxy to the Mattermost server running on port 80.
-- (Optional) Upstream encryption between NGINX to Mattermost server is allowed.
-- Follow `NGINX's guide on setting up SSL Termination for TCP Upstream Servers `__.
-
-Other helpful resources:
-
-- `NGINX's SSL blog `_
-- `NGINX's SSL guide `_
diff --git a/source/install/database-transport-encryption.rst b/source/install/database-transport-encryption.rst
deleted file mode 100644
index adabc38a273..00000000000
--- a/source/install/database-transport-encryption.rst
+++ /dev/null
@@ -1,121 +0,0 @@
-Configuring database transport encryption
-==========================================
-
-.. include:: ../_static/badges/ent-selfhosted.rst
- :start-after: :nosearch:
-
-Mattermost is able to encrypt the traffic between the database and the application using TLS. This guide describes the setup steps for a single, separate MySQL server.
-
-Prerequisites
--------------
-
-- Operational Mattermost server or cluster.
-- Operational MySQL server.
-- Confirmed connectivity between Mattermost and MySQL server.
-- Authentication credentials for Mattermost user on MySQL server.
-
-Example environment
--------------------
-
-In this scenario there is one Mattermost application server and one MySQL server, both running Ubuntu 20.04, with the following IPs:
-
-- **transport-encryption-mattermost1:** 10.10.250.146
-- **transport-encryption-mysql1:** 10.10.250.148
-
-Configuring MySQL
------------------
-
-As a first step, connect to both servers with a sudo or root user.
-
-Execute the following command to prepare the server for SSL connections:
-
-.. code-block:: sh
-
- sudo mysql_ssl_rsa_setup --uid=mysql
-
-This generates self-signed certificates in ``/var/lib/mysql/`` that the MySQL server uses to encrypt the connection. If you would like to use certificates from your company CA, please follow the MySQL documentation for configuration steps.
-
-**Note:** Optionally, it can be enforced that all connections must be made via a local socket connection or TLS. To do this, open ``/etc/mysql/mysql.conf.d/mysqld.cnf`` and append the following line to the file:
-
-.. code-block:: text
-
- require_secure_transport = ON
-
-Any connection to the MySQL server must now be made with secure transport enabled.
-
-Last but not least, restart the server and confirm it is up and running:
-
- .. code-block:: sh
-
- systemctl restart mysql
- systemctl status mysql
-
-.. code-block:: text
-
- ● mysql.service - MySQL Community Server
- Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
- Active: active (running) since Fri 2019-10-18 16:41:25 UTC; 2s ago
- Process: 8380 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid (code=exited, status=0/SUCCESS)
- Process: 8360 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
- Main PID: 8382 (mysqld)
- Tasks: 27 (limit: 2361)
- CGroup: /system.slice/mysql.service
- └─8382 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
-
- Oct 18 16:41:25 transport-encryption-mysql1 systemd[1]: Stopped MySQL Community Server.
- Oct 18 16:41:25 transport-encryption-mysql1 systemd[1]: Starting MySQL Community Server...
- Oct 18 16:41:25 transport-encryption-mysql1 systemd[1]: Started MySQL Community Server.
-
-Configuring Mattermost
-----------------------
-
-On the Mattermost server, open the file ``config.json`` and look for the ``DataSource`` value in the ``SqlSettings`` section. It should look similar to this:
-
-.. code-block:: text
-
- "DataSource": "mmuser:sad09zusaopdhsad123@tcp(10.10.250.148:3306)/mattermost?charset=utf8mb4,utf8\u0026writeTimeout=30s",
-
-At the end of the line, we can configure that TLS must be turned on with the ``tls`` flag which supports the following values:
-
-- true (Require TLS + a trusted certificate)
-- false
-- skip-verify (Require TLS + accept self-signed)
-- preferred (Try TLS, fallback to unencrypted)
-
-In our case we need to use ``skip-verify`` since we use a self-signed certificate. The configuration setting will now look like this:
-
-.. code-block:: text
-
- "DataSource": "mmuser:sad09zusaopdhsad123@tcp(10.10.250.148:3306)/mattermost?charset=utf8mb4,utf8\u0026writeTimeout=30s&tls=skip-verify",
-
-If you're running Mattermost in a cluster, be sure to update the value on each node of the cluster. If you are using configuration in the database, be sure to update the ``systemd`` unit file and enable TLS for the configuration store.
-
-Once complete, restart the Mattermost server and ensure the system is operational:
-
-.. code-block:: sh
-
- sudo systemctl restart mattermost
- systemctl status mattermost
-
-.. code-block:: text
-
- ● mattermost.service - Mattermost
- Loaded: loaded (/lib/systemd/system/mattermost.service; static; vendor preset: enabled)
- Active: active (running) since Fri 2019-10-18 16:47:08 UTC; 3s ago
- Process: 3424 ExecStartPre=/opt/mattermost/bin/pre_start.sh (code=exited, status=0/SUCCESS)
- Main PID: 3443 (mattermost)
- Tasks: 20 (limit: 2361)
- CGroup: /system.slice/mattermost.service
- ├─3443 /opt/mattermost/bin/mattermost --config=mysql://mmuser:sad09zusaopdhsad123@tcp(10.10.250.148:3306)/mattermost?charset=utf8mb4,utf8&writeTimeout=30s&tls=skip-verify
- └─3459 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64
-
- Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"debug","ts":1571417228.8637397,"caller":"scheduler/worker.go:36","msg":"Worker started","worker":"Plugins"}
- Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"debug","ts":1571417228.8639545,"caller":"jobs/jobs_watcher.go:38","msg":"Watcher Started"}
- Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"info","ts":1571417228.8641603,"caller":"jobs/schedulers.go:72","msg":"Starting schedulers."}
- Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"debug","ts":1571417228.8645394,"caller":"app/web_hub.go:436","msg":"Hub for index 0 is starting with goroutine 3923"}
- Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"debug","ts":1571417228.8648505,"caller":"app/web_hub.go:436","msg":"Hub for index 1 is starting with goroutine 3924"}
- Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"debug","ts":1571417228.8656101,"caller":"web/static.go:31","msg":"Using client directory at /opt/mattermost/client"}
- Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"info","ts":1571417228.8681324,"caller":"commands/server.go:105","msg":"Sending systemd READY notification."}
- Oct 18 16:47:08 transport-encryption-mattermost1 systemd[1]: Started Mattermost.
- Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"debug","ts":1571417228.9003174,"caller":"jobs/schedulers.go:166","msg":"Next run time for scheduler","scheduler_name":"MigrationsSched
- Oct 18 16:47:08 transport-encryption-mattermost1 mattermost[3443]: {"level":"debug","ts":1571417228.9025588,"caller":"jobs/schedulers.go:166","msg":"Next run time for scheduler","scheduler_name":"PluginsSchedule
diff --git a/source/install/deploying-team-edition-on-bitnami.rst b/source/install/deploying-team-edition-on-bitnami.rst
deleted file mode 100644
index 54ffcd44c59..00000000000
--- a/source/install/deploying-team-edition-on-bitnami.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-Deploy Mattermost on Bitnami
-=============================
-
-Deploy your Mattermost Team Edition server in the cloud with one simple click using one of several Bitnami cloud images. Deployment options include:
-
-- `Amazon Web Services `__
-- `Microsoft Azure `__
-- `Google Cloud Platform `__
diff --git a/source/install/download-latest-tarball.rst b/source/install/download-latest-tarball.rst
deleted file mode 100644
index 37b61b8ef08..00000000000
--- a/source/install/download-latest-tarball.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-:orphan:
-:nosearch:
-
-In a terminal window, ssh onto the system that will host the Mattermost Server.
-
-Using ``wget``, download the Mattermost Server release you want to install.
-
-.. tab:: Latest release
-
- .. code-block:: sh
-
- wget https://releases.mattermost.com/10.6.1/mattermost-10.6.1-linux-amd64.tar.gz
-
-.. tab:: Current ESR
-
- .. code-block:: sh
-
- wget https://releases.mattermost.com/10.5.2/mattermost-10.5.2-linux-amd64.tar.gz
-
-.. tab:: Older releases
-
- If you are looking for an older release, Enterprise and Team Edition releases can be found in our :doc:`version archive ` documentation.
diff --git a/source/install/install-kubernetes-aks.rst b/source/install/install-kubernetes-aks.rst
deleted file mode 100644
index 0a1fc16a4a8..00000000000
--- a/source/install/install-kubernetes-aks.rst
+++ /dev/null
@@ -1,133 +0,0 @@
-Install Mattermost on Azure AKS
-================================
-
-.. include:: ../_static/badges/allplans-selfhosted.rst
- :start-after: :nosearch:
-
-You can use a supported `Azure Marketplace Container Offer `__ to install Mattermost on your existing Azure infrastructure.
-
-.. important::
-
- You are responsible for Azure costs associated with any infrastructure you spin up to host a Mattermost server, and Azure credits cannot be applied towards the purchase of a Mattermost license.
-
-Infrastructure pre-requisites
------------------------------
-
-Deploying Mattermost on Azure AKS requires the following database and cluster prerequisites.
-
-PostgreSQL v13.0+ database
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Mattermost requires a pre-existing PostgreSQL database within your infrastructure. We recommend using `Azure Database for PostgreSQL - Flexible Server `_. Deploy one by following `this Microsoft quick start guide `_.
-
-.. tip::
- We recommend using Private Access for your database.
-
-Running AKS cluster
-~~~~~~~~~~~~~~~~~~~
-
-Mattermost Azure Container Offer requires a pre-existing Kubernetes Cluster with an Ingress Controller pre-installed. We recommend creating a new AKS cluster with the `AGIC add-on enabled `_.
-
-Follow `this tutorial `_ to create a new AKS cluster with the add-on enabled.
-
-.. tip::
-
- - Connectivity should be already in place between the AKS cluster and the PostgreSQL database.
- - Any pre-installed Ingress Controller within the cluster that supports the Ingress Kubernetes resource and TLS termination should work out of the box.
-
-Deployment pre-requisites
--------------------------
-
-Deploying Mattermost on Azure AKS requires the following deployment prerequisites.
-
-Valid DNS name and TLS certificates
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Mattermost relies on strong TLS certification in order to provide all the features to users. You need to have access to a DNS zone and be able to provide a valid TLS key and certificate for the Ingress Controller.
-
-Mattermost License and AKS Capacity
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: ../_static/badges/ent-only.rst
- :start-after: :nosearch:
-
-If your deployment option is for more than ``100 users``, you must have more than 2 nodes on your AKS cluster to support High Availability, and you must provide a valid Mattermost License file.
-
-.. note::
-
- Providing a license is optional at this stage. You can enable a **30 day** Mattermost trial once the server is deployed.
-
-Deploy Mattermost
------------------
-
-1. Navigate to our `Azure Marketplace Container Offer `_ and get the offer.
-
- Alternatively, you can go to the ``Extensions + Applications`` section of your AKS cluster and install the Mattermost offering from there. Visit the `Microsoft cluster extensions documentation `_ to learn more.
-
-2. Choose the **Resource Group** and the **Region** of your installed AKS and PostgreSQL database.
-
- .. image:: ../_static/images/azure/basics.png
- :alt: An example of the Azure AKS Project details screen.
-
-3. Choose your AKS cluster.
-
- .. image:: ../_static/images/azure/aks-cluster.png
- :alt: An example of the Azure AKS cluster setup screen.
-
-4. Fill in the details for your PostgreSQL database.
-
- .. image:: ../_static/images/azure/postgreSQL.png
- :alt: An example of the Azure AKS Database setup screen.
-
- .. note::
-
- - Connectivity should be already in place between the AKS cluster and the database.
- - Database should already exist and the user specified must have full access.
-
-5. Adjust deployment details.
-
- .. image:: ../_static/images/azure/deployment-details.png
- :alt: An example of the Azure AKS Deployment Details setup screen.
-
-.. note::
- You can define a Deployment size to automatically adjust the installation. A valid Mattermost license is required for deployments of more than 100 users.
-
-6. Configure Mattermost installation hostname and Ingress details. The AGIC add-on is used in the following example to show the ingress annotations required.
-
- .. code-block:: yaml
-
- kubernetes.io/ingress.class: azure/application-gateway
- appgw.ingress.kubernetes.io/ssl-redirect: "true"
-
-Upload yor own TLS certificates at this stage to take advantage of all Mattermost features.
-
- .. image:: ../_static/images/azure/networking-details.png
- :alt: An example of the Azure AKS Networking Details setup screen.
-
-7. Ensure that everything is running. You should be able to check the installed plugin from the **AKS Extensions + Applications** page under the **Settings** menu.
-
- a. When the deployment is complete, obtain the hostname or IP address of your Mattermost deployment using the following command:
-
- .. code-block:: sh
-
- kubectl -n mattermost-operator get ingress
-
- b. Get the resulting IP address from the ``ADDRESS`` column, and use your domain registration service to create a DNS record.
- c. You should be good to go.
-
-Learn more about managing your Mattermost server by visiting the :doc:`Managing Mattermost ` documentation.
-
-Upgrade Mattermost
--------------------
-
-1. Visit the ``Extensions + Applications`` section of your AKS cluster where your Mattermost installation is deployed.
-2. You can enable minor version auto upgrades since these are not updating Mattermost version
-3. Expand the ``Configurarion Settings`` table and add the below configuration and the version you want to install as a value.
-
- .. code::
-
- global.azure.mattermost.version
-
- .. image:: ../images/global-azure-mattermost-version.png
- :alt: An example of using custom Mattermost version.
-4. Click ``Save`` and wait for the upgrade.
\ No newline at end of file
diff --git a/source/install/install-kubernetes.rst b/source/install/install-kubernetes.rst
deleted file mode 100644
index 9da04b22ecf..00000000000
--- a/source/install/install-kubernetes.rst
+++ /dev/null
@@ -1,413 +0,0 @@
-Deploy Mattermost on Kubernetes
-=====================================
-
-.. include::../_static/badges/allplans-selfhosted.rst
- :start-after:
- :nosearch:
-
-This document provides a guide to deploying Mattermost on Kubernetes using the Mattermost Kubernetes Operator. This guide will primarily focus on the recommended approach of using S3-compatible storage and a managed database service. If you choose to use self-managed components, you will need to adapt the instructions accordingly, pointing to your internal services instead.
-
-Intended outcome and deployment recommendations
--------------------------------------------------
-
-The goal of this documentation is to enable you to quickly and reliably deploy a production-ready Mattermost instance. While the operator supports a range of configurations, we strongly recommend using a cloud-native approach for production environments.
-
-While this guide focuses on using external, managed services for your database and file storage, the Mattermost Operator *does* offer the flexibility to use other solutions. For example, you could choose to deploy a PostgreSQL database within your Kubernetes cluster using the CloudNative PG operator (or externally however you wish), or use a self-hosted MinIO instance for object storage.
-
-While using managed cloud services is generally simpler to maintain and our recommended approach for production deployments, using self-managed services like MinIO for storage and CloudNative PG for PostgreSQL are also valid options if you have the expertise to manage them.
-
-Prerequisites
--------------
-
-Before you begin, ensure you have the following:
-
-* A functioning Kubernetes cluster (see the `Kubernetes setup guide `__). Your cluster should be running a `supported Kubernetes version `__.
-* The `kubectl` command-line tool installed on your local machine (see the `kubectl installation guide `__).
-* 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 `Mattermost Kubernetes Operator <#install-the-mattermost-operator>`__ documentation for resource requirements at different scales.
-
-.. tip::
-
- * If you're new to Kubernetes or prefer a managed solution, consider using a service like `Amazon EKS `_, `Azure Kubernetes Service `_, `Google Kubernetes Engine `_, or `DigitalOcean Kubernetes `_.
- * To customize your production deployment, refer to the :doc:`configuration settings documentation `.
- * If you encounter issues during deployment, consult the :ref:`deployment troubleshooting guide `.
-
-Installation Steps
-------------------
-
-The installation process involves setting up the necessary operators and then deploying Mattermost itself.
-
-Install the Nginx Ingress Controller
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Follow the instructions in the `Kubernetes deployment documentation `_ to install the NGINX ingress controller on your Kubernetes cluster. Mattermost recommends installing the Nginx Operator via helm, regardless of platform you are installing to.
-
-Install the Mattermost Operator
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Mattermost Kubernetes Operator can be installed using Helm.
-
-1. Install Helm (version 3.13.0 or later). See the `Helm quickstart documentation `_ for installation instructions.
-
-2. Add the Mattermost Helm repository:
-
- .. code-block:: sh
-
- helm repo add mattermost https://helm.mattermost.com
-
-3. Create a file named ``config.yaml`` and populate it with the contents of the `Mattermost operator values file `_. This file allows for customization of the operator.
-
-4. Create a namespace for the Mattermost Operator:
-
- .. code-block:: sh
-
- kubectl create ns mattermost-operator
-
-5. Install the Mattermost Operator:
-
- .. code-block:: sh
-
- helm install mattermost/mattermost-operator -n
-
- For example:
-
- .. code-block:: sh
-
- helm install mattermost-operator mattermost/mattermost-operator -n mattermost-operator
-
- To use your custom ``config.yaml`` file:
-
- .. code-block:: sh
-
- helm install mattermost-operator mattermost/mattermost-operator -n mattermost-operator -f config.yaml
-
-.. tip::
-
- If you don't specify a version, the latest version of the Mattermost Operator will be installed.
-
-Deploy Mattermost
------------------
-
-1. **(Mattermost Enterprise only)** Create a Mattermost license secret. Create a file named ``mattermost-license-secret.yaml`` with the following content, replacing ``[LICENSE_FILE_CONTENTS]`` with your actual license:
-
- .. code-block:: yaml
-
- apiVersion: v1
- kind: Secret
- metadata:
- name: my-mattermost-license
- type: Opaque
- stringData:
- license:
-
-.. note::
-
- 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. See the :doc:`high availability documentation ` for more on highly-available deployments.
-
-2. Create a Mattermost installation manifest file named ``mattermost-installation.yaml``. Use the following template, adjusting the values as needed:
-
- .. code-block:: yaml
-
- apiVersion: installation.mattermost.com/v1beta1
- kind: Mattermost
- metadata:
- name: # Example: mm-example-full
- spec:
- size: # Example: 5000users
- ingress:
- enabled: true
- host: # Example: example.mattermost-example.com
- annotations:
- kubernetes.io/ingress.class: nginx
- version: # Example: 9.3.0
- licenseSecret: "" # If you created a license secret, put the name here
-
-.. note::
-
- File names in this guide are suggestions; you can use different names.
-
-
- Key fields in the manifest include:
-
- * ``metadata.name``: The name of your Mattermost deployment in Kubernetes.
- * ``spec.size``: The size of your installation (e.g., "100users", "1000users", etc.).
- * ``spec.ingress.host``: The DNS name for your Mattermost installation.
- * ``spec.version``: The Mattermost version. See the :doc:`server version archive ` for available versions.
- * ``spec.licenseSecret``: The name of the Kubernetes secret containing your license (required for Enterprise).
-
- For a full list of configurable fields, see the `example manifest `_ and the `Custom Resource Definition `_.
-
-3. Create a file named ``mattermost-database-secret.yaml`` for database credentials. This secret must be in the same namespace as the Mattermost installation.
-
- .. code-block:: yaml
-
- apiVersion: v1
- data:
- DB_CONNECTION_CHECK_URL:
- DB_CONNECTION_STRING:
- MM_SQLSETTINGS_DATASOURCEREPLICAS:
- kind: Secret
- metadata:
- name: my-postgres-connection
- type: Opaque
-
-
- Example for AWS Aurora with PostgreSQL:
-
- .. code-block:: yaml
-
- apiVersion: v1
- data:
- DB_CONNECTION_CHECK_URL: cG9zdGdyZXM6Ly91c2VyOnN1cGVyX3NlY3JldF9wYXNzd29yZEBteS1kYXRhYmFzZS5jbHVzdGVyLWFiY2QudXMtZWFzdC0xLnJkcy5hbWF6b25hd3MuY29tOjU0MzIvbWF0dGVybW9zdD9jb25uZWN0X3RpbWVvdXQ9MTAK
- DB_CONNECTION_STRING: cG9zdGdyZXM6Ly91c2VyOnN1cGVyX3NlY3JldF9wYXNzd29yZEBteS1kYXRhYmFzZS5jbHVzdGVyLWFiY2QudXMtZWFzdC0xLnJkcy5hbWF6b25hd3MuY29tOjU0MzIvbWF0dGVybW9zdD9jb25uZWN0X3RpbWVvdXQ9MTAK
- MM_SQLSETTINGS_DATASOURCEREPLICAS: cG9zdGdyZXM6Ly91c2VyOnN1cGVyX3NlY3JldF9wYXNzd29yZEBteS1kYXRhYmFzZS5jbHVzdGVyLXJvLWFiY2QudXMtZWFzdC0xLnJkcy5hbWF6b25hd3MuY29tOjU0MzIvbWF0dGVybW9zdD9jb25uZWN0X3RpbWVvdXQ9MTAK
- kind: Secret
- metadata:
- name: my-postgres-connection
- type: Opaque
-
-Create the Filestore Secret
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Create a file named ``mattermost-filestore-secret.yaml`` to store the credentials for your object storage service (e.g., AWS S3, MinIO). This secret must be created in the same namespace where you intend to install Mattermost. The file should contain the following YAML structure:
-
-.. code-block:: yaml
-
- apiVersion: v1
- kind: Secret
- metadata:
- name: # Choose a descriptive name (e.g., my-s3-credentials)
- type: Opaque
- data:
- accesskey:
- secretkey:
-
-.. csv-table::
- :header: "Key", "Description", "Required"
-
- "accesskey", "Base64-encoded access key for your storage service.", "Yes"
- "secretkey", "Base64-encoded secret key for your storage service.", "Yes"
- "metadata.name", "The name of the Kubernetes secret.", "Yes"
-
-.. important::
-
- The ``accesskey`` and ``secretkey`` values must be **base64-encoded**. Do not enter the raw keys directly. Use a command-line tool or online encoder to generate the base64 strings.
-
-**Example (AWS S3):**
-
-.. code-block:: yaml
-
- apiVersion: v1
- kind: Secret
- metadata:
- name: my-s3-credentials
- type: Opaque
- data:
- accesskey: QUNDRVNTX0tFWQo= # Example: Replace with your actual encoded key
- secretkey: U1VQRVJfU0VDUkVUX0tFWQo= # Example: Replace with your actual encoded key
-
-Configure the Mattermost Installation Manifest
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Now, modify the ``mattermost-installation.yaml`` file (created in step 2) to connect Mattermost to your external database and object storage.
-
-.. tip::
- Refer to the supported fields in step 2 for guidance on where to add these configurations within the YAML structure.
-
-Connect to the Database
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Add the following to the ``spec`` section of your manifest:
-
- .. code-block:: yaml
-
- spec:
- database:
- external:
- secret: # The name of the database secret (e.g., my-postgres-connection)
-
-Connect to Object Storage
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Add the following to the ``spec`` section of your manifest:
-
- .. code-block:: yaml
-
- spec:
- fileStore:
- external:
- url: # The URL of your storage service (e.g., s3.amazonaws.com)
- bucket: # The name of your storage bucket
- secret: # The name of the filestore secret (e.g., my-s3-credentials)
-
-S3-specific settings
-^^^^^^^^^^^^^^^^^^^^^
-
-If you are using Amazon S3, it's recommended to enable server-side encryption (SSE) and SSL. Add the following environment variables to the ``mattermostEnv`` section:
-
- .. code-block:: yaml
-
- spec:
- mattermostEnv:
- - name: MM_FILESETTINGS_AMAZONS3SSE
- value: "true"
- - name: MM_FILESETTINGS_AMAZONS3SSL
- value: "true"
-
-**Example Manifest (Mattermost Enterprise, PostgreSQL, S3):**
-
- .. code-block:: yaml
-
- apiVersion: installation.mattermost.com/v1beta1
- kind: Mattermost
- metadata:
- name: mm-example-external-db
- spec:
- size: 5000users
- ingress:
- enabled: true
- host: example.mattermost-example.com
- annotations:
- kubernetes.io/ingress.class: nginx
- version: 9.3.0
- licenseSecret: my-mattermost-license
- database:
- external:
- secret: my-postgres-connection
- fileStore:
- external:
- url: s3.amazonaws.com
- bucket: my-s3-bucket
- secret: my-s3-iam-access-key # Or whatever you named your secret
- mattermostEnv:
- - name: MM_FILESETTINGS_AMAZONS3SSE
- value: "true"
- - name: MM_FILESETTINGS_AMAZONS3SSL
- value: "true"... (Rest of the document continues as before)
-
-Apply the Installation Manifest
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-With the manifest files prepared, you can now deploy Mattermost to your Kubernetes cluster. Ensure you are connected to the correct cluster using `kubectl`.
-
-1. Create the Mattermost Namespace:
-
- .. code-block:: sh
-
- kubectl create ns mattermost
-
-2. Apply the License Secret (Mattermost Enterprise only):
-
- .. code-block:: sh
-
- kubectl apply -n mattermost -f # Replace with the actual path
-
-3. Apply the Mattermost Installation Manifest:
-
- .. code-block:: sh
-
- kubectl apply -n mattermost -f # Replace with the actual path
-
-**Monitor the Deployment:**
-
-You can track the deployment's progress using either the Kubernetes dashboard or the command line:
-
- .. code-block:: sh
-
- kubectl -n mattermost get mm -w
-
-The Mattermost installation is complete when the Custom Resource reaches the ``stable`` state.
-
-Access Mattermost
-~~~~~~~~~~~~~~~~~
-
-Once the deployment is complete, you can access your Mattermost instance.
-
-1. Get the Ingress Address:
-
- .. code-block:: sh
-
- kubectl -n mattermost get ingress
-
-2. Connect to Mattermost: Copy the address from the ``ADDRESS`` column of the ingress output. Open your web browser and navigate to this address.
-
-3. Configure DNS (Recommended):
-
-For production environments, configure your DNS to point your domain (specified in the `ingress.host` field of your manifest) to the ingress address obtained in the previous step. This is typically done through your domain registrar or cloud DNS provider (e.g., Route53 on AWS).
-
-4. Local Testing (Optional): If you are testing locally and haven't configured DNS, you can use port-forwarding to access Mattermost:
-
- .. code-block:: sh
-
- kubectl -n mattermost port-forward svc/ 8065:8065 # Replace with the name of your Mattermost service
-
- Then, navigate to ``http://localhost:8065`` in your browser. You can determine the service name by running: `kubectl get svc -n mattermost`.
-
-**Congratulations!** You have successfully deployed Mattermost on Kubernetes.
-
-Frequently asked questions
---------------------------
-
-What's the difference between the Mattermost Operator and Helm Charts?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Mattermost Operator is a self-contained set of application/product-specific instructions that runs inside Kubernetes and facilitates application
-management and deployment.
-
-Helm is a tool used to deploy Kubernetes manifests to a cluster, but does not facilitate application management.
-
-We provide a `helm chart `__ that can be used to to install the Mattermost Operator.
-
-What database and filestore should I use for Mattermost?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Always refer to the Mattermost server documentation for what databases and filestores are supported.
-
-The following documentation on :doc:`scaling for enterprise ` is a good place to start.
-
-In Kubernetes, Mattermost recommends a cloud-native approach using managed services like Amazon RDS for PostgreSQL, Azure Database for PostgreSQL, or Google Cloud SQL for PostgreSQL for the database, and Amazon S3 or similar for file storage. For purely self-hosted solutions, you can use a PostgreSQL database (via CloudNative-PG operator) and MinIO for file storage.
-
-What are the Operator-Managed database and filestore options?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Mattermost Operator provides an option to directly provision a database and filestore for a Mattermost installation to use,
-but this option **is not intended for production use** as these options rely on specific versions of third party operators not owned or maintained by Mattermost.
-For production deployments of Mattermost, one of the other database and filestore configuration options should be chosen.
-
-Note that you can choose to manage your Mattermost database and filestore in Kubernetes with other operators, but these should
-be provisioned separately first and then connected to the Mattermost installation as ``external`` backends. We do not recommend this method for users who aren't intimately familiar with Kubernetes.
-
-Can you use blue-green deployments with different database schemas?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Currently this is not supported as it introduces the possibility of missing a data entry in the database.
-
-Are environment variables supported?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Yes. However, ``config.json`` file settings will be overridden if the `$MM_SQLSETTINGS_DATASOURCE` environment variable is set. See the :doc:`Environment Variables ` configuration settings documentation for details.
-
-Issues configuring login with SAML on Kubernetes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-For some SAML authentication configurations, ``502`` status code response can appear during login attempts due to requests being too large.
-This can be caused by the default ``proxy-buffer-size`` setting for NGINX Ingress being too low.
-To fix this issue, configure an appropriate buffer size (8k or 16k should be sufficient for most cases) with NGINX annotation by adding it to the Mattermost manifest under ``spec.ingressAnnotations``:
-
-.. code-block:: yaml
-
- ...
- spec:
- ...
- ingress:
- ...
- annotations:
- nginx.ingress.kubernetes.io/proxy-buffer-size: 16k
- ...
-
-Use caution when changing the buffer size as it may slightly impact NGINX performance. Exact values are machine-dependent.
-
-Need help?
-----------
-
-If you run into challenges when using or transitioning to the Mattermost Operator for your Kubernetes deployment, `let us know `_. Your feedback helps us improve our tools and documentation for a better customer experience.
\ No newline at end of file
diff --git a/source/install/install-mattermost-server-tarball.rst b/source/install/install-mattermost-server-tarball.rst
deleted file mode 100644
index 5cad3f76981..00000000000
--- a/source/install/install-mattermost-server-tarball.rst
+++ /dev/null
@@ -1,83 +0,0 @@
-:orphan:
-:nosearch:
-
-Install the Mattermost Server by extracting the tarball, creating users and groups, and setting file/folder permissions.
-
-First extract the tarball:
-
-.. code-block:: sh
-
- tar -xvzf mattermost*.gz
-
-Now move the entire folder to the ``/opt`` directory (or whatever path you require):
-
-.. code-block:: sh
-
- sudo mv mattermost /opt
-
-.. note::
-
- If you choose a custom path, ensure this alternate path is used in all steps that follow.
-
-By default the Mattermost Server uses ``/opt/mattermost/data`` as the folder for files. This can be changed in the System Console during setup (even using alternative storage such as S3). Create the default storage folder:
-
-.. code-block:: sh
-
- sudo mkdir /opt/mattermost/data
-
-Now set up a user and group called ``mattermost``:
-
-.. code-block:: sh
-
- sudo useradd --system --user-group mattermost
-
-.. note::
-
- If you choose a custom user and group name, ensure it is used in all the steps that follow.
-
-Set the file and folder permissions for your installation:
-
-.. code-block:: sh
-
- sudo chown -R mattermost:mattermost /opt/mattermost
-
-Give the ``mattermost`` group write permissions to the application folder:
-
-.. code-block:: sh
-
- sudo chmod -R g+w /opt/mattermost
-
-You will now have the latest Mattermost Server version installed on your system. Starting and stopping the Mattermost Server is done using ``systemd``. Create the systemd unit file:
-
-.. code-block:: sh
-
- sudo touch /lib/systemd/system/mattermost.service
-
-As root, edit the systemd unit file to add the following lines:
-
-.. code-block:: text
-
- [Unit]
- Description=Mattermost
- After=network.target
-
- [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
-
- [Install]
- WantedBy=multi-user.target
-
-Save the file and reload systemd using ``sudo systemctl daemon-reload``. Mattermost Server is now installed and is ready for setup.
-
-.. note::
-
- If you are installing the Mattermost server on the same system as your database, you may want to add both ``After=postgresql.service`` and ``BindsTo=postgresql.service`` to the ``[Unit]`` section of the systemd unit file.
diff --git a/source/install/install-rhel.rst b/source/install/install-rhel.rst
deleted file mode 100644
index 72beff56735..00000000000
--- a/source/install/install-rhel.rst
+++ /dev/null
@@ -1,170 +0,0 @@
-Install Mattermost on RHEL
-==========================
-
-.. raw:: html
-
-
-
-
-
-
-
Minimum system requirements:
-
- - Operating System: Enterprise Linux 7+, Oracle Linux 6+, Oracle Linux 7+
-
- Hardware: 1 vCPU/core with 2GB RAM (support for up to 1,000 users)
- - Database: PostgreSQL v13+
- - Network:
-
- - Application 80/443, TLS, TCP Inbound
- - Administrator Console 8065, TLS, TCP Inbound
- - SMTP port 10025, TCP/UDP Outbound
-
-
-
-
-
-
-
-.. note::
-
- You need a PostgreSQL database. See the :doc:`database preparation ` documentation for details on this prerequisite.
-
-This Mattermost deployment includes 4 steps: `download <#download>`__, `install <#install>`__, `setup <#setup>`__, and `update <#updates>`__.
-
-Download the latest Mattermost Server tarball
----------------------------------------------
-
-.. include:: download-latest-tarball.rst
- :start-after: :nosearch:
-
-Install
--------
-
-Ahead of installing the Mattermost Server, it’s good practice to update all your repositories and, where required, update existing packages by running the following commands:
-
-.. code-block:: sh
-
- sudo dnf update
- sudo dnf upgrade
-
-After any updates, and any system reboots, are complete, install the Mattermost Server.
-
-.. include:: install-mattermost-server-tarball.rst
- :start-after: :nosearch:
-
-Setup
------
-
-.. include:: setup-mattermost-server.rst
- :start-after: :nosearch:
-
-.. important::
- If you don't receive an error when starting Mattermost after the previous step, you are good to go. If you did receive an error, continue on
-
-Modify SELinux settings
------------------------
-
-When deploying Mattermost from RHEL9, which has SELinux running with enforceing mode enabled by default, additional configuration is required the SELinux policy is being enforced and denies access based on SELinux policy rules.
-
-First, ensure that SELinux is enabled and in enforcing mode by running the ``sestatus`` command. If it's ``enforcing``, you'll need to configure it properly.
-
-Set bin contexts for ``/opt/mattermost/bin``
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-SELinux enforces security contexts for binaries. To label the Mattermost binaries as safe, you'll need to set them to the below SELinux context.
-
-.. code-block:: sh
-
- sudo semanage fcontext -a -t bin_t "/opt/mattermost/bin(/.*)?"
- sudo restorecon -RF /opt/mattermost/bin
-
-Now, try starting Mattermost again with
-
-.. code-block:: sh
-
- sudo systemctl start mattermost
-
-If you don't receive an error, verify that Mattermost is running: curl ``http://localhost:8065``. You should see the HTML that's returned by the Mattermost Server. You're all set!
-
-.. important::
- If on starting Mattermost you receive an error, before moving on, check for the existence of a file in ``/opt/mattermost/logs`` - if ``mattermost.log`` exists in that directory, it's more likely you're dealing with a configuration issue in ``config.json``. Double check the previous steps before continuing
-
-Try different contexts for ``/opt/mattermost``
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-SELinux enforces security contexts for files and directories. To label your Mattermost directory as safe, you'll need to set an appropriate SELinux context.
-
-1. Check current context by running ``ls -Z /opt/mattermost``. When you see something like ``drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 mattermost`` returned, the ``default_t`` indicates that SELinux doesn't know what this directory is for.
-2. Set a safe context by assigning a SELinux type that's compatible with web services or applications by running ``sudo semanage fcontext -a -t httpd_sys_content_t "/opt/mattermost(/.*)?"``. A common one is ``httpd_sys_content_t``, used for serving files. Ensure you match the directory and its contents recursively. Run the ``sudo restorecon -R /opt/mattermost`` to apply the changes.
-
-Allow Mattermost to bind to ports
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When Mattermost needs specific ports (e.g., 8065), ensure that SELinux allows it by allowing Mattermost to bind to ports. Run the ``sudo semanage port -l | grep 8065`` command, and if the port's not listed, you'll need to add it by running ``sudo semanage port -a -t http_port_t -p tcp 8065``, replacing the ``8065`` with the required port.
-
-Handle custom policies
-~~~~~~~~~~~~~~~~~~~~~~~
-
-If Mattermost requires actions that SELinux blocks, you'll need to generate a custom policy.
-
-1. Check for SELinux denials first in the logs by running ``sudo ausearch -m avc -ts recent``, or by checking the audit log: ``sudo cat /var/log/audit/audit.log | grep denied``.
-
-2. If needed, generate a policy module by installing ``audit2allow`` to generate policies automatically.
-
-.. code-block:: sh
-
- sudo yum install -y policycoreutils-python-utils
- sudo grep mattermost /var/log/audit/audit.log | audit2allow -M mattermost_policy
- sudo semodule -i mattermost_policy.pp
-
-Test the configuration
-~~~~~~~~~~~~~~~~~~~~~~
-
-Restart Mattermost to confirm the configuation works as expected by running ``sudo systemctl restart mattermost``. In the case of failures, revisit the logs to identify other SELinux-related issues.
-
-.. tip::
-
- Need Mattermost working quickly for testing purposes? You can change SELinux to permissive mode by running the ``sudo setenforce 0``. command where policies aren't enforced, only logged. This command changes the SELinux mode to "permissive". While in permissive mode, policies aren't enforced, and violations are logged instead of being blocked. This can be helpful for debugging and troubleshooting issues related to SELinux policies. Ensure you re-enable enforcing mode once context is working as needed by running the ``sudo setenforce 1`` command.
-
-See the following SELinux resources for additional details:
-
-- `SELinux User’s and Administrator’s Guide `_
-- `SELinux Project Wiki `_
-- `Introduction to SELinux `_
-- `A Sysadmin’s Guide to SELinux: 42 Answers to the Big Questions `_
-- `Mastering SELinux: A Comprehensive Guide to Linux Security `_
-
-Updates
--------
-
-Updating your Mattermost Server installation when using the tarball requires several manual steps. See the :doc:`upgrade Mattermost Server ` documentation for details.
-
-Remove Mattermost
-------------------
-
-If you wish to remove the Mattermost Server for any reason, you must stop the Mattermost Server, back up all important files, and then run this command:
-
-.. code-block:: sh
-
- sudo rm /opt/mattermost
-
-.. note::
-
- Depending on your configuration, there are several important folders in ``/opt/mattermost`` to backup. These are ``config``, ``logs``, ``plugins``, ``client/plugins``, and ``data``. We strongly recommend you back up these locations before running the ``rm`` command.
-
-You may also remove the Mattermost systemd unit file and the user/group created for running the application.
-
-Frequently asked questions
---------------------------
-
-.. include:: common-deploy-faq.rst
- :start-after: :nosearch:
diff --git a/source/install/install-tar.rst b/source/install/install-tar.rst
deleted file mode 100644
index 96bdf890bff..00000000000
--- a/source/install/install-tar.rst
+++ /dev/null
@@ -1,91 +0,0 @@
-Install Mattermost Server using the tarball
-===========================================
-
-.. raw:: html
-
-
-
-
-
-
-
Minimum system requirements:
-
- - Hardware: 1 vCPU/core with 2GB RAM (support for up to 1,000 users)
- - Database: PostgreSQL v13+
- - Network:
-
- - Application 80/443, TLS, TCP Inbound
- - Administrator Console 8065, TLS, TCP Inbound
- - SMTP port 10025, TCP/UDP Outbound
-
-
-
-
-
-
-
-You can install the Mattermost Server on any 64-bit Linux system using the tarball. This is the most flexible installation method, but it comes with the highest effort, normally favored by advanced system administrators.
-
-.. include:: ../_static/badges/academy-tarball-deployment.rst
- :start-after: :nosearch:
-
-.. include:: common-omnibus-tip.rst
- :start-after: :nosearch:
-
-.. include:: common-postgres-database-important.rst
- :start-after: :nosearch:
-
-This Mattermost deployment includes 3 steps: `download <#download>`__, `install <#install>`__, and `setup <#setup>`__.
-
-Download
---------
-
-.. include:: download-latest-tarball.rst
- :start-after: :nosearch:
-
-Install
--------
-
-.. include:: install-mattermost-server-tarball.rst
- :start-after: :nosearch:
-
-Setup
------
-
-.. include:: setup-mattermost-server.rst
- :start-after: :nosearch:
-
-Updates
--------
-
-Updating your Mattermost Server installation when using the tarball requires several manual steps. See the :doc:`upgrade Mattermost Server ` documentation for details.
-
-Remove Mattermost
-------------------
-
-If you wish to remove the Mattermost Server for any reason, you must stop the Mattermost Server, back up all important files, and then run this command:
-
-.. code-block:: sh
-
- sudo rm - rf /opt/mattermost
-
-.. note::
-
- Depending on your configuration, there are several important folders in ``/opt/mattermost`` to backup. These are ``config``, ``logs``, ``plugins``, ``client/plugins``, and ``data``. We strongly recommend you back up these locations before running the ``rm`` command.
-
-You may also remove the Mattermost systemd unit file and the user/group created for running the application.
-
-Frequently asked questions
---------------------------
-
-.. include:: common-deploy-faq.rst
- :start-after: :nosearch:
diff --git a/source/install/install-ubuntu.rst b/source/install/install-ubuntu.rst
deleted file mode 100644
index 796f9c76376..00000000000
--- a/source/install/install-ubuntu.rst
+++ /dev/null
@@ -1,137 +0,0 @@
-Install Mattermost Server on Ubuntu
-===================================
-
-.. raw:: html
-
-
-
-
-
-
-
Minimum system requirements:
-
- - Operating System: 20.04 LTS, 22.04 LTS, 24.04 LTS
-
- Hardware: 1 vCPU/core with 2GB RAM (support for up to 1,000 users)
- - Database: PostgreSQL v13+
- - Network:
-
- - Application 80/443, TLS, TCP Inbound
- - Administrator Console 8065, TLS, TCP Inbound
- - SMTP port 10025, TCP/UDP Outbound
-
-
-
-
-
-
-
-You can install the Mattermost Server using our ``.deb`` signed packages using the Mattermost PPA (Personal Package Archive). Using the Mattermost Personal Package Archive (PPA) not only provides the quickest way to install a Mattermost Server, but also provides automatic updates. This install method is used for both single and clustered installations.
-
-.. include:: common-omnibus-tip.rst
- :start-after: :nosearch:
-
-.. include:: common-postgres-database-important.rst
- :start-after: :nosearch:
-
-This Mattermost deployment includes 4 steps: `add the PPA repository <#add-the-mattermost-server-ppa-repository>`__, `install <#install>`__, `setup <#setup>`__, and `update <#updates>`__.
-
-Add the Mattermost Server PPA repository
-----------------------------------------
-
-.. include:: common-gpg-public-key-changed.rst
- :start-after: :nosearch:
-
-In a terminal window, run the following repository setup command to add the Mattermost Server repositories:
-
-.. code-block:: sh
-
- curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermost
-
-This command configures the repositories needed for a PostgreSQL database, configures an NGINX web server to act as a proxy, configures certbot to issue and renew the SSL certificate, and configures the Mattermost Omnibus repository so that you can run the install command.
-
-Install
--------
-
-Ahead of installing the Mattermost Server, it's good practice to update all your repositories and, where required, update existing packages by running the following command:
-
-.. code-block:: sh
-
- sudo apt update
-
-After any updates and system reboots are complete, you can install the Mattermost Server by running:
-
-.. code-block:: sh
-
- sudo apt install mattermost -y
-
-You now have the latest Mattermost Server version installed on your system.
-
-The installation path is ``/opt/mattermost``. The package will have added a user and group named ``mattermost``. The required systemd unit file has also been created but will not be set to active.
-
-.. note::
-
- Since the signed package from the Mattermost repository is used for mulitple installation types, we don't add any dependencies in the systemd unit file. If you are installing the Mattermost server on the same system as your database, you may want to add both ``After=postgresql.service`` and ``BindsTo=postgresql.service`` to the ``[Unit]`` section of the systemd unit file.
-
-Setup
------
-
-Before you start the Mattermost Server, you need to edit the configuration file. A sample configuration file is located at ``/opt/mattermost/config/config.defaults.json``.
-
-Rename this configuration file with correct permissions:
-
-.. code-block:: sh
-
- sudo install -C -m 600 -o mattermost -g mattermost /opt/mattermost/config/config.defaults.json /opt/mattermost/config/config.json
-
-.. include:: common-default-config-changes.rst
- :start-after: :nosearch:
-
-.. include:: common-configure-support-email.rst
- :start-after: :nosearch:
-
-After modifying the ``config.json`` configuration file, you can now start the Mattermost Server:
-
-.. code-block:: sh
-
- sudo systemctl start mattermost
-
-Verify that Mattermost is running: curl ``http://localhost:8065``. You should see the HTML that’s returned by the Mattermost Server.
-
-The final step, depending on your requirements, is to run ``sudo systemctl enable mattermost.service`` so that Mattermost will start on system boot.
-
-.. note::
-
- The value of the ``sslmode`` property in the ``DataSource`` configuration is entirely dependent on your native environment. Please consult the native environment setup documentation for guidance on its value. The available options for ``sslmode`` are ``disable`` or ``require``. For example, if you are using Amazon Lightsail as your data source, you must set ``sslmode`` to ``require`` to successfully connect to the database.
-
-Updates
--------
-
-When a new Mattermost version is released, run: ``sudo apt update && sudo apt upgrade`` to download and update your Mattermost instance.
-
-.. note::
-
- When you run the ``sudo apt upgrade`` command, ``mattermost-server`` will be updated along with any other packages. We strongly recommend you stop the Mattermost Server before running the ``apt`` command using ``sudo systemctl stop mattermost``.
-
-Remove Mattermost
-------------------
-
-If you wish to remove the Mattermost Server for any reason, you can run this command:
-
-.. code-block:: sh
-
- sudo apt remove --purge mattermost
-
-Frequently asked questions
---------------------------
-
-.. include:: common-deploy-faq.rst
- :start-after: :nosearch:
diff --git a/source/install/prepare-mattermost-database.rst b/source/install/prepare-mattermost-database.rst
deleted file mode 100644
index edaf8706e05..00000000000
--- a/source/install/prepare-mattermost-database.rst
+++ /dev/null
@@ -1,261 +0,0 @@
-Prepare your Mattermost database
-================================
-
-.. include:: ../_static/badges/allplans-selfhosted.rst
- :start-after: :nosearch:
-
-You need a PostgreSQL database. See the :ref:`database software ` documentation for details on database version support. Looking for information on migrating from MySQL to PostgreSQL? See the :doc:`Migrate from MySQL to PostgreSQL ` documentation for details.
-
-.. tip::
-
- We recommend using a managed PostgreSQL database service, such as Amazon RDS, Google Cloud SQL, or Azure Database for PostgreSQL.
-
-Set up a PostgreSQL database
-----------------------------
-
-To set up a PostgreSQL database for use by the Mattermost server:
-
-1. Log in to the server that will host the database, and install PostgreSQL. See the `PostgreSQL `__ documentation for details. When the installation is complete, the PostgreSQL server is running, and a Linux user account called *postgres* has been created.
-
-2. Access PostgreSQL by running:
-
- .. code-block:: sh
-
- sudo -u postgres psql
-
-3. Create the Mattermost database by running:
-
- .. tab:: Ubuntu
-
- .. code-block:: SQL
-
- CREATE DATABASE mattermost;
-
- .. tab:: Red Hat
-
- .. code-block:: SQL
-
- CREATE DATABASE mattermost WITH ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE=template0;
-
-3. Create the Mattermost database by running:
-
- .. tab:: Ubuntu
-
- .. code-block:: SQL
-
- CREATE DATABASE mattermost;
-
- .. tab:: Red Hat
-
- .. code-block:: SQL
-
- CREATE DATABASE mattermost WITH ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE=template0;
-
-4. Switch to the new database by running:
-
- .. code-block:: sh
-
- \connect mattermost
-
-5. Create the Mattermost user *mmuser* by running the following command. Ensure you use a password that's more secure than ``mmuser-password``.
-
- .. code-block:: SQL
-
- CREATE USER mmuser WITH PASSWORD 'mmuser-password';
-
-6. If you're configuring PostgreSQL v15.x or later:
-
- a. Grant the user access to the Mattermost database by running:
-
- .. code-block:: SQL
-
- GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
-
- b. Grant the user to change the owner of a database to a user ``mmuser`` by running:
-
- .. code-block:: SQL
-
- ALTER DATABASE mattermost OWNER TO mmuser;
-
- c. Grant access to objects contained in the specified schema by running:
-
- .. code-block:: SQL
-
- GRANT USAGE, CREATE ON SCHEMA PUBLIC TO mmuser;
-
-7. Exit the PostgreSQL interactive terminal by running:
-
- .. code-block:: text
-
- \q
-
-8. (Optional) If you use separate servers for your database and the Mattermost server, you may allow PostgreSQL to listen on all assigned IP addresses. We recommend ensuring that only the Mattermost server is able to connect to the PostgreSQL port using a firewall.
-
- .. tab:: Ubuntu
-
- Open ``/etc/postgresql/{version}/main/postgresql.conf`` as *root* in a text editor.
-
- Replace ``{version}`` with the version of PostgreSQL that's currently running.
-
- a. Find the following line: ``#listen_addresses = 'localhost'``
-
- b. Uncomment the line and change ``localhost`` to ``*``: ``listen_addresses = '*'``
-
- c. Restart PostgreSQL for the change to take effect by running:
-
- .. code-block:: sh
-
- sudo systemctl restart postgresql-{version}
-
- .. tab:: Red Hat
-
- Open ``/var/lib/pgsql/{version}/data/postgresql.conf`` as *root* in a text editor.
-
- Replace ``{version}`` with the version of PostgreSQL that's currently running.
-
- a. Find the following line: ``#listen_addresses = 'localhost'``
-
- b. Uncomment the line and change ``localhost`` to ``*``: ``listen_addresses = '*'``
-
- c. Restart PostgreSQL for the change to take effect by running:
-
- .. code-block:: sh
-
- sudo systemctl restart postgresql-{version}
-
-9. Modify the file ``pg_hba.conf`` to allow the Mattermost server to communicate with the database by ensuring host connection types are set to ``trust``.
-
- .. tab:: Ubuntu
-
- These host connections are specific to Ubuntu 20.04, and will differ depending on the operating system version you're running. For example, in Ubuntu 22.04, the ``peer`` connection types are listed as ``sha-256`` instead.
-
- **Local Database (same server)**
-
- If the Mattermost server and the database are on the same machine:
-
- a. Open ``/etc/postgresql/{version}/main/pg_hba.conf`` as *root* in a text editor.
-
- b. Find the following lines:
-
- ``local all all peer``
-
- ``host all all ::1/128 ident``
-
- c. Change ``peer`` and ``ident`` to ``trust``:
-
- ``local all all trust``
-
- ``host all all ::1/128 trust``
-
- **Remote Database (separate server)**
-
- If the Mattermost server and the database are on different machines:
-
- a. Open ``/etc/postgresql/{version}/main/pg_hba.conf`` in a text editor as *root* user.
-
- b. Add the following line to the end of the file, where ``{mattermost-server-IP}`` is the IP address of the Mattermost server: ``host all all {mattermost-server-IP}/32 md5``.
-
- .. tab:: Red Hat
-
- These host connections are specific to Red Hat 8, and will differ depending on the operating system version you're running.
-
- **Local Database (same server)**
-
- If the Mattermost server and the database are on the same machine:
-
- a. Open ``/var/lib/pgsql/{version}/data/pg_hba.conf`` as *root* in a text editor.
-
- b. Find the following lines:
-
- ``local all all peer``
-
- ``host all all ::1/128 scram-sha-256``
-
- c. Change ``peer`` and ``ident`` to ``trust``:
-
- ``local all all trust``
-
- ``host all all ::1/128 trust``
-
- **Remote Database (separate server)**
-
- If the Mattermost server and the database are on different machines:
-
- a. Open ```/var/lib/pgsql/{version}/data/pg_hba.conf`` in a text editor as *root* user.
-
- b. Add the following line to the end of the file, where ``{mattermost-server-IP}`` is the IP address of the Mattermost server: ``host all all {mattermost-server-IP}/32 md5``.
-
-10. Reload PostgreSQL by running:
-
- .. code-block:: sh
-
- sudo systemctl reload postgresql-{version}
-
-11. Verify that you can connect with the user *mmuser*.
-
-.. tab:: Local Database (same server)
-
- If the Mattermost server and the database are on the same machine, use the following command:
-
- .. code-block:: sh
-
- psql --dbname=mattermost --username=mmuser --password
-
-.. tab:: Remote Database (separate server)
-
- If the Mattermost server is on a different machine, log into that machine and use the following command:
-
- .. code-block:: sh
-
- psql --host={postgres-server-IP} --dbname=mattermost --username=mmuser --password
-
- .. note::
-
- You might have to install the PostgreSQL client software to use the command.
-The PostgreSQL interactive terminal starts. To exit the PostgreSQL interactive terminal, type ``\q`` and press :kbd:`Enter` on Windows or Linux, or :kbd:`↵` on Mac.
-
-When the PostgreSQL database is installed, and the initial setup is complete, you can install the Mattermost server.
-
-.. important::
-
- If you are upgrading a major version of Postgres, it is essential that ``ANALYZE VERBOSE`` is run on the database post upgrade. This is necessary to re-populate the ``pg_statistics`` table used to generate optimal query plans. The database performance might suffer if this step is not done.
-
-
-Minimum supported 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.
-
-.. note::
-
- Mattermost v10.6 is not an :ref:`Extended Support Release (ESR) `. 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** |
-+===========================================================+==================+================================+
-| :ref:`v9.11 ESR ` | 2024-8-15 | 11.x |
-+-----------------------------------------------------------+------------------+--------------------------------+
-| :ref:`v10.5 ESR ` | 2025-2-15 | 11.x |
-+-----------------------------------------------------------+------------------+--------------------------------+
-| :ref:`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 `_. to discuss your options.
-
-Frequently asked questions
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-What about MySQL databases?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Mattermost is :ref:`deprecating support for MySQL ` starting with v11. We aren't actively maintaining or working on MySQL support.
diff --git a/source/install/proxy-to-mattermost-transport-encryption.rst b/source/install/proxy-to-mattermost-transport-encryption.rst
deleted file mode 100644
index c104a30f000..00000000000
--- a/source/install/proxy-to-mattermost-transport-encryption.rst
+++ /dev/null
@@ -1,113 +0,0 @@
-Configuring proxy to Mattermost transport encryption
-====================================================
-
-.. include:: ../_static/badges/ent-selfhosted.rst
- :start-after: :nosearch:
-
-Mattermost is able to encrypt the traffic between the proxy and the application server using TLS.
-
-Prerequisites
--------------
-
-- Operational Mattermost server or cluster.
-- Authentication credentials for Mattermost user on application server.
-
-Example environment
--------------------
-
-In this scenario there is one Mattermost application server and one NGINX server, both running Ubuntu 20.04, with the following IPs:
-
-- **transport-encryption-mattermost1:** 10.10.250.146
-- **transport-encryption-nginx:** 10.10.250.107
-
-Configuring NGINX
------------------
-
-On the NGINX server, connect to both servers with a sudo or root user. Open the Mattermost proxy configuration and search for the following line twice:
-
-.. code-block:: text
-
- proxy_pass http://backend;
-
-Change the protocol from ``http`` to ``https``:
-
-.. code-block:: text
-
- proxy_pass https://backend;
-
-Afterwards do not reload the NGINX server yet to minimize the downtime of the service.
-
-Configuring Mattermost
-----------------------
-
-On the Mattermost server, change to the config directory of Mattermost and generate a self-signed certificate that will be used to encrypt the traffic between the proxy server and the application server.
-
-**Note:** Alternatively you can sign a certificate from your company's CA.
-
-.. code-block:: sh
-
- cd /opt/mattermost/config
- openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
- chown root:mattermost *.pem
- chmod 640 *.pem
-
-
-Once complete, open the file ``config.json`` and modify the values ``ConnectionSecurity``, ``TLSCertFile`` and ``TLSKeyFile`` in the ``ServiceSettings`` section.
-
-**Before**
-
-.. code-block:: json
-
- {
- "ServiceSettings": {
- "SiteURL": "https://transport-encryption.dev.example.com",
- "WebsocketURL": "",
- "LicenseFileLocation": "",
- "ListenAddress": ":8065",
- "ConnectionSecurity": "",
- "TLSCertFile": "",
- "TLSKeyFile": "",
- "...":"..."
- },
- "...":"..."
- }
-
-
-**After**
-
-.. code-block:: json
-
- {
- "ServiceSettings": {
- "SiteURL": "https://transport-encryption.dev.example.com",
- "WebsocketURL": "",
- "LicenseFileLocation": "",
- "ListenAddress": ":8065",
- "ConnectionSecurity": "TLS",
- "TLSCertFile": "/opt/mattermost/config/cert.pem",
- "TLSKeyFile": "/opt/mattermost/config/key.pem",
- "...":"..."
- },
- "...":"..."
- }
-
-
-Restart the Mattermost server and ensure it's up and running:
-
-.. code-block:: sh
-
- sudo systemctl restart mattermost
- systemctl status mattermost
-
-.. code-block:: text
-
- ● mattermost.service - Mattermost
- Loaded: loaded (/lib/systemd/system/mattermost.service; static; vendor preset: enabled)
- Active: active (running) since Mon 2019-10-28 16:45:29 UTC; 1h 15min ago
- [...]
-
-Finally, on the **NGINX server**, reload the configuration to ensure that requests are sent on HTTPS:
-
-.. code-block:: sh
-
- sudo systemctl reload nginx
diff --git a/source/install/setup-mattermost-server.rst b/source/install/setup-mattermost-server.rst
deleted file mode 100644
index 71e0153d0e4..00000000000
--- a/source/install/setup-mattermost-server.rst
+++ /dev/null
@@ -1,28 +0,0 @@
-:orphan:
-:nosearch:
-
-.. This page is intentionally not accessible via the LHS navigation pane because it's common content included on other docs pages.
-
-Before you start the Mattermost Server, you need to edit the configuration file. A default configuration file is located at ``/opt/mattermost/config/config.json``.
-
-We recommend taking a backup of this default config ahead of making changes:
-
-.. code-block:: sh
-
- sudo cp /opt/mattermost/config/config.json /opt/mattermost/config/config.defaults.json
-
-.. include:: common-default-config-changes.rst
- :start-after: :nosearch:
-
-.. include:: common-configure-support-email.rst
- :start-after: :nosearch:
-
-After modifying the ``config.json`` configuration file, you can now start the Mattermost server:
-
-.. code-block:: sh
-
- sudo systemctl start mattermost
-
-Verify that Mattermost is running: curl ``http://localhost:8065``. You should see the HTML that’s returned by the Mattermost Server.
-
-The final step, depending on your requirements, is to run sudo ``systemctl enable mattermost.service`` so that Mattermost will start on system boot.
diff --git a/source/install/setup-tls.rst b/source/install/setup-tls.rst
deleted file mode 100644
index af270fc2162..00000000000
--- a/source/install/setup-tls.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-Set up TLS
-==========
-
-.. include:: ../_static/badges/allplans-selfhosted.rst
- :start-after: :nosearch:
-
-.. include:: config-tls-mattermost.rst
- :start-after: :nosearch:
\ No newline at end of file
diff --git a/source/install/transport-encryption.rst b/source/install/transport-encryption.rst
deleted file mode 100644
index 31ba9248038..00000000000
--- a/source/install/transport-encryption.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-Configuring transport encryption
-=================================
-
-.. include:: ../_static/badges/ent-selfhosted.rst
- :start-after: :nosearch:
-
-The components of the Mattermost setup are shown in the following diagram, including the transport encryption used. Aside from the encryption between the nodes of the Mattermost cluster, all transports rely on TLS encryption.
-
-.. note::
-
- The transport between the Application servers is not used by default and requires additional setup steps. Enhancing the core product to include automatic encryption between cluster nodes is in progress and planned for a later release.
-
-.. image:: ../images/transport-encryption.png
- :alt: Components of the Mattermost setup where all transports rely on TLS encryption.
-
-The configuration guides are split up into the following documents:
-
-.. toctree::
- :titlesonly:
-
- proxy-to-mattermost-transport-encryption.rst
- database-transport-encryption.rst
- cluster-transport-encryption.rst
diff --git a/source/install/trial-mattermost-using-docker.rst b/source/install/trial-mattermost-using-docker.rst
deleted file mode 100644
index da051a3a764..00000000000
--- a/source/install/trial-mattermost-using-docker.rst
+++ /dev/null
@@ -1,60 +0,0 @@
-Trial Mattermost using Docker
-=============================
-
-.. include:: ../_static/badges/allplans-selfhosted.rst
- :start-after: :nosearch:
-
-.. tip::
-
- Looking to deploy Mattermost in a production environment? See the :doc:`Docker deployment ` documentation for details.
-
-.. _Preview Mattermost on Docker:
-
-Preview Mattermost using Docker
--------------------------------
-
-Using the `Mattermost Docker Preview Image `__ is the fastest way to trial Mattermost in **Preview Mode**, and explore product functionality on a single local machine.
-
-.. important::
-
- This local image is self-contained (i.e., it has an internal database and works out of the box). Dropping a container using this image removes data and configuration as expected. You can see the :doc:`configuration settings ` documentation to learn more about customizing your trial deployment.
-
- **Preview Mode** shouldn't be used in a production environment, as it uses a known password string, contains other non-production configuration settings, has email disabled, keeps no persistent data (all data lives inside the container), and doesn't support upgrades.
-
- If you are planning to use the calling functionality in **Preview Mode** on a non-local environment, you should ensure that the server is running on a secure (HTTPs) connection and that the :ref:`network requirements ` to run calls are met.
-
-1. Install `Docker `__.
-
-2. Once you have Docker, run the following command in a terminal window:
-
- .. code-block:: sh
-
- docker run --name mattermost-preview -d --publish 8065:8065 --publish 8443:8443 mattermost/mattermost-preview
-
-3. When Docker is done fetching the image, navigate to ``http://localhost:8065/`` in your browser to preview Mattermost.
-4. Select **Don't have an account** in the top right corner of the screen to create an account for your preview instance. If you don't see this option, ensure that the :ref:`Enable open server ` configuration setting is enabled. This setting is disabled for self-hosted Mattermost deployments by default.
-5. Log in to your preview instance with your user credentials.
-
-Troubleshooting your preview deployment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The **Preview Mode** Docker instance for Mattermost is designed for product evaluation, and sets ``SendEmailNotifications=false`` so the product can function without enabling email. See the :doc:`Configuration Settings ` documentation to customize your deployment.
-
-To update your Mattermost preview image and container, you must first stop and delete your existing **mattermost-preview** container by running the following commands:
-
-.. code-block:: sh
-
- docker pull mattermost/mattermost-preview
- docker stop mattermost-preview
- docker rm mattermost-preview
-
-Once the new image is pulled and the container is stopped and deleted you need to run the ``docker run`` command from above.
-
-.. important::
- On Linux, include ``sudo`` in front of all ``docker`` commands.
-
-To access a shell inside the container, run the following command:
-
-.. code-block:: sh
-
- docker exec -ti mattermost-preview /bin/bash
\ No newline at end of file
diff --git a/source/integrate/community-for-mattermost-for-microsoft-teams.rst b/source/integrate/community-for-mattermost-for-microsoft-teams.rst
index 60da7e772ee..313f89cc918 100644
--- a/source/integrate/community-for-mattermost-for-microsoft-teams.rst
+++ b/source/integrate/community-for-mattermost-for-microsoft-teams.rst
@@ -52,8 +52,8 @@ Once you've installed the app, here are some ways to get started:
- **Share feedback**: Your ideas and feedback are valuable! Share your thoughts in the `~user-feedback `_ channel.
-Roadmap for Community for Mattermost and Microsoft Teams Integration
--------------------------------------------------------------------
+Roadmap for Community for Mattermost and Microsoft Teams integration
+----------------------------------------------------------------------
We are continuously improving the integration between Mattermost and Microsoft Teams to provide better connectivity and communication. Below are the upcoming features planned for this integration:
diff --git a/source/manage/admin/customize-branding.rst b/source/manage/admin/customize-branding.rst
new file mode 100644
index 00000000000..a7a066356e4
--- /dev/null
+++ b/source/manage/admin/customize-branding.rst
@@ -0,0 +1,17 @@
+Customize branding
+===================
+
+Whether you’re customizing the appearance of your workspace, utilizing branding tools, or managing code signing for custom builds, this section of documentation has you covered and provides everything you need to customize the branding of Mattermost to align with your organization’s identity. Use the navigation below to access detailed instructions for each customization option.
+
+.. toctree::
+ :maxdepth: 1
+ :hidden:
+ :titlesonly:
+
+ Customize Mattermost
+ Custom branding tools
+ Code signing custom builds
+
+* :doc:`Customize Mattermost ` - Learn how to customize the Mattermost server.
+* :doc:`Custom branding tools ` - Learn about custom branding tools for Mattermost.
+* :doc:`Code signing custom builds ` - Learn about code signing custom builds of Mattermost.
\ No newline at end of file
diff --git a/source/manage/error-codes.rst b/source/manage/admin/error-codes.rst
similarity index 97%
rename from source/manage/error-codes.rst
rename to source/manage/admin/error-codes.rst
index f72698ff494..0731493846e 100644
--- a/source/manage/error-codes.rst
+++ b/source/manage/admin/error-codes.rst
@@ -1,7 +1,7 @@
Mattermost error codes
======================
-.. include:: ../_static/badges/allplans-selfhosted.rst
+.. include:: ../../_static/badges/allplans-selfhosted.rst
:start-after: :nosearch:
Mattermost is designed to deploy in private networks which may be disconnected or “air-gapped” from the internet. In these deployments, links to Mattermost’s online documentation may be unavailable.
diff --git a/source/manage/generating-support-packet.rst b/source/manage/admin/generating-support-packet.rst
similarity index 99%
rename from source/manage/generating-support-packet.rst
rename to source/manage/admin/generating-support-packet.rst
index d937bbac44e..c3bc836470a 100644
--- a/source/manage/generating-support-packet.rst
+++ b/source/manage/admin/generating-support-packet.rst
@@ -1,7 +1,7 @@
Generate a Support Packet
==========================
-.. include:: ../_static/badges/ent-pro-selfhosted.rst
+.. include:: ../../_static/badges/ent-pro-selfhosted.rst
:start-after: :nosearch:
The Support Packet is used to help customers diagnose and troubleshoot issues. Use the System Console or the :ref:`mmctl system supportpacket ` command to generate a zip file that includes configuration information, logs, plugin details, and data on external dependencies across all nodes in a high-availability cluster. Confidential data, such as passwords, are automatically stripped.
@@ -17,7 +17,7 @@ Generate
1. Go to the System Console, and select **Commercial Support** from the System Console menu.
- .. image:: ../images/system-console-commercial-support.png
+ .. image:: ../../images/system-console-commercial-support.png
:alt: Example of available System Console menu options.
2. Select **Download Support Packet**. A zip file is downloaded to the local machine. You'll be notified if any packet files are unavailable during packet generation. See the ``warning.txt`` file for details.
diff --git a/source/upgrade/installing-license-key.rst b/source/manage/admin/installing-license-key.rst
similarity index 98%
rename from source/upgrade/installing-license-key.rst
rename to source/manage/admin/installing-license-key.rst
index e0d3b476390..432df28e043 100644
--- a/source/upgrade/installing-license-key.rst
+++ b/source/manage/admin/installing-license-key.rst
@@ -1,7 +1,7 @@
Install a license key
=====================
-.. include:: ../_static/badges/ent-pro-cloud-selfhosted.rst
+.. include:: ../../_static/badges/ent-pro-cloud-selfhosted.rst
:start-after: :nosearch:
You can use the System Console or the mmctl tools to add or change a Mattermost license key.
diff --git a/source/manage/admin/migration.rst b/source/manage/admin/migration.rst
new file mode 100644
index 00000000000..f2226ee9592
--- /dev/null
+++ b/source/manage/admin/migration.rst
@@ -0,0 +1,25 @@
+Migration
+==========
+
+This Mattermost Migration Guide is organized into sections based on migration scenarios and tools to help you transition smoothly to Mattermost or optimize your current setup.
+
+Whether you’re migrating from another platform, upgrading your database, or using bulk tools for data management, this guide provides the resources and instructions you need for a successful migration. Use the navigation below to explore detailed guidance tailored to your migration needs.
+
+.. toctree::
+ :maxdepth: 1
+ :hidden:
+ :titlesonly:
+
+ Migrate from MySQL to PostgreSQL
+ Server migration guide
+ Migrate from Slack
+ Bulk export tool
+ Bulk loading tool
+ Migration announcement email template
+
+* :doc:`Migrate from MySQL to PostgreSQL ` - Learn how to migrate from MySQL to PostgreSQL.
+* :doc:`Server migration guide ` - Learn about about migrating to Mattermost.
+* :doc:`Migrate from Slack ` - Learn how to migrate from Slack to Mattermost.
+* :doc:`Bulk export tool ` - Learn about the bulk export tool for Mattermost.
+* :doc:`Bulk loading tool ` - Learn about the bulk loading tool for Mattermost.
+* :doc:`Migration announcement email template ` - Use this email template to notify your users that you've migrated to Mattermost.
\ No newline at end of file
diff --git a/source/manage/admin/monitoring-and-performance.rst b/source/manage/admin/monitoring-and-performance.rst
new file mode 100644
index 00000000000..2c64a0850a8
--- /dev/null
+++ b/source/manage/admin/monitoring-and-performance.rst
@@ -0,0 +1,45 @@
+Monitoring and performance
+==========================
+
+This Monitoring and Performance Guide is organized into sections to help you effectively monitor, optimize, and manage the performance of your Mattermost installation.
+
+From collecting performance metrics and deploying monitoring tools to configuring health checks and managing notifications, this guide offers comprehensive resources to ensure your Mattermost workspace operates at peak efficiency. Use the navigation below to explore detailed instructions and best practices.
+
+.. toctree::
+ :maxdepth: 1
+ :hidden:
+ :titlesonly:
+
+ Optimize your Mattermost workspace
+ Collect performance metrics
+ Deploy Prometheus and Grafana for performance monitoring
+ Performance monitoring metrics
+ Push notification health targets
+ Performance alerting guide
+ Ensuring releases perform at scale
+ Manage user surveys
+ User satisfaction surveys
+ Notify admin
+ System-wide notifications
+ Statistics
+ In-product notices
+ Health checks
+ Health check probes
+ Product limits
+
+* :doc:`Optimize your Mattermost workspace ` - Learn about optimizing your Mattermost workspace.
+* :doc:`Collect performance metrics ` - Learn about collecting performance metrics for Mattermost.
+* :doc:`Deploy Prometheus and Grafana for performance monitoring ` - Learn how to deploy Prometheus and Grafana for performance monitoring.
+* :doc:`Performance monitoring metrics ` - Learn about performance monitoring metrics for Mattermost.
+* :doc:`Push notification health targets ` - Learn about push notification health targets for Mattermost.
+* :doc:`Performance alerting guide ` - Learn about performance alerting for Mattermost.
+* :doc:`Ensuring releases perform at scale ` - Learn how to ensure releases perform at scale for Mattermost.
+* :doc:`Manage user surveys ` - Learn about managing user surveys for Mattermost.
+* :doc:`User satisfaction surveys ` - Learn how to send user satisfaction surveys for Mattermost.
+* :doc:`Notify admin ` - Learn how to notify admins for Mattermost.
+* :doc:`System-wide notifications ` - Learn about system-wide notifications for Mattermost.
+* :doc:`Statistics ` - Learn about Mattermost statistics .
+* :doc:`In-product notices ` - Learn how to use in-product notices for Mattermost.
+* :doc:`Health checks ` - Learn about health checks for Mattermost.
+* :doc:`Health check probes ` - Learn how to set up health check probes for Mattermost.
+* :doc:`Product limits ` - Learn about product limits for Mattermost.
\ No newline at end of file
diff --git a/source/manage/self-hosted-billing.rst b/source/manage/admin/self-hosted-billing.rst
similarity index 100%
rename from source/manage/self-hosted-billing.rst
rename to source/manage/admin/self-hosted-billing.rst
diff --git a/source/manage/admin/server-configuration.rst b/source/manage/admin/server-configuration.rst
new file mode 100644
index 00000000000..da5af4a13e7
--- /dev/null
+++ b/source/manage/admin/server-configuration.rst
@@ -0,0 +1,37 @@
+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.
+
+.. toctree::
+ :maxdepth: 1
+ :hidden:
+ :titlesonly:
+
+ Elasticsearch
+ High availability
+ Store configuration in your database
+ Server configuration options
+ Environment variables
+ Customize the server
+ SMTP email setup
+ Email templates
+ Chinese, Japanese, and Korean search
+ SSL client certificate setup
+ Connected workspaces
+ Telemetry
+
+* :doc:`Elasticsearch ` - Learn how to configure Elasticsearch for Mattermost.
+* :doc:`High availability ` - Learn how to configure high availability for Mattermost.
+* :doc:`Store configuration in your database ` - Learn how to store configuration information in your Mattermost database rather than as a JSON file.
+* :doc:`Server configuration options ` - Learn about server configuration options for Mattermost.
+* :doc:`Environment variables ` - Learn how to use environment variables for Mattermost configuration.
+* :doc:`Customize the server ` - Learn about customizing branding for Mattermost server.
+* :doc:`SMTP email setup ` - Learn how to set up SMTP email for Mattermost.
+* :doc:`Email templates ` - Learn about customizing email templates for Mattermost.
+* :doc:`Chinese, Japanese, and Korean search ` - Learn about enabling Chinese, Japanese, and Korean search for Mattermost.
+* :doc:`SSL client certificate setup ` - Learn how to set up SSL client certificates for Mattermost.
+* :doc:`Connected workspaces ` - Learn how to connect Mattermost workspaces.
+* :doc:`Telemetry ` - Learn about Mattermost telemetry and data collection.
diff --git a/source/manage/admin/server-maintenance.rst b/source/manage/admin/server-maintenance.rst
new file mode 100644
index 00000000000..c3e0c3c1a00
--- /dev/null
+++ b/source/manage/admin/server-maintenance.rst
@@ -0,0 +1,33 @@
+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.
+
+.. toctree::
+ :maxdepth: 1
+ :hidden:
+ :titlesonly:
+
+ Install a license key
+ Generate a support packet
+ Backup and disaster recovery
+ Upgrade Mattermost server
+ Secure Mattermost
+ Scale your deployment
+ Mattermost error codes
+ mmctl
+ CLI
+ Feature labels
+
+* :doc:`Install a license key ` - Learn how to install a license key for Mattermost.
+* :doc:`Generate a support packet ` - Learn how to generate a support packet for Mattermost.
+* :doc:`Backup and disaster recovery ` - Learn about backup and disaster recovery for Mattermost.
+* :doc:`Upgrade Mattermost server ` - Learn how to upgrading Mattermost server.
+* :doc:`Secure Mattermost ` - Learn about securing Mattermost server.
+* :doc:`Scale your deployment ` - Learn about scaling Mattermost deployment.
+* :doc:`Mattermost error codes ` - Learn about Mattermost error codes and troubleshooting.
+* :doc:`mmctl ` - Learn about the mmctl command line tool for Mattermost.
+* :doc:`CLI ` - Learn about command line tools for Mattermost.
+* :doc:`Feature labels ` - Learn about Mattermost feature labels and their meanings.
\ No newline at end of file
diff --git a/source/manage/admin/user-management.rst b/source/manage/admin/user-management.rst
new file mode 100644
index 00000000000..fb0c3084a92
--- /dev/null
+++ b/source/manage/admin/user-management.rst
@@ -0,0 +1,21 @@
+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.
+
+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.
+
+.. toctree::
+ :maxdepth: 1
+ :hidden:
+ :titlesonly:
+
+ Permissions
+ Manage team and channel configuration
+ Advanced permissions infrastructure
+ Guest accounts
+
+* :doc:`Permissions ` - Learn about permissions in Mattermost.
+* :doc:`Manage team and channel configuration ` - Learn about managing team and channel configuration in Mattermost.
+* :doc:`Advanced permissions infrastructure ` - Learn about advanced permissions infrastructure in Mattermost.
+* :doc:`Guest accounts ` - Learn about guest accounts in Mattermost.
\ No newline at end of file
diff --git a/source/manage/admin/user-provisioning.rst b/source/manage/admin/user-provisioning.rst
new file mode 100644
index 00000000000..4a325fcebee
--- /dev/null
+++ b/source/manage/admin/user-provisioning.rst
@@ -0,0 +1,25 @@
+User provisioning
+==================
+
+.. toctree::
+ :maxdepth: 1
+ :hidden:
+ :titlesonly:
+
+ Provisioning workflows
+ AD/LDAP setup
+ AD/LDAP manage team or private channel membership
+ GitLab SSO
+ OpenID Connect SSO
+ Google SSO
+ Entra ID SSO
+ Convert OAuth 2.0 providers to OpenID
+
+* :doc:`Provisioning workflows ` - Learn about provisioning workflows in Mattermost.
+* :doc:`AD/LDAP setup ` - Learn how to set up AD/LDAP in Mattermost.
+* :doc:`AD/LDAP manage team or private channel membership ` - Learn how to manage team or private channel membership using AD/LDAP sync groups in Mattermost.
+* :doc:`GitLab SSO ` - Learn how to use GitLab SSO in Mattermost.
+* :doc:`OpenID Connect SSO ` - Learn how to use about OpenID Connect SSO in Mattermost.
+* :doc:`Google SSO ` - Learn how to use Google SSO in Mattermost.
+* :doc:`Entra ID SSO ` - Learn how to use Entra ID SSO in Mattermost.
+* :doc:`Convert OAuth 2.0 providers to OpenID ` - Learn how to convert OAuth 2.0 providers to OpenID in Mattermost.
\ No newline at end of file
diff --git a/source/manage/cloud-data-export.rst b/source/manage/cloud-data-export.rst
index 204f407b7f0..38eb4b4fa04 100644
--- a/source/manage/cloud-data-export.rst
+++ b/source/manage/cloud-data-export.rst
@@ -104,7 +104,7 @@ You can migrate your Cloud workspace data to a self-hosted deployment at any tim
How does the process work?
~~~~~~~~~~~~~~~~~~~~~~~~~~
-Before you export and migrate your data, you must :doc:`install Mattermost ` on the server you’ll be using to run Mattermost. The migration is done using the mmctl CLI tool, which is a remote CLI tool for Mattermost that's installed locally and uses the Mattermost API. ``mmctl`` is pre-installed.
+Before you export and migrate your data, you must :doc:`install Mattermost ` on the server you’ll be using to run Mattermost. The migration is done using the mmctl CLI tool, which is a remote CLI tool for Mattermost that's installed locally and uses the Mattermost API. ``mmctl`` is pre-installed.
The :ref:`mmctl usage notes ` provide some additional context and information which you can reference before and during the process.
diff --git a/source/manage/command-line-tools.rst b/source/manage/command-line-tools.rst
index 8e91d1761f4..5fc23a2bc5c 100644
--- a/source/manage/command-line-tools.rst
+++ b/source/manage/command-line-tools.rst
@@ -36,7 +36,7 @@ Use the CLI
.. tab:: Via Mattermost
- To run the CLI commands, you must be in the Mattermost root directory. On a default installation of Mattermost, the root directory is ``/opt/mattermost``. If you followed our standard :doc:`installation process `, you must run the commands as the user ``mattermost``. The name of the executable is ``mattermost``, and it can be found in the ``/opt/mattermost/bin`` directory.
+ To run the CLI commands, you must be in the Mattermost root directory. On a default installation of Mattermost, the root directory is ``/opt/mattermost``. If you followed our standard :doc:`installation process `, you must run the commands as the user ``mattermost``. The name of the executable is ``mattermost``, and it can be found in the ``/opt/mattermost/bin`` directory.
For example, to get the Mattermost version on a default installation of Mattermost:
diff --git a/source/manage/configure-health-check-probes.rst b/source/manage/configure-health-check-probes.rst
index 85e67774368..c11956791e8 100644
--- a/source/manage/configure-health-check-probes.rst
+++ b/source/manage/configure-health-check-probes.rst
@@ -6,7 +6,7 @@ Configure server health check probes
This page describes how to configure health check probes for a Mattermost server.
-Before you begin, you should have a running Mattermost server. If you don't, you can :doc:`install Mattermost on various distributions ` or deploy a `Kubernetes cluster with Minikube `_.
+Before you begin, you should have a running Mattermost server. If you don't, you can :doc:`install Mattermost on various distributions `.
.. note::
diff --git a/source/getting-started/feature-labels.rst b/source/manage/feature-labels.rst
similarity index 99%
rename from source/getting-started/feature-labels.rst
rename to source/manage/feature-labels.rst
index 25d3f948a60..7dd884847bb 100644
--- a/source/getting-started/feature-labels.rst
+++ b/source/manage/feature-labels.rst
@@ -21,8 +21,4 @@ Feature has undergone thorough validation and testing and has production-level q
Deprecated
-----------
-Feature is officially marked for removal from the product. It is no longer supported or actively maintained by the development team. If the feature is still in use in your deployed version, we recommend users discontinue its use and migrate to alternative functionalities.
-
-
-
-
+Feature is officially marked for removal from the product. It is no longer supported or actively maintained by the development team. If the feature is still in use in your deployed version, we recommend users discontinue its use and migrate to alternative functionalities.
\ No newline at end of file
diff --git a/source/manage/request-server-health-check.rst b/source/manage/request-server-health-check.rst
index b25f2b9fda6..70771ef0d86 100644
--- a/source/manage/request-server-health-check.rst
+++ b/source/manage/request-server-health-check.rst
@@ -27,7 +27,7 @@ Get started
Getting started with a Mattermost Health Check is simple and involves 3 steps:
-1. :doc:`Generate a Support Packet `: The Mattermost Support Packet contains critical information about your Mattermost environment, including logs, configurations, and usage data.
+1. :doc:`Generate a Support Packet `: The Mattermost Support Packet contains critical information about your Mattermost environment, including logs, configurations, and usage data.
2. Submit Your Support Packet: Once you’ve generated the Support Packet, submit it through our Support System as a `standard support request `_. Please include “Health Check Provided” in the subject line.
diff --git a/source/onboard/bulk-loading-data.rst b/source/onboard/bulk-loading-data.rst
index 92be8650172..97a990cf680 100644
--- a/source/onboard/bulk-loading-data.rst
+++ b/source/onboard/bulk-loading-data.rst
@@ -1615,5 +1615,3 @@ Running bulk loading 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.
-
-If you are not using the Bleve search indexing, feel free to post in our :doc:`Troubleshooting forum ` for help.
diff --git a/source/onboard/certificate-based-authentication.rst b/source/onboard/certificate-based-authentication.rst
index 4f887b81081..bad0f3b130b 100644
--- a/source/onboard/certificate-based-authentication.rst
+++ b/source/onboard/certificate-based-authentication.rst
@@ -8,7 +8,7 @@ Certificate-based authentication (CBA) is available as an experimental feature t
Follow these steps to configure user CBA for your browser and Mattermost Desktop Apps. Support for the Mattermost iOS and Android Apps is planned. It is expected that you can manage certificate distribution for each personal device (BYOD) and their life cycle management with a service like `OpenSSL `__.
-Before you begin, follow the :doc:`official guides to install Mattermost ` on your system, including NGINX configuration as a proxy with SSL and HTTP/2, and a valid SSL certificate such as Let's Encrypt.
+Before you begin, follow the :doc:`official guides to install Mattermost ` on your system, including NGINX configuration as a proxy with SSL and HTTP/2, and a valid SSL certificate such as Let's Encrypt.
Set up mutual TLS authentication for the Web App
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/source/onboard/ssl-client-certificate.rst b/source/onboard/ssl-client-certificate.rst
index 6e954f326de..87b30599d20 100644
--- a/source/onboard/ssl-client-certificate.rst
+++ b/source/onboard/ssl-client-certificate.rst
@@ -6,7 +6,7 @@ SSL client certificate setup
Follow these steps to configure SSL client certificates for your browser and the Mattermost desktop apps on Windows, macOS, and Linux. SSL client certificates are not yet supported on the Mattermost mobile apps.
-Before you begin, follow the :doc:`official guides to install Mattermost ` on your system, including NGINX configuration as a proxy with SSL and HTTP/2, and a valid SSL certificate such as Let's Encrypt.
+Before you begin, follow the :doc:`official guides to install Mattermost ` on your system, including NGINX configuration as a proxy with SSL and HTTP/2, and a valid SSL certificate such as Let's Encrypt.
For the purposes of this guide, the Mattermost server domain name is ``example.mattermost.com``, and the user account is ``mmuser`` with email ``mmuser@mattermost.com`` and password ``mmuser-password``.
@@ -133,8 +133,3 @@ You should see the Mattermost login page. If you see:
2. Go to **File > Import Items** and select the ``mmuser-mattermost.p12`` file.
10. Go to ``https://example.mattermost.com``. You should see a popup for the client certificate request.
-
-Troubleshooting
-~~~~~~~~~~~~~~~~
-
-:doc:`Follow this process ` to resolve configuration issues and to ask for help.
diff --git a/source/overview/index.rst b/source/overview/index.rst
index 535dcc7f11f..a1891197a47 100644
--- a/source/overview/index.rst
+++ b/source/overview/index.rst
@@ -5,7 +5,7 @@ About Mattermost
Mattermost’s purpose is to accelerate the world’s mission critical work by developing and delivering secure, open core collaboration software providing unrivaled focus, adaptability and resilience to our customers. You’ll find an overview of our products, features, security, integrations, licensing and subscriptions, authentication, and compliance support below.
.. toctree::
- :maxdepth: 2
+ :maxdepth: 1
:hidden:
/about/product.rst
diff --git a/source/preferences/customize-desktop-app-experience.rst b/source/preferences/customize-desktop-app-experience.rst
index 2c5dbae68b0..0ca80f435d0 100644
--- a/source/preferences/customize-desktop-app-experience.rst
+++ b/source/preferences/customize-desktop-app-experience.rst
@@ -8,7 +8,7 @@ Additional customization options are available to you when using the Mattermost
.. tab:: Linux
- When you :ref:`install the Mattermost desktop app `, you can access additional Desktop App customization settings from the **More** |more-icon-vertical| icon located in the top left corner of the desktop app by selecting **File > Settings...**
+ When you :doc:`install the Mattermost desktop app `, you can access additional Desktop App customization settings from the **More** |more-icon-vertical| icon located in the top left corner of the desktop app by selecting **File > Settings...**
.. image:: ../images/desktop-app-settings.jpg
:alt: Access Desktop App customization settings by selecting More in the top left corner, then selecting File > Settings.
@@ -56,7 +56,7 @@ Additional customization options are available to you when using the Mattermost
.. tab:: Mac
- When you :ref:`install the Mattermost desktop app `, you can access additional Desktop App customization settings by selecting **Mattermost > Preferences** from the menu bar.
+ When you :doc:`install the Mattermost desktop app `, you can access additional Desktop App customization settings by selecting **Mattermost > Preferences** from the menu bar.
.. image:: ../images/mac-desktop-app-settings.png
:alt: Access Desktop App customization settings by selecting Mattermost from the menu bar, then selecting Preferences.
@@ -92,7 +92,7 @@ Additional customization options are available to you when using the Mattermost
.. tab:: Windows
- When you :ref:`install the Mattermost desktop app `, you can access additional Desktop App customization settings from the **More** |more-icon-vertical| icon located in the top left corner of the desktop app by selecting **File > Settings...**
+ When you :doc:`install the Mattermost desktop app `, you can access additional Desktop App customization settings from the **More** |more-icon-vertical| icon located in the top left corner of the desktop app by selecting **File > Settings...**
.. image:: ../images/desktop-app-settings.jpg
:alt: Access Desktop App customization settings by selecting More in the top left corner, then selecting File > Settings.
diff --git a/source/scale/high-availability-cluster-based-deployment.rst b/source/scale/high-availability-cluster-based-deployment.rst
index 4610868b40b..295a8e6aa56 100644
--- a/source/scale/high-availability-cluster-based-deployment.rst
+++ b/source/scale/high-availability-cluster-based-deployment.rst
@@ -8,22 +8,24 @@ A high availability cluster-based deployment enables a Mattermost system to main
High availability in Mattermost consists of running redundant Mattermost application servers, redundant database servers, and redundant load balancers. The failure of any one of these components does not interrupt operation of the system.
-Requirements for continuous operation
--------------------------------------
+Mattermost Enterprise supports:
-To enable continuous operation at all times, including during server updates and server upgrades, you must make sure that the redundant components are properly sized and that you follow the correct sequence for updating each of the system's components.
+1. Clustered Mattermost servers, which minimize latency by:
-Redundancy at anticipated scale
- 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.
+- Storing static assets over a global CDN.
+- Deploying multiple Mattermost servers to host API communication closer to the location of end users.
-Update sequence for continuous operation
- You can apply most configuration changes and dot release security updates without interrupting service, provided that you update the system components in the correct sequence. See the `upgrade guide`_ for instructions on how to do this.
+They can also be used to handle scale and failure handoffs in disaster recovery scenarios.
- **Exception:** Changes to configuration settings that require a server restart, and server version upgrades that involve a change to the database schema, require a short period of downtime. Downtime for a server restart is around five seconds. For a database schema update, downtime can be up to 30 seconds.
+2. Database read replicas, where replicas can be:
-.. important::
+- Configured as a redundant backup to the active database server.
+- Used to scale up the number of concurrent users.
+- Deployed closer to the location of end users, reducing latency.
- Mattermost does not support high availability deployments spanning multiple datacenters. All nodes in a high availability cluster must reside within the same datacenter to ensure proper functionality and performance.
+Moreover, search replicas are also supported to handle search queries.
+
+.. image:: ../images/architecture_high_availability.png
Deployment guide
----------------
@@ -54,7 +56,7 @@ Remove a server from the cluster
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Back up your Mattermost database and the file storage location. See the :doc:`backup ` documentation for details.
-2. Modify your NGINX setup to remove the server. For information about this, see :ref:`proxy server configuration ` documentation for details.
+2. Modify your NGINX setup to remove the server. For information about this, see :ref:`proxy server configuration ` documentation for details.
3. Open **System Console > Environment > High Availability** to verify that all the machines remaining in the cluster are communicating as expected with green status indicators. If not, investigate the log files for any extra information.
Configuration and compatibility
@@ -530,6 +532,23 @@ All cluster traffic uses the gossip protocol. :ref:`Gossip clustering can no lon
When upgrading a high availability cluster-based deployment, you can't upgrade other nodes in the cluster when one node isn't using the gossip protocol. You must use gossip to complete this type of upgrade. Alternatively you can shut down all nodes and bring them all up individually following an upgrade.
+Requirements for continuous operation
+-------------------------------------
+
+To enable continuous operation at all times, including during server updates and server upgrades, you must make sure that the redundant components are properly sized and that you follow the correct sequence for updating each of the system's components.
+
+Redundancy at anticipated scale
+ 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.
+
+Update sequence for continuous operation
+ You can apply most configuration changes and dot release security updates without interrupting service, provided that you update the system components in the correct sequence. See the `upgrade guide`_ for instructions on how to do this.
+
+ **Exception:** Changes to configuration settings that require a server restart, and server version upgrades that involve a change to the database schema, require a short period of downtime. Downtime for a server restart is around five seconds. For a database schema update, downtime can be up to 30 seconds.
+
+.. important::
+
+ Mattermost does not support high availability deployments spanning multiple datacenters. All nodes in a high availability cluster must reside within the same datacenter to ensure proper functionality and performance.
+
Frequently asked questions (FAQ)
---------------------------------
@@ -562,7 +581,7 @@ You may be asked to provide this data to Mattermost for analysis and troubleshoo
.. note::
- - Ensure that server log files are being created. You can find more on working with Mattermost logs :ref:`here `.
+ - Ensure that server log files are being created. You can find more on working with Mattermost logs :ref:`here `.
- When investigating and replicating issues, we recommend opening **System Console > Environment > Logging** and setting **File Log Level** to **DEBUG** for more complete logs. Make sure to revert to **INFO** after troubleshooting to save disk space.
- Each server has its own server log file, so make sure to provide server logs for all servers in your High Availability cluster-based deployment.
diff --git a/source/scale/scale-to-200-users.rst b/source/scale/scale-to-200-users.rst
index adaac48a889..635e0f6452d 100644
--- a/source/scale/scale-to-200-users.rst
+++ b/source/scale/scale-to-200-users.rst
@@ -53,4 +53,4 @@ We strongly recommend that you review storage utilization at least quarterly to
Additional considerations
-------------------------
-Smaller deployments, or deployments using the :doc:`Mattermost Omnibus installer `, will need an increase in resources due to the fact the database is hosted on the same server as the Mattermost application.
\ No newline at end of file
+Smaller deployments, or deployments using the :doc:`Mattermost Omnibus installer `, will need an increase in resources due to the fact the database is hosted on the same server as the Mattermost application.
\ No newline at end of file
diff --git a/source/scale/scaling-for-enterprise.rst b/source/scale/scaling-for-enterprise.rst
index 4702ccb01db..d233d588e94 100644
--- a/source/scale/scaling-for-enterprise.rst
+++ b/source/scale/scaling-for-enterprise.rst
@@ -12,6 +12,21 @@ Server requirements vary based on usage and we highly recommend that you run a p
Available reference architectures
---------------------------------
+.. toctree::
+ :maxdepth: 1
+ :hidden:
+ :titlesonly:
+
+ Scale up to 200 users
+ Scale up to 2000 users
+ Scale up to 15000 users
+ Scale up to 30000 users
+ Scale up to 50000 users
+ Scale up to 80000 users
+ Scale up to 90000 users
+ Scale up to 100000 users
+ Scale up to 200000 users
+
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.
* :doc:`Scale up to 200 users ` - Learn how to scale Mattermost to up to 200 users.
diff --git a/source/getting-started/admin-onboarding-tasks.rst b/source/upgrade/admin-onboarding-tasks.rst
similarity index 97%
rename from source/getting-started/admin-onboarding-tasks.rst
rename to source/upgrade/admin-onboarding-tasks.rst
index 20ce7f36a64..b8c0beb8e81 100644
--- a/source/getting-started/admin-onboarding-tasks.rst
+++ b/source/upgrade/admin-onboarding-tasks.rst
@@ -31,7 +31,7 @@ These settings can also be set in the ``config.json`` file. Please see our :doc
- Users can be pre-provisioned with migration and bulk loading data processes based on prior collaboration systems. Please see our :ref:`migration guide ` and :doc:`bulk loading documentation ` for additional details.
- :doc:`AD/LDAP authentication ` and :doc:`SAML authentication ` 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 :doc:`Enterprise roll out checklist `.
+If your organization requires more structure and project management artifacts for the implementation of Mattermost, please see our :doc:`Enterprise roll out checklist `.
Important administration notes
------------------------------
@@ -115,7 +115,7 @@ Enable full content push notifications, including the sender’s name, the chann
.. note::
- - Mattermost subscription plans allow you to :ref:`enable HPNS ` that includes production-level uptime SLAs.
+ - Mattermost subscription plans allow you to enable HPNS that includes production-level uptime SLAs.
- Mattermost Enterprise customers can :ref:`enable ID-Only push notifications ` so push notification content is not passed through Apple Push Notification Service (APNS) or Google Firebase Cloud Messaging (FCM) before reaching the device. The ID-only push notification setting `offers a high level of privacy `__ while allowing team members to benefit from mobile push notifications.
diff --git a/source/install/enterprise-install-upgrade.rst b/source/upgrade/enterprise-install-upgrade.rst
similarity index 98%
rename from source/install/enterprise-install-upgrade.rst
rename to source/upgrade/enterprise-install-upgrade.rst
index d959a250c23..c8ae9d6b389 100644
--- a/source/install/enterprise-install-upgrade.rst
+++ b/source/upgrade/enterprise-install-upgrade.rst
@@ -1,5 +1,3 @@
-.. _ee-install:
-
Enterprise install and upgrade
===============================
@@ -13,7 +11,7 @@ Once you've downloaded and installed Mattermost, start an Enterprise trial via *
Installing Enterprise Edition
-----------------------------
-See the :doc:`Deploy Mattermost ` page to install Mattermost Enterprise Edition.
+See the :doc:`Deploy Mattermost ` page to install Mattermost Enterprise Edition.
Upgrading to Mattermost Enterprise Edition
--------------------------------------------
diff --git a/source/getting-started/enterprise-roll-out-checklist.rst b/source/upgrade/enterprise-roll-out-checklist.rst
similarity index 95%
rename from source/getting-started/enterprise-roll-out-checklist.rst
rename to source/upgrade/enterprise-roll-out-checklist.rst
index ada0085623b..28f46c0e5e9 100644
--- a/source/getting-started/enterprise-roll-out-checklist.rst
+++ b/source/upgrade/enterprise-roll-out-checklist.rst
@@ -57,8 +57,6 @@ Much of the preparation work is focused on ensuring the environment is deployed
- Resource: https://mattermost.com/blog/27-things-enterprises-can-learn-startups-increase-productivity/
- Define success criteria, goals and metrics to measure success
-
- - Resource: https://docs.mattermost.com/getting-started/implementation-plan.html
- Create a Project Charter to document goals, tasks, deliverables, and decisions
@@ -116,8 +114,8 @@ 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/getting-started/architecture-overview.html
- - Resource: https://docs.mattermost.com/deploy/deployment-overview.html
+ - Resource: https://docs.mattermost.com/deploy/application-architecture.html
+ - Resource: https://docs.mattermost.com/deploy/deployment-guide.html
- Resource: https://docs.mattermost.com/scale/scaling-for-enterprise.html
- Resource: https://docs.mattermost.com/scale/high-availability-cluster-based-deployment.html
@@ -133,13 +131,13 @@ Much of the preparation work is focused on ensuring the environment is deployed
- Install the number of nodes based on your high availability requirements outlined in your production environment design
- Recommendation: Use Kubernetes and the Mattermost Operator, with external supported external database and file storage solutions. This will also provide blue/green deployment, rolling upgrades, and canary builds
- - Resource: https://docs.mattermost.com/install/install-kubernetes.html
+ - Resource: https://docs.mattermost.com/deploy/server/install-kubernetes.html
- Install and configure database
- 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/getting-started/architecture-overview.html#database-with-vips
+ - Resource: https://docs.mattermost.com/deploy/server/server-architecture.html#database-with-virtual-ips
- (Optional) Set up configuration management via the database instead of a config file for high available environments
@@ -147,7 +145,7 @@ Much of the preparation work is focused on ensuring the environment is deployed
- Install and configure File Storage
- - Resource: https://docs.mattermost.com/deploy/deployment-overview.html#file-store
+ - Resource: https://docs.mattermost.com/deploy/server/preparations.html#file-storage-preparation
- Install and configure proxy or load balancers
@@ -286,14 +284,14 @@ Now that you have an environment in place, we recommend working through the foll
- Resource: https://docs.mattermost.com/deploy/desktop-app.html
- (Optional) Use the MSI installer to install on Windows machines
- - Resource: https://docs.mattermost.com/install/desktop-msi-installer-and-group-policy-install.html
+ - Resource: https://docs.mattermost.com/deploy/desktop/desktop-msi-installer-and-group-policy-install.html
- Roll out mobile app
- Resource: https://docs.mattermost.com/deploy/mobile-overview.html
- (Optional) Use an EMM provider
- - Resource: https://docs.mattermost.com/deploy/deploy-mobile-apps-using-emm-provider.html
+ - Resource: https://docs.mattermost.com/deploy/mobile/deploy-mobile-apps-using-emm-provider.html
5. Roll out to groups of users
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/source/upgrade/important-upgrade-notes.rst b/source/upgrade/important-upgrade-notes.rst
index 51dca93d66f..0ca7b433920 100644
--- a/source/upgrade/important-upgrade-notes.rst
+++ b/source/upgrade/important-upgrade-notes.rst
@@ -2,15 +2,15 @@ Important Upgrade Notes
=======================
.. important::
-
+
.. include:: ../about/common-esr-support-rst.rst
-
+
.. note::
- Upgrading the Microsoft Teams Calling plugin to v2.0.0 requires users to reconnect their accounts.
- Mattermost plugins built with Go versions 1.22.0 and 1.22.1 do not work. Plugin developers should use Go 1.22.2 or newer instead.
- - Keybase has stopped serving our Ubuntu repository signing key. If you were using it, update your installation scripts to retrieve the key as mentioned in our docs: https://docs.mattermost.com/install/install-ubuntu.html.
+ - Keybase has stopped serving our Ubuntu repository signing key. If you were using it, update your installation scripts to retrieve the key as mentioned in our docs: https://docs.mattermost.com/deploy/server/deploy-linux.
- MySQL 8.0.22 contains an `issue with JSON column types `__ changing string values to integers which is preventing Mattermost from working properly. Users are advised to avoid this database version.
- When upgrading to 7.x from a 5.x release please make sure to upgrade to 5.37.10 first for the upgrade to complete successfully.
@@ -19,7 +19,8 @@ Important Upgrade Notes
| from a version earlier than... | |
+====================================================+==================================================================================================================================================================+
| v10.6 | Support for PostgreSQL v11 and v12 have been removed. The new minimum PostgreSQL version is v13+. |
-| | See the :ref:`minimum supported PostgreSQL version policy ` documentation for details. |
+| | See the |
+| | :ref:`minimum supported PostgreSQL version policy ` documentation for details. |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| | Migration times: On a system with 12M posts, and 1M fileinfo entries, the migration takes 15s. This migration is non-locking. Note that there is no migration |
| | for MySQL deployments because this optimization is only applicable for PostgreSQL. |
@@ -247,7 +248,7 @@ Important Upgrade Notes
| v9.5 | We have stopped supporting MySQL v5.7 since it's at the end of life. We urge customers to upgrade their MySQL instance at their earliest convenience. |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| | Added safety limit error message in compiled Team Edition and Enterprise Edition deployments when enterprise scale and access control automation features are |
-| | unavailable and count of users who are registered and not deactivated exceeds 10,000. :doc:`ERROR_SAFETY_LIMITS_EXCEEDED `. |
+| | unavailable and count of users who are registered and not deactivated exceeds 10,000. :doc:`ERROR_SAFETY_LIMITS_EXCEEDED `. |
+----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| v9.2 | Fixed data retention policies to run jobs when any custom retention policy is enabled even when the global retention policy is set to "keep-forever". Before |
| | this fix, the enabled custom data retention policies wouldn't run as long as the global data retention policy was set to "keep-forever" or was disabled. After |
@@ -828,7 +829,7 @@ Important Upgrade Notes
| | conditions. Customers are requested to check for these values in their config and set them to nil if necessary. See more details |
| | :ref:`here `. |
+----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| v6.2 | Channel results in the channel autocomplete will include private channels. Customers using :doc:`Bleve ` or |
+| v6.2 | Channel results in the channel autocomplete will include private channels. Customers using :doc:`Bleve ` or |
| | :doc:`Elasticsearch ` for autocomplete will have to reindex their data to get the new results. Since this can |
| | take a long time, we suggest disabling autocomplete and running indexing in the background. When this is complete, re-enable autocomplete. |
| | |
@@ -1017,7 +1018,7 @@ Important Upgrade Notes
| v5.29.0 | A new configuration setting ``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 :ref:`documentation on hardware requirements |
-| | ` to ensure your servers are appropriately scaled for the size of your user base. |
+| | ` to ensure your servers are appropriately scaled for the size of your user base. |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| | Disabled the xmlsec1-based SAML library in favor of the re-enabled and improved SAML library. |
+----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -1195,7 +1196,7 @@ Important Upgrade Notes
| | :ref:`See documentation ` for additional information. |
+----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| v5.8.0 | The local image proxy has been added, and images displayed within the client are now affected by the ``AllowUntrustedInternalConnections`` setting. |
-| | :ref:`See documentation ` for more details if you have trouble loading images. |
+| | :ref:`See documentation ` for more details if you have trouble loading images. |
+----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| v5.6.0 | Built-in WebRTC is removed. See `here for more details `__. |
diff --git a/source/upgrade/prepare-to-upgrade-mattermost.rst b/source/upgrade/prepare-to-upgrade-mattermost.rst
index 2997445051b..f393f83fefb 100644
--- a/source/upgrade/prepare-to-upgrade-mattermost.rst
+++ b/source/upgrade/prepare-to-upgrade-mattermost.rst
@@ -4,7 +4,7 @@ Prepare to upgrade Mattermost
.. include:: ../_static/badges/allplans-selfhosted.rst
:start-after: :nosearch:
-In most cases, you can :doc:`upgrade Mattermost Server ` in a few minutes. However, the upgrade can take longer depending on several factors, including the size and complexity of your installation, and the version that you're upgrading from. When planning an upgrade, it's worth confirming that your current database and operating system version are still supported. Details can be found on our :ref:`software and hardware requirements ` page.
+In most cases, you can :doc:`upgrade Mattermost Server ` in a few minutes. However, the upgrade can take longer depending on several factors, including the size and complexity of your installation, and the version that you're upgrading from. When planning an upgrade, it's worth confirming that your current database and operating system version are still supported. Details can be found on our :ref:`software and hardware requirements ` page.
Upgrade Best Practices
----------------------
diff --git a/source/upgrade/upgrading-mattermost-server.rst b/source/upgrade/upgrading-mattermost-server.rst
index e7147969e4d..8857af046a1 100644
--- a/source/upgrade/upgrading-mattermost-server.rst
+++ b/source/upgrade/upgrading-mattermost-server.rst
@@ -16,7 +16,7 @@ Before you begin
**Read these instructions carefully from start to finish.**
-Make sure that you understand how to :doc:`prepare for your upgrade `, familiarize yourself with all :doc:`software and hardware requirements `, read the :doc:`important upgrade notes ` and that you understand each step of the upgrade process documented below before starting a Mattermost upgrade. If you have questions or concerns, you can ask on the Mattermost forum at https://forum.mattermost.com/.
+Make sure that you understand how to :doc:`prepare for your upgrade `, familiarize yourself with all :doc:`software and hardware requirements `, read the :doc:`important upgrade notes ` and that you understand each step of the upgrade process documented below before starting a Mattermost upgrade. If you have questions or concerns, you can ask on the Mattermost forum at https://forum.mattermost.com/.
**Gather the following information before starting the upgrade:**
@@ -131,7 +131,7 @@ Upgrade Mattermost Server
sudo find mattermost/ mattermost/client/ -mindepth 1 -maxdepth 1 \! \( -type d \( -path mattermost/client -o -path mattermost/client/plugins -o -path mattermost/config -o -path mattermost/logs -o -path mattermost/plugins -o -path mattermost/data -o -path mattermost/yourFolderHere \) -prune \) | sort
- d. If you're using :doc:`Bleve search `, and the directory exists *within* the ``mattermost`` directory, the index directory path won't be preserved using the command above.
+ d. If you're using :doc:`Bleve search `, and the directory exists *within* the ``mattermost`` directory, the index directory path won't be preserved using the command above.
- You can either move the bleve index directory out from the ``mattermost`` directory before upgrading or, following an upgrade, you can copy the contents of the bleve index directory from the ``backup`` directory.
- You can then store that directory or re-index as preferred.
diff --git a/source/getting-started/welcome-email-to-end-users.rst b/source/upgrade/welcome-email-to-end-users.rst
similarity index 100%
rename from source/getting-started/welcome-email-to-end-users.rst
rename to source/upgrade/welcome-email-to-end-users.rst