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 Cache Warm / Warm Go Module and Build Cache (push) Failing after 2s
Server CI Nightly Race / Build Environment (push) Failing after 1s
201 lines
6.5 KiB
Plaintext
201 lines
6.5 KiB
Plaintext
---
|
|
title: "Deploy Mattermost manually from the tarball"
|
|
sidebar_label: "Manual (tarball)"
|
|
---
|
|
|
|
<EditionAvailability tiers="free,professional,enterprise,enterprise-advanced" />
|
|
<DeploymentAvailability modes="self-hosted,air-gapped" />
|
|
|
|
Install Mattermost Server on any 64-bit Linux distribution directly from the release tarball. This is the most flexible install method and usually the choice for:
|
|
|
|
- Distributions Mattermost doesn't package directly (Arch, SUSE, Gentoo, Alpine, …)
|
|
- Air-gapped environments where tarballs are staged on an internal mirror
|
|
- Custom paths, users, or systemd unit configurations
|
|
- Environments where you control every version pin and don't want a package manager auto-upgrade
|
|
|
|
<Tip title="Use a packaged install if it fits">
|
|
|
|
If you're on **Ubuntu / Debian**, use the [APT-based install](./deploy-ubuntu) for automatic security updates. If you're on **RHEL / Rocky / Alma / Oracle**, use the [RHEL install](./deploy-rhel) — it covers SELinux, firewalld, and fapolicyd configuration too.
|
|
|
|
</Tip>
|
|
|
|
<Note title="Minimum requirements">
|
|
|
|
- **Operating system**: any 64-bit Linux distribution with `systemd` (or a comparable service manager).
|
|
- **Hardware**: 1 vCPU and 2 GB RAM (supports up to ~1,000 users).
|
|
- **Database**: [PostgreSQL 14+](/administration-guide/manage/admin/postgres-migration).
|
|
- **Network**: TCP 80/443 inbound (TLS), 8065 inbound (System Console), 10025 outbound (SMTP relay if used).
|
|
|
|
</Note>
|
|
|
|
## Step 1: Get a PostgreSQL database
|
|
|
|
Choose one of:
|
|
|
|
- **Install PostgreSQL locally** on the same host. See the [PostgreSQL installation documentation](https://www.postgresql.org/download/).
|
|
- **Use an external PostgreSQL server** and collect connection credentials before Step 2.
|
|
- **Use a managed database service** (AWS RDS, Azure Database for PostgreSQL, etc.).
|
|
|
|
## Step 2: Prepare the database
|
|
|
|
Follow the [database preparation](/deployment-guide/server/prepare-database) instructions to create the Mattermost database, user, and grants.
|
|
|
|
## Step 3: Download the Mattermost Server tarball
|
|
|
|
SSH onto the target host and download the release. Replace `amd64` with `arm64` for ARM-based hardware.
|
|
|
|
<Tabs>
|
|
<TabItem value="latest" label="Latest release" default>
|
|
|
|
```sh
|
|
wget https://releases.mattermost.com/11.10.2/mattermost-11.10.2-linux-amd64.tar.gz
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="esr" label="Current ESR">
|
|
|
|
```sh
|
|
wget https://releases.mattermost.com/11.7.11/mattermost-11.7.11-linux-amd64.tar.gz
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="archive" label="Older releases">
|
|
|
|
Enterprise and Team Edition releases are listed in the [version archive](/product-overview/version-archive).
|
|
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
<Note title="Air-gapped installs">
|
|
|
|
In an air-gapped environment, stage the tarball on your operator workstation, verify the SHA-256 and PGP signature, then transfer it across the boundary. See the [air-gapped deployment runbook](/deployment-guide/air-gapped-operations/quick-start-runbook) for the full procedure.
|
|
|
|
</Note>
|
|
|
|
## Step 4: Install Mattermost Server
|
|
|
|
Extract the tarball, move it into place, and set ownership.
|
|
|
|
```sh
|
|
tar -xvzf mattermost*.gz
|
|
sudo mv mattermost /opt
|
|
sudo mkdir /opt/mattermost/data
|
|
sudo useradd --system --user-group mattermost
|
|
sudo chown -R mattermost:mattermost /opt/mattermost
|
|
sudo chmod -R g+w /opt/mattermost
|
|
```
|
|
|
|
<Note title="Custom paths and users">
|
|
|
|
If you use a path other than `/opt/mattermost` or a user/group name other than `mattermost`, use that name in every step that follows.
|
|
|
|
</Note>
|
|
|
|
Create the systemd unit file at `/etc/systemd/system/mattermost.service`:
|
|
|
|
<Note>
|
|
|
|
Earlier versions of this guide had you create the unit file under `/lib/systemd/system/`, which is reserved for unit files installed and owned by a package manager.
|
|
|
|
</Note>
|
|
|
|
```ini
|
|
[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 title="Local database">
|
|
|
|
If PostgreSQL is on the same host, add to the `[Unit]` section so Mattermost won't start before the database is ready:
|
|
|
|
```ini
|
|
After=postgresql.service
|
|
BindsTo=postgresql.service
|
|
```
|
|
|
|
</Note>
|
|
|
|
Reload systemd:
|
|
|
|
```sh
|
|
sudo systemctl daemon-reload
|
|
```
|
|
|
|
## Step 5: Configure and start the server
|
|
|
|
Back up the default config before editing:
|
|
|
|
```sh
|
|
sudo cp /opt/mattermost/config/config.json /opt/mattermost/config/config.defaults.json
|
|
```
|
|
|
|
Edit `/opt/mattermost/config/config.json` and set:
|
|
|
|
- `SqlSettings.DriverName`: `"postgres"`
|
|
- `SqlSettings.DataSource`: `"postgres://mmuser:<mmuser-password>@<host>:5432/mattermost?sslmode=disable&connect_timeout=10"` — replace each placeholder.
|
|
- `ServiceSettings.SiteURL`: the public URL of your deployment (e.g., `https://mattermost.example.com`).
|
|
- (Recommended) [`SupportSettings.SupportEmail`](/administration-guide/configure/site-configuration-settings#support-email-address): the email address users contact for help.
|
|
|
|
Start the server:
|
|
|
|
```sh
|
|
sudo systemctl start mattermost
|
|
curl http://localhost:8065
|
|
```
|
|
|
|
You should see the Mattermost HTML response. Enable on boot:
|
|
|
|
```sh
|
|
sudo systemctl enable mattermost.service
|
|
```
|
|
|
|
## Step 6: Update the server
|
|
|
|
Tarball installs are upgraded manually — there's no package manager to pull the new version. See [Upgrading Mattermost Server](/administration-guide/upgrade/upgrading-mattermost-server) for the step-by-step procedure. The summary:
|
|
|
|
1. Stop the running server (`sudo systemctl stop mattermost`).
|
|
2. Back up `config/`, `data/`, `plugins/`, and your PostgreSQL database.
|
|
3. Download the new tarball.
|
|
4. Extract over the install directory (preserving `config/`, `data/`, `plugins/`).
|
|
5. Reset ownership and permissions.
|
|
6. Start the server.
|
|
|
|
## Remove Mattermost
|
|
|
|
Stop the server, back up data you need to keep, then remove the install:
|
|
|
|
```sh
|
|
sudo systemctl stop mattermost
|
|
sudo rm -rf /opt/mattermost
|
|
sudo rm /lib/systemd/system/mattermost.service
|
|
sudo userdel mattermost
|
|
```
|
|
|
|
<Important title="Back up before removing">
|
|
|
|
`/opt/mattermost` contains `config/`, `logs/`, `plugins/`, `client/plugins/`, and `data/`. Back these up before running `rm -rf` if you may need to restore.
|
|
|
|
</Important>
|
|
|
|
## Next steps
|
|
|
|
- [Set up an NGINX reverse proxy](/deployment-guide/server/setup-nginx-proxy)
|
|
- [Set up TLS](/deployment-guide/server/setup-tls)
|
|
- For air-gapped deployments: [Air-gapped deployment runbook](/deployment-guide/air-gapped-operations/quick-start-runbook), [Configure for Air-Gapped Operation](/deployment-guide/air-gapped-operations/disable-phone-home-features)
|