To get started making Mattermost Apps, the first thing you need to do is set up your development environment via the mattermost-app-examples repository. Then you can follow language-specific guides to get started with the Apps framework, or just start tinkering on your own.
Clone a local copy of the mattermost-app-examples repository with the following command:
git clone https://github.com/mattermost/mattermost-app-examples && cd mattermost-app-examples
When you’re developing your own App, you need an actual Mattermost Server to be running. The development environment accomplishes this by using a
docker-compose.yml with a network named
mattermost-apps-dev. This Docker Compose file has just two containers: the Mattermost Server and a Postgres database.
The Mattermost image itself is preconfigured with settings for local App development but you can customize them. For example, the
MM_SERVICESETTINGS_SITEURL environment variable is set to
http://mattermost:8065 on the Mattermost container, but you could change this to be any URL, like one from ngrok or Gitpod.
Because they exist on a pre-defined network, other
docker-compose.yml configurations can connect their containers to this development environment by specifying the same
mattermost-apps-dev Docker network. Then the Mattermost Server can be accessed at
http://mattermost:8065 by any other container on the
mattermost-apps-dev network. Similarly, your own development Apps can then be accessed by Mattermost via their service name (e.g.,
http://mattermost-apps-typescript-hello-world:4000). You can learn more about Docker networks in the official documentation.
You can also access Mattermost from outside the Docker network via http://localhost:8065. Similarly, the examples provided in the mattermost-app-examples repository can be accessed at their designated ports on
localhost. This is because the Docker Compose files have been configured to expose the appropriate ports locally.
To change the Mattermost Apps plugin or the Mattermost Server versions, you can edit
To complete the Docker Compose configuration, you’ll need to create a
.docker.env file in the same directory as the
docker-compose.yml file. This file is used to store any secrets or other environment variables you wish to use with the Mattermost server. To complete configuration without storing secrets or other environment variables, create an empty
.docker.env file. The
.docker.env file is ignored in the repository’s
.gitignore file, so it won’t be committed to the repository if you make any edits.
An example of this file, .docker.env.example, can be found in the examples repository.
Next, use the following command to bring your development environment online:
docker compose up -d
Once Mattermost is online, you can access the server at http://localhost:8065 and create your superuser account.
To temporarily stop the container (and preserve your database), use the following command:
docker compose stop
To stop and clean up the database (for a fresh start), use the following command:
docker compose down
Now you’re fully equipped with an environment to develop Mattermost Apps locally!
The following quick start guides can help you start developing a Mattermost App in different languages:
|Hello World in Go
|JWT in Go
|Serverless on AWS or OpenFaaS in Go
|Hello World in TypeScript
|Hello World in Python