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

[← Усі шаблони](https://pethost.dev/uk/templates/) · [Соцмережі та спільноти](https://pethost.dev/uk/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 на Pethost

1. Ви входите в Pethost — з ключем доступу, через GitHub або Google. Машини ще немає? Ви обираєте тариф, і посилання чекає, доки машина не буде готова.
2. Вікно «Новий проєкт» відкривається на застосунку Mattermost. Ви заповнюєте те, що він просить, і натискаєте «Створити проєкт»: **Електронна пошта**, **Ім’я користувача**, **Пароль адміністратора**.
3. За хвилину-дві Mattermost працює за власною адресою з HTTPS. Секрети створюються випадково, а дані потрапляють у щонічний бекап.
4. Це проєкт як будь-який інший: ви або ваш агент можете його змінити, відкотити або відновити.

## Питання про Mattermost

**Mattermost безкоштовний?**

Так. Mattermost Team Edition безкоштовна, зібрана з відкритого коду за ліцензією MIT і зберігає всю історію повідомлень. Вона розрахована на команди, де менше ніж 250 активних користувачів; платні тарифи додають SSO, гостьові акаунти, групові дзвінки й функції комплаєнсу.

**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/uk/templates/community/)

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

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Шаблони](https://pethost.dev/uk/templates/)
- [Про нас](https://pethost.dev/about/)
- [Документація](https://pethost.dev/docs/)
- [Блог](https://pethost.dev/uk/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/uk/postgres/)

Порівняння

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

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

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