Mattermost: Automate with the CLI
Start Mattermost, retrieve its credentials, and modify its configuration programmatically using the Stackhero CLI
Welcome to the Stackhero documentation
Stackhero offers a production-ready Mattermost cloud environment designed for seamless collaboration and enhanced data protection. Key benefits include:
- Unlimited users and channels to support your team's growth without restrictions.
- A dedicated SMTP email server with no extra limits, included by default.
- Full control over your domain name, automatically secured with HTTPS (for example, https://chat.your-company.com).
- Updates made simple, managed with a single click.
- High performance and advanced security on a private, dedicated infrastructure: your data remains isolated and confidential.
- Hosting available in both 🇪🇺 Europe and 🇺🇸 USA regions.
You can get started in just a few minutes. Stackhero takes care of installation, security, and operational management for your Mattermost cloud hosting, providing you with a secure and scalable collaboration platform with minimal effort.
This guide explains how to create a Mattermost service, access its credentials, and update its configuration entirely from the command line, without any clicks in the dashboard. This approach is ideal for scripts, CI pipelines, and AI agents.
We will use the Stackhero CLI for all operations. If you have not already installed it, you can do so with:
curl -fsSL https://www.stackhero.io/install.sh | sh
1. Authenticate
The simplest way to get started is to log in through your browser. When you run the login command, the CLI opens a web page where you can approve access. No passwords or 2FA codes are entered directly into the CLI.
stackhero login
After logging in, your credentials are stored locally and will be used automatically by future CLI commands.
For fully automated environments such as scripts or CI pipelines, you may prefer a non-interactive access token. You can create one from your dashboard (Account > Access tokens), then export it as an environment variable. The CLI, as well as any script you run, will automatically detect it.
export STACKHERO_TOKEN="usr-xxxxxx:your-token"
2. Find the Mattermost service store
Next, you will want to list the Mattermost service stores available to your account. The CLI accepts the store name (mattermost) directly, so there is no need to look up or copy any IDs.
# List Mattermost service stores (add --organization if you manage more than one)
stackhero services-store-list --name="mattermost"
You can use the store name mattermost in subsequent commands, or select a specific svs-xxxxxx ID from the list if you prefer.
3. Choose an instance size and a region
# List instance sizes for your service store (use the NAME column for --instance)
stackhero instances-store-list --service-store=mattermost
# List available regions (names like "europe")
stackhero regions-list
4. Create the service
Below is a sample script that creates a stack, adds your Mattermost service to it, waits for it to start, retrieves its configuration (including generated credentials), and then applies a new configuration.
#!/bin/bash
set -e
export STACKHERO_TOKEN="usr-xxxxxx:your-token"
serviceStore="mattermost" # The Mattermost service store name (see step 2)
instance="..." # An instance size from step 3
region="europe" # A region name from step 3
# Create a stack for your service (uses your default organization; add --organization if needed)
stackId=$(stackhero --format=script stack-create \
--name="My Mattermost stack")
echo "Stack created: ${stackId}"
# Add Mattermost to the stack (names are resolved automatically)
serviceId=$(stackhero --format=script service-add \
--stack="My Mattermost stack" \
--service-store="${serviceStore}" \
--instance="${instance}" \
--region="${region}")
echo "Service added: mattermost"
# Wait for the service to be fully operational (this may take a few minutes)
stackhero service-wait-for --service="mattermost"
# Retrieve the service configuration, including generated credentials
stackhero service-configuration-get --service="mattermost" --format=json
5. Retrieve credentials
The service-configuration-get command returns the complete configuration for your service, including auto-generated passwords and connection details. The output is in JSON format, making it easy to use in scripts and automation.
stackhero service-configuration-get --service=svc-xxxxxx --format=json
6. Change the configuration
You can review an example configuration schema and then apply your own settings. When you update the configuration, the service may restart to apply the changes.
# View the configuration schema and an example for your service
stackhero service-configuration-example --service=svc-xxxxxx
# Apply a custom configuration (the service restarts if needed)
stackhero service-configuration-set \
--service=svc-xxxxxx \
--configuration='{ "...": "..." }'
# Wait for the new configuration to be applied
stackhero service-wait-for --service=svc-xxxxxx
That's it. You have now seen the full lifecycle: start a service, retrieve its credentials, and reconfigure it, all in a scriptable, automated way. To learn more, refer to the full CLI documentation, which also covers the non-interactive STACKHERO_TOKEN authentication demonstrated here.