snapshot of https://github.com/mattermost/mattermost.git (master, 2026-09-16; blobs > 131072B omitted)
Some checks failed
Server CI / Postgres (shard 0) (push) Has been skipped
Server CI / Postgres (shard 3) (push) Has been skipped
BuildEnv Docker Image / build-image (push) Failing after 4s
BuildEnv Docker Image / build-image-fips (push) Failing after 4s
Migration Review & Release Notes / Generate migration review & release notes (push) Failing after 3s
Server CI / Build Environment (push) Failing after 3s
Server CI / Postgres (shard 1) (push) Has been skipped
Tools CI / check-style (mattermost-govet) (push) Failing after 4s
Server CI / Postgres (shard 2) (push) Has been skipped
Tools CI / check-style (mmgotool) (push) Failing after 3s
Server CI / Elasticsearch v8 Compatibility (push) Has been skipped
Server CI / OpenSearch v2 Compatibility (push) Has been skipped
Server CI / Postgres FIPS (shard 0) (push) Has been skipped
Tools CI / Test (mattermost-govet) (push) Failing after 3s
Server CI / Postgres FIPS (shard 1) (push) Has been skipped
Server CI / Postgres FIPS (shard 2) (push) Has been skipped
Tools CI / Test (mmgotool) (push) Failing after 3s
Server CI / Postgres FIPS (shard 3) (push) Has been skipped
Server CI / Run mmctl tests (push) Has been skipped
Server CI / Run mmctl tests (FIPS) (push) Has been skipped
Server CI / Merge Postgres Test Results (push) Has been skipped
Server CI / Merge Postgres FIPS Test Results (push) Has been skipped
Server CI / Check backport migrations (push) Has been skipped
Server CI / Check generated files (push) Has been skipped
Server CI / check-style (push) Has been skipped
Server CI / Vet API (push) Has been skipped
Server CI / Build mattermost server app (push) Has been skipped
Server CI / Server CI Complete (push) Failing after 2s
Server CI / Server CI Artifacts (push) Has been skipped
Server CI / Sentry Upload (push) Has been skipped
Server CI / Server CI Report (push) Failing after 5m1s
Server CI Nightly Race / Race Detector (push) Has been skipped
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Webapp CI Cache Warm / Warm Webapp node_modules Cache (push) Has been cancelled
E2E CI Cache Warm / Warm E2E npm Registry Cache (push) Has been cancelled
API / build (push) Has been cancelled
Web App CI / check-types (push) Has been cancelled
Web App CI / check-lint (push) Has been cancelled
Web App CI / check-i18n (push) Has been cancelled
Web App CI / check-external-links (push) Has been cancelled
Web App CI / test (platform) (push) Has been cancelled
Web App CI / test (mattermost-redux) (push) Has been cancelled
Web App CI / test (channels shard 1/4) (push) Has been cancelled
Web App CI / test (channels shard 2/4) (push) Has been cancelled
Web App CI / test (channels shard 3/4) (push) Has been cancelled
Web App CI / test (channels shard 4/4) (push) Has been cancelled
Web App CI / upload-coverage (push) Has been cancelled
Web App CI / build (push) Has been cancelled
YAML Lint / yamllint (push) Has been cancelled
Push mirrored docker images / cd/Push mirrored docker images (push) Has been cancelled
docs-cd / Build and deploy docs (push) Has been cancelled
Docs CI / build (push) Has been cancelled
E2E Cache Warm: Cypress deps / Warm Cypress deps cache (push) Has been cancelled
Scorecards supply-chain security / Scorecard analysis (push) Has been cancelled
Server CI Weekly / Postgres FIPS (push) Has been skipped
Server CI Weekly / Run mmctl tests (FIPS) (push) Has been skipped
Server CI Weekly / Postgres with binary parameters (push) Has been skipped
Server CI Weekly / Build Environment (push) Failing after 1s
Server CI Nightly Race / Build Environment (push) Failing after 1s
Server CI Cache Warm / Warm Go Module and Build Cache (push) Failing after 2s
Some checks failed
Server CI / Postgres (shard 0) (push) Has been skipped
Server CI / Postgres (shard 3) (push) Has been skipped
BuildEnv Docker Image / build-image (push) Failing after 4s
BuildEnv Docker Image / build-image-fips (push) Failing after 4s
Migration Review & Release Notes / Generate migration review & release notes (push) Failing after 3s
Server CI / Build Environment (push) Failing after 3s
Server CI / Postgres (shard 1) (push) Has been skipped
Tools CI / check-style (mattermost-govet) (push) Failing after 4s
Server CI / Postgres (shard 2) (push) Has been skipped
Tools CI / check-style (mmgotool) (push) Failing after 3s
Server CI / Elasticsearch v8 Compatibility (push) Has been skipped
Server CI / OpenSearch v2 Compatibility (push) Has been skipped
Server CI / Postgres FIPS (shard 0) (push) Has been skipped
Tools CI / Test (mattermost-govet) (push) Failing after 3s
Server CI / Postgres FIPS (shard 1) (push) Has been skipped
Server CI / Postgres FIPS (shard 2) (push) Has been skipped
Tools CI / Test (mmgotool) (push) Failing after 3s
Server CI / Postgres FIPS (shard 3) (push) Has been skipped
Server CI / Run mmctl tests (push) Has been skipped
Server CI / Run mmctl tests (FIPS) (push) Has been skipped
Server CI / Merge Postgres Test Results (push) Has been skipped
Server CI / Merge Postgres FIPS Test Results (push) Has been skipped
Server CI / Check backport migrations (push) Has been skipped
Server CI / Check generated files (push) Has been skipped
Server CI / check-style (push) Has been skipped
Server CI / Vet API (push) Has been skipped
Server CI / Build mattermost server app (push) Has been skipped
Server CI / Server CI Complete (push) Failing after 2s
Server CI / Server CI Artifacts (push) Has been skipped
Server CI / Sentry Upload (push) Has been skipped
Server CI / Server CI Report (push) Failing after 5m1s
Server CI Nightly Race / Race Detector (push) Has been skipped
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Webapp CI Cache Warm / Warm Webapp node_modules Cache (push) Has been cancelled
E2E CI Cache Warm / Warm E2E npm Registry Cache (push) Has been cancelled
API / build (push) Has been cancelled
Web App CI / check-types (push) Has been cancelled
Web App CI / check-lint (push) Has been cancelled
Web App CI / check-i18n (push) Has been cancelled
Web App CI / check-external-links (push) Has been cancelled
Web App CI / test (platform) (push) Has been cancelled
Web App CI / test (mattermost-redux) (push) Has been cancelled
Web App CI / test (channels shard 1/4) (push) Has been cancelled
Web App CI / test (channels shard 2/4) (push) Has been cancelled
Web App CI / test (channels shard 3/4) (push) Has been cancelled
Web App CI / test (channels shard 4/4) (push) Has been cancelled
Web App CI / upload-coverage (push) Has been cancelled
Web App CI / build (push) Has been cancelled
YAML Lint / yamllint (push) Has been cancelled
Push mirrored docker images / cd/Push mirrored docker images (push) Has been cancelled
docs-cd / Build and deploy docs (push) Has been cancelled
Docs CI / build (push) Has been cancelled
E2E Cache Warm: Cypress deps / Warm Cypress deps cache (push) Has been cancelled
Scorecards supply-chain security / Scorecard analysis (push) Has been cancelled
Server CI Weekly / Postgres FIPS (push) Has been skipped
Server CI Weekly / Run mmctl tests (FIPS) (push) Has been skipped
Server CI Weekly / Postgres with binary parameters (push) Has been skipped
Server CI Weekly / Build Environment (push) Failing after 1s
Server CI Nightly Race / Build Environment (push) Failing after 1s
Server CI Cache Warm / Warm Go Module and Build Cache (push) Failing after 2s
This commit is contained in:
30
docs/develop/integrate/customization/customization/index.md
Normal file
30
docs/develop/integrate/customization/customization/index.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "Customize Mattermost"
|
||||
sidebar_position: 50
|
||||
---
|
||||
|
||||
Mattermost allows for a variety of customization options and modifications, making it possible to create a more adequate experience depending on the needs of each deployment.
|
||||
|
||||
There are a few limitations regarding [how the re-branding of Mattermost](https://mattermost.com/trademark-standards-of-use/) must be handled, such as the fact that changes to the Enterprise Edition's source code isn't supported. However these limitations can be overcome with the utilization of [Plugins](/developers/integrate/plugins).
|
||||
|
||||
# Customizable components
|
||||
|
||||
## Server (Team Edition only)
|
||||
|
||||
The [Mattermost server](https://github.com/mattermost/mattermost/tree/master/server)'s source code, written in Golang, may be customized to deliver additional functionalities or to meet specific security requirements.
|
||||
|
||||
It's recommended that you attempt to meet such customizations by leveraging the [Plugin framework](/developers/integrate/plugins) in order to avoid creating any breaking changes, however details on how to build a custom server may be found [here](/developers/integrate/customization/customization/server-build).
|
||||
|
||||
## Server files
|
||||
|
||||
Some parts of server-side customizations don't require changes to the source code. View more details on which server files may be customized in [here](/developers/integrate/customization/customization/server-files).
|
||||
|
||||
|
||||
<Note title="Note">
|
||||
Modifications to server files can be utilized in both Team Edition and Enterprise Editions.
|
||||
</Note>
|
||||
|
||||
|
||||
## Web app
|
||||
|
||||
Mattermost's web application runs on React, and [its codebase](https://github.com/mattermost/mattermost/tree/master/webapp) has been open-sourced (regardless of which edition your server uses). You can view details on how to customize the web app in [here](/developers/integrate/customization/customization/webapp). Keep in mind, however, that some changes to the web app can also leverage the [Plugin](/developers/integrate/plugins/components/webapp) framework, which can help reduce the necessity of rebasing your custom client to each Mattermost release.
|
||||
@@ -0,0 +1,24 @@
|
||||
---
|
||||
title: "Server build (Team Edition)"
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
If plugin functionalities don't cover your use cases, you have the freedom to customize and build your own version of the `mattermost-server` project.
|
||||
|
||||
Before proceeding with the steps below, make sure you have completed the [mattermost-server setup](/developers/contribute/developer-setup) process.
|
||||
|
||||
1. Customize the project according to your requirements.
|
||||
|
||||
2. Build binary files for Mattermost server.
|
||||
|
||||
```shell
|
||||
make build
|
||||
```
|
||||
|
||||
3. Assemble essential files.
|
||||
|
||||
```shell
|
||||
make package
|
||||
```
|
||||
|
||||
4. Transfer desired `.tar.gz` file to server for deployment.
|
||||
@@ -0,0 +1,78 @@
|
||||
---
|
||||
title: "Server files"
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
In both Mattermost Team and Enterprise editions, you have the freedom to alter how content is displayed by being able to change the contents of localized files and email templates.
|
||||
|
||||
Before proceeding with the steps below, make sure you have completed the [mattermost-server](/developers/contribute/developer-setup) and [mattermost-webapp](/developers/contribute/developer-setup) setup process.
|
||||
|
||||
## i18n files
|
||||
The `i18n` files define many of the contents seen in email notifications and responses from the server.
|
||||
|
||||
1. Edit contents of files in the `mattermost/server/i18n` directory according to your requirements.
|
||||
|
||||
2. Once you're ready, create a tarball or zip the files __within__ the `i18n` directory.
|
||||
|
||||
```shell
|
||||
cd i18n
|
||||
tar -cvf i18n.tar *
|
||||
```
|
||||
|
||||
3. Before replacing the files, stop your Mattermost instance if it's currently running.
|
||||
|
||||
```shell
|
||||
sudo service mattermost stop
|
||||
```
|
||||
|
||||
4. In your Mattermost deployment, back up and remove the files inside `i18n` that will no longer be in use.
|
||||
|
||||
```shell
|
||||
cd ~/mattermost/i18n
|
||||
tar -cvf i18n-yyyy-MM-dd.tar *
|
||||
rm -f *.json
|
||||
```
|
||||
|
||||
5. Transfer your custom `i18n.tar` file to the deployment server and extract it in the `i18n` directory.
|
||||
|
||||
```shell
|
||||
mv i18n.tar mattermost/i18n
|
||||
cd ~/mattermost/i18n
|
||||
tar -xvf i18n.tar
|
||||
```
|
||||
|
||||
6. Restart your Mattermost instance.
|
||||
|
||||
```shell
|
||||
sudo service mattermost start
|
||||
```
|
||||
|
||||
## Email templates
|
||||
Similarly to the i18n files, email templates can be edited and applied onto a running Mattermost instance in the following manner:
|
||||
|
||||
1. Edit the `html` files inside of the `templates` directory. In this example we'll assume the `post_body_full.html` file has been customized.
|
||||
|
||||
2. Stop your Mattermost instance if it's currently running.
|
||||
|
||||
```shell
|
||||
sudo service mattermost stop
|
||||
```
|
||||
|
||||
3. (optional) Rename the template file to be replaced to keep it as a backup.
|
||||
|
||||
```shell
|
||||
cd ~/mattermost/templates
|
||||
mv post_body_full.html post_body_full_yyyy_MM_dd.html
|
||||
```
|
||||
|
||||
4. Transfer your custom `post_body_full.html` file to the deployment server and place it inside `templates`.
|
||||
|
||||
```shell
|
||||
mv ./post_body_full.html ~/mattermost/templates/
|
||||
```
|
||||
|
||||
5. Restart your Mattermost instance.
|
||||
|
||||
```shell
|
||||
sudo service mattermost start
|
||||
```
|
||||
83
docs/develop/integrate/customization/customization/webapp.md
Normal file
83
docs/develop/integrate/customization/customization/webapp.md
Normal file
@@ -0,0 +1,83 @@
|
||||
---
|
||||
title: "Web app"
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
Customizations to the Mattermost Web App can be performed in cases where you need to customize branding, alter localization strings, or fulfill security requirements that are not immediately offered out-of-the-box.
|
||||
|
||||
## Customization steps
|
||||
With that in mind, customizing and deploying your Mattermost Web App can be done in a few steps:
|
||||
|
||||
1. Fork the [mattermost](https://github.com/mattermost/mattermost) repository and then clone your fork in your local environment.
|
||||
|
||||
```shell
|
||||
git clone https://github.com/<yourgithubusername>/mattermost
|
||||
```
|
||||
|
||||
2. Create a separate branch for your customized version, as it's not recommended to perform them in the `master` branch (more details about that in the next section regarding rebasing).
|
||||
|
||||
```shell
|
||||
git checkout -b custom_branch
|
||||
```
|
||||
|
||||
3. Perform customization tasks by replacing image assets, changing strings, altering the UI, and whatever else may be necessary. Be mindful not to violate any of the [guidelines on trademark use](https://mattermost.com/trademark-standards-of-use/) during this process.
|
||||
|
||||
4. Once customization has been completed, build the files that will be used in your deployment and generate `mattermost-webapp.tar.gz` containing them.
|
||||
|
||||
```shell
|
||||
make dist
|
||||
```
|
||||
|
||||
5. In a Mattermost deployment, rename `client` (assuming Mattermost was deployed in the `$HOME` directory).
|
||||
|
||||
```shell
|
||||
cd ~/mattermost
|
||||
mv client client-original
|
||||
```
|
||||
|
||||
6. Transfer compressed `dist` files inside Mattermost's `client` directory, and decompress it.
|
||||
|
||||
```shell
|
||||
tar -xvf mattermost-webapp.tar.gz
|
||||
```
|
||||
|
||||
7. Copy the `products` subdirectory from the original deployment into the customized one.
|
||||
|
||||
```shell
|
||||
cp -R client-original/products client/products
|
||||
```
|
||||
|
||||
## Rebasing to latest version
|
||||
Challenges arise when creating a separate custom branch from an active open-source project like `mattermost`. As the project gets new commits and pull requests on a daily basis, your custom webapp can quickly become outdated.
|
||||
|
||||
To deal with that, you'll need to leverage Git's [interactive rebasing functionality](https://git-scm.com/docs/git-rebase#_interactive_mode) in the following way:
|
||||
|
||||
1. Add an upstream with the original `mattermost` repository.
|
||||
|
||||
```shell
|
||||
git remote add upstream https://github.com/mattermost/mattermost.git
|
||||
```
|
||||
|
||||
2. Update `master` branch to latest upstream commit.
|
||||
|
||||
```shell
|
||||
git checkout master
|
||||
git pull upstream master
|
||||
```
|
||||
|
||||
3. Perform interactive rebase.
|
||||
|
||||
```shell
|
||||
git checkout custom_branch
|
||||
git rebase -i master
|
||||
```
|
||||
|
||||
```text
|
||||
Use `git rebase --continue` after resolving any conflicts that arise during rebase process
|
||||
```
|
||||
|
||||
4. Push new version back to remote (Note: Rebasing requires that you override previous remote version with a `force` push. Be sure you've tested that your rebase was successful before completing this last command).
|
||||
|
||||
```shell
|
||||
git push -f origin custom_branch
|
||||
```
|
||||
61
docs/develop/integrate/customization/embedding/index.md
Normal file
61
docs/develop/integrate/customization/embedding/index.md
Normal file
@@ -0,0 +1,61 @@
|
||||
---
|
||||
title: "Embed Mattermost"
|
||||
sidebar_position: 80
|
||||
---
|
||||
|
||||
## Launch Mattermost from a button selection
|
||||
|
||||
The most common way of integrating Mattermost into another application is via a link or a button that brings up Mattermost in a new browser window or tab, with a link to a specific Mattermost channel to begin discussion.
|
||||
|
||||
Optionally, single-sign-on can be added to make the experience seamless.
|
||||
|
||||
### Mattermost launch button example in HTML
|
||||
|
||||
Save the below HTML code in a file called `mattermost-button-example.html` then open the file in a browser as an example.
|
||||
|
||||
```html
|
||||
<script>
|
||||
var myWindow = null;
|
||||
|
||||
function openMMWindow() {
|
||||
myWindow = window.open("https://community.mattermost.com/core/channels/developer", "Mattermost", "top=0,left=0,width=400,height=600,status=no,toolbar=no,location=no,menubar=no,titlebar=no");
|
||||
}
|
||||
|
||||
function closeMMWindow() {
|
||||
if (myWindow) {
|
||||
myWindow.close();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<html>
|
||||
<br/>
|
||||
<br/>
|
||||
<button onclick="openMMWindow()">Open Developer Channel</button>
|
||||
<br/>
|
||||
<br/>
|
||||
<button onclick="closeMMWindow()">Close Developer Channel</button>
|
||||
<br/>
|
||||
<br/>
|
||||
</html>
|
||||
```
|
||||
|
||||
## Embed Mattermost in web apps using an <iframe>
|
||||
|
||||
Any web application embedded into another using an [<iframe>](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe) is at risk of security exploits, since the outer application intercepts all user input into the embedded application, an exploit known as [Click-Jacking](https://en.wikipedia.org/wiki/Clickjacking). By default, Mattermost disables embedding. If you choose to embed Mattermost we highly recommend it is done only on a private network that you control.
|
||||
|
||||
See [this recipe](https://forum.mattermost.com/t/recipe-embedding-mattermost-in-web-applications-using-an-iframe-unsupported-recipe/10233) for details.
|
||||
|
||||
## Embed Mattermost in mobile apps
|
||||
|
||||
The open source mobile applications can serve as a guide or starter code to embed Mattermost in mobile applications. The Mattermost Javascript Driver is used to connect with the Mattermost server and product the interactivity for these applications.
|
||||
|
||||
The mobile applications also provide full source code for push notifications.
|
||||
|
||||
### Mobile apps offering Mattermost as a web view
|
||||
|
||||
- https://github.com/mattermost/ios
|
||||
|
||||
### Mobile apps offering Mattermost with React Native components
|
||||
|
||||
- https://github.com/mattermost/mattermost-mobile
|
||||
12
docs/develop/integrate/customization/index.md
Normal file
12
docs/develop/integrate/customization/index.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: "Customize and embed"
|
||||
sidebar_position: 50
|
||||
---
|
||||
|
||||
If the [API](https://api.mattermost.com) or [plugins](/developers/integrate/plugins) don't meet your your needs, take a look at the other methods for integrating and extending Mattermost:
|
||||
|
||||
* Webhooks - Post to channels with [incoming webhooks](/developers/integrate/webhooks/incoming), or listen for new messages with [outgoing webhooks](/developers/integrate/webhooks/outgoing).
|
||||
* Slash Commands - Enable your users to [trigger custom actions](/developers/integrate/slash-commands) from within Mattermost.
|
||||
* Embed - Learn how to use the Mattermost API to [embed Mattermost](/developers/integrate/customization/embedding) into web browsers and web applications.
|
||||
* Customize - Modify the source code for the server or web app to make basic [changes and customization](/developers/integrate/customization/customization).
|
||||
* Interactive Messages - Create messages that include [interactive functionality](https://docs.mattermost.com/developer/interactive-messages.html).
|
||||
Reference in New Issue
Block a user