---
title: "Mattermost: Docker Compose и хостинг в один клик"
description: "Self-hosted Mattermost — open source командный чат с каналами, обсуждениями и интеграциями. Mattermost Team Edition, альтернатива Slack, в один клик."
---

[← Все шаблоны](https://pethost.dev/ru/templates/) · [Соцсети и сообщества](https://pethost.dev/ru/templates/community/)

# Задеплойте Mattermost в один клик

Командный чат с открытым кодом: каналы, обсуждения, обмен файлами и интеграции

Альтернатива Slack и Microsoft Teams на вашей машине.

[Задеплоить на Pethost](https://console.pethost.dev/?template=mattermost)

## Что такое Mattermost?

Mattermost — платформа с открытым кодом для совместной работы в командном чате: публичные и приватные каналы, личные и групповые сообщения, обсуждения, обмен файлами, поиск, Markdown и пользовательские смайлики, на более чем 20 языках. Вебхуки, слэш-команды, боты, плагины и API связывают его с другими инструментами, а для Jira, GitHub и GitLab есть интеграции. Приложения для Windows, macOS, Linux, iOS и Android подключаются к его адресу.

Этот шаблон запускает Mattermost Team Edition — бесплатную сборку под лицензией MIT — с PostgreSQL и создает администратора системы по данным из полей еще до того, как страница кому-либо ответит. Team Edition рассчитана на небольшие команды: она принимает до 250 активных пользователей, и в ней нет единого входа, гостевых учетных записей и групповых звонков — они есть в платных тарифах. Подвох: push-уведомления в приложения на телефоне идут через бесплатный Test Push Notification Service от Mattermost, который сам Mattermost не рекомендует для продакшена.

## Хостинг Mattermost на Pethost

1. Вы входите в Pethost — с passkey, через GitHub или Google. Машины еще нет? Вы выбираете тариф, и ссылка ждет, пока машина не будет готова.
2. Окно «Новый проект» открывается на приложении Mattermost. Вы заполняете то, что оно просит, и нажимаете «Создать проект»: **Электронная почта**, **Имя пользователя**, **Пароль администратора**.
3. Через минуту-две Mattermost работает по своему адресу с HTTPS. Секреты создаются случайно, а данные попадают в ночной бэкап.
4. Это проект как любой другой: вы или ваш агент можете его изменить, откатить или восстановить.

## Вопросы про Mattermost

**Mattermost бесплатный?**

Да. Mattermost Team Edition бесплатна, собрана из открытого кода под лицензией MIT и хранит всю историю сообщений. Она рассчитана на команды меньше 250 активных пользователей; платные тарифы добавляют SSO, гостевые учетные записи, групповые звонки и функции для соответствия требованиям (compliance).

**Mattermost или Slack?**

В обоих есть каналы, обсуждения, личные сообщения и интеграции. Slack работает только на серверах Slack, а Mattermost — там, где вы его задеплоите, и его входящие вебхуки принимают формат Slack, так что многие интеграции Slack работают без изменений.

**Можно ли переехать со Slack на Mattermost?**

Да. Инструменты миграции Mattermost, mmetl и mmctl import, переносят из экспорта Slack пользователей, каналы, историю сообщений, личные сообщения, обсуждения и файлы. Слэш-команды не переносятся.

**Есть ли у Mattermost мобильные приложения?**

Да, для iOS и Android, а также десктопные приложения для Windows, macOS и Linux. В Team Edition push-уведомления идут через Test Push Notification Service от Mattermost — он бесплатный, но без каких-либо гарантий.

**Сколько пользователей может быть в Mattermost Team Edition?**

До 250 активных пользователей: на 200 она предупреждает, а на 250 отказывается создавать или активировать новых. Команда, которая из нее выросла, переходит на платный тариф.

**Работают ли звонки Mattermost с этим шаблоном?**

В исходном виде — нет. Звонки передают звук и видео через порт 8443, который этот шаблон не публикует; текстовый чат, файлы и интеграции работают полностью.

**Сколько памяти и диска нужно Mattermost?**

Mattermost для небольшой команды занимает около 300 MB памяти вместе с Postgres, а база данных и файлы растут вместе с сообщениями и загрузками. На Pethost ему хватит тарифа Starter, и рядом останется место для других приложений.

## Mattermost: файл Docker Compose

Шаблон — это этот compose.yaml и переменные, которые пишутся в .env проекта при его создании. Pethost запускает файл так, как он написан.

**Контейнеры:** proxy (caddy:2.11-alpine), mattermost (mattermost/mattermost-team-edition:12.0), postgres (postgres:17-alpine).

**Тома, в ночном бэкапе:** config, data, logs, plugins, client-plugins, db.

```
services:
  # A new Mattermost makes whoever signs up first its System Admin. So the page is served through
  # this small Caddy, which answers only once the administrator exists: at its start it waits for
  # Mattermost, and while Mattermost says it has no accounts, it signs the administrator up with
  # the email, username and password given, as that first account. A refusal stops it, says so in
  # its log, and is tried again at its next start.
  proxy:
    image: caddy:2.11-alpine
    restart: unless-stopped
    environment:
      ADMIN_EMAIL: ${ADMIN_EMAIL}
      ADMIN_USERNAME: ${ADMIN_USERNAME}
      ADMIN_PASSWORD: ${ADMIN_PASSWORD}
    command:
      - sh
      - -c
      - |
        set -e
        mattermost=http://mattermost:8065
        echo "waiting for Mattermost"
        until client=$$(wget -qO- "$$mattermost/api/v4/config/client?format=old" 2>/dev/null); do sleep 2; done
        case "$$client" in
          *'"NoAccounts":"true"'*)
            json() { printf '%s' "$$1" | sed 's/\\/\\\\/g; s/"/\\"/g'; }
            body=$$(printf '{"email":"%s","username":"%s","password":"%s"}' \
              "$$(json "$$ADMIN_EMAIL")" "$$(json "$$ADMIN_USERNAME")" "$$(json "$$ADMIN_PASSWORD")")
            if ! wget -qO /dev/null --header 'Content-Type: application/json' --post-data "$$body" "$$mattermost/api/v4/users"; then
              echo "Mattermost refused the administrator: an email address, a username of letters, digits, dots, dashes and underscores, and a password of 8 characters at least are what it takes" >&2
              exit 1
            fi
            echo "the administrator $$ADMIN_USERNAME is made"
            ;;
        esac
        exec caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
    configs:
      - source: caddy
        target: /etc/caddy/Caddyfile
    # The image's own directories, which a proxy without certificates does not use.
    tmpfs:
      - /config
      - /data
    depends_on:
      - mattermost

  mattermost:
    image: mattermost/mattermost-team-edition:12.0
    restart: unless-stopped
    environment:
      MM_SQLSETTINGS_DRIVERNAME: postgres
      MM_SQLSETTINGS_DATASOURCE: postgres://mattermost:${POSTGRES_PASSWORD}@postgres:5432/mattermost?sslmode=disable&connect_timeout=10
      MM_SERVICESETTINGS_SITEURL: ${URL}
      # Only the proxy reaches Mattermost, and it says who the client is.
      MM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER: X-Forwarded-For
    volumes:
      - config:/mattermost/config
      - data:/mattermost/data
      - logs:/mattermost/logs
      - plugins:/mattermost/plugins
      - client-plugins:/mattermost/client/plugins
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    image: postgres:17-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: mattermost
      POSTGRES_USER: mattermost
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U mattermost -d mattermost"]
      interval: 5s
      timeout: 5s
      retries: 10
      start_period: 30s

configs:
  caddy:
    content: |
      {
        admin off
        auto_https off
      }

      :8065 {
        reverse_proxy mattermost:8065
      }

volumes:
  config:
  data:
  logs:
  plugins:
  client-plugins:
  db:
```

[compose.yaml](https://pethost.dev/templates/mattermost/compose.yaml)[Открыть на GitHub](https://github.com/pethost-dev/templates/tree/main/mattermost)

## [Еще в категории «Соцсети и сообщества»](https://pethost.dev/ru/templates/community/)

- [**listmonk**Менеджер рассылок и списков подписчиков](https://pethost.dev/ru/templates/listmonk/)
- [**Lemmy**Агрегатор ссылок и форум для федиверса](https://pethost.dev/ru/templates/lemmy/)
- [**NodeBB**Форум для вашего сообщества](https://pethost.dev/ru/templates/nodebb/)
- [**Apache Answer**Вопросы и ответы для сообщества, справочного центра или команды, свой Stack Overflow](https://pethost.dev/ru/templates/apache-answer/)
- [**Mastodon**Свой сервер в федиверсе: посты, подписки и ответы по всему Mastodon и не только](https://pethost.dev/ru/templates/mastodon/)
- [**Pixelfed**Обмен фотографиями без рекламы и алгоритмов — альтернатива Instagram, которая федерируется с Mastodon](https://pethost.dev/ru/templates/pixelfed/)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Шаблоны](https://pethost.dev/ru/templates/)
- [О нас](https://pethost.dev/about/)
- [Документация](https://pethost.dev/docs/)
- [Блог](https://pethost.dev/ru/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Плагин](https://github.com/pethost-dev/plugin)
- [Условия](https://pethost.dev/terms/)
- [Конфиденциальность](https://pethost.dev/privacy/)
- [Возвраты](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Базы данных

- [Postgres](https://pethost.dev/ru/postgres/)

Сравнения

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/ru/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/ru/blog/coolify-cloud-vs-dokploy-cloud/)
- [Цены Railway, Render и Fly.io](https://pethost.dev/ru/blog/railway-vs-render-vs-fly-io-pricing/)
- [Управляемый хостинг Docker Compose](https://pethost.dev/ru/blog/managed-docker-compose-hosting/)

Альтернативы

- [Альтернативы Railway](https://pethost.dev/ru/blog/railway-alternatives/)
- [Альтернативы Heroku](https://pethost.dev/ru/blog/heroku-alternatives/)
- [Альтернативы Dokploy](https://pethost.dev/ru/blog/dokploy-alternatives/)
- [Альтернативы Coolify](https://pethost.dev/ru/blog/coolify-alternatives/)
- [Альтернативы Render](https://pethost.dev/ru/blog/render-alternatives/)
- [Альтернативы Sliplane](https://pethost.dev/ru/blog/sliplane-alternatives/)
