Polski
Zacznij

← Wszystkie szablony · Sieci i społeczność

Wdróż Mattermost jednym kliknięciem

Czat zespołowy open source z kanałami, wątkami, udostępnianiem plików i integracjami

Alternatywa dla Slack i Microsoft Teams, hostowana u siebie.

Czym jest Mattermost?

Mattermost to platforma open source do współpracy na czacie zespołowym: kanały publiczne i prywatne, wiadomości bezpośrednie i grupowe, wątki, udostępnianie plików, wyszukiwanie, Markdown i niestandardowe emoji, w ponad 20 językach. Webhooki, polecenia po ukośniku, boty, wtyczki i API łączą go z innymi narzędziami, z integracjami dla Jiry, GitHuba i GitLaba. Aplikacje na Windows, macOS, Linuksa, iOS i Androida łączą się z jego adresem.

Ten szablon uruchamia Mattermost Team Edition, darmowe wydanie na licencji MIT, z PostgreSQL i tworzy Administratora Systemu z pól formularza, zanim strona komukolwiek odpowie. Team Edition to wydanie dla małych zespołów: obsługuje do 250 aktywnych użytkowników i nie ma logowania jednokrotnego, kont gości ani połączeń grupowych, które są w płatnych planach. Haczyk: powiadomienia push do aplikacji mobilnych idą przez darmową usługę Test Push Notification Service od Mattermosta, której sam Mattermost nie zaleca do produkcji.

Hosting Mattermost na Pethost

  1. Logujesz się do Pethost kluczem dostępu, przez GitHub albo Google. Nie masz jeszcze maszyny? Wybierasz plan, a link czeka, aż będzie gotowa.
  2. Okno „Nowy projekt” otwiera się na aplikacji Mattermost. Wypełniasz to, o co prosi, i klikasz „Utwórz projekt”: E-mail, Nazwa użytkownika, Hasło administratora.
  3. Za minutę czy dwie aplikacja Mattermost działa pod własnym adresem z HTTPS. Jej sekrety są tworzone losowo, a dane trafiają do nocnego backupu.
  4. To projekt jak każdy inny: ty albo twój agent możecie go zmienić, cofnąć do wcześniejszej wersji albo przywrócić.

Pytania o Mattermost

Czy Mattermost jest darmowy?

Tak. Mattermost Team Edition to darmowe wydanie skompilowane na licencji MIT z otwartego kodu źródłowego, które zachowuje całą historię wiadomości. Jest przeznaczone dla zespołów poniżej 250 aktywnych użytkowników; płatne plany dodają SSO, konta gości, połączenia grupowe i funkcje compliance.

Mattermost czy Slack?

Oba mają kanały, wątki, wiadomości bezpośrednie i integracje. Slack działa tylko na serwerach Slacka, a Mattermost tam, gdzie go wdrożysz. Jego przychodzące webhooki przyjmują format Slacka, więc wiele integracji ze Slackiem działa bez zmian.

Czy mogę przenieść się ze Slacka do Mattermosta?

Tak. Narzędzia migracji Mattermosta, mmetl i mmctl import, przenoszą z eksportu Slacka użytkowników, kanały, historię wiadomości, wiadomości bezpośrednie, wątki i pliki. Polecenia po ukośniku nie przechodzą.

Czy Mattermost ma aplikacje mobilne?

Tak, na iOS i Androida, a do tego aplikacje desktopowe na Windows, macOS i Linuksa. W Team Edition powiadomienia push idą przez usługę Test Push Notification Service od Mattermosta, która jest darmowa, ale nie daje żadnych gwarancji.

Ilu użytkowników może mieć Mattermost Team Edition?

Do 250 aktywnych użytkowników: przy 200 ostrzega, a przy 250 odmawia tworzenia i aktywowania kolejnych kont. Zespół, który przerośnie ten limit, przechodzi na płatny plan.

Czy połączenia Mattermosta działają z tym szablonem?

Nie w tej postaci. Połączenia przesyłają dźwięk i obraz przez port 8443, którego ten szablon nie publikuje; czat tekstowy, pliki i integracje działają w pełni.

Ile pamięci i miejsca na dysku potrzebuje Mattermost?

Mattermost zajmuje około 300 MB pamięci razem z Postgresem przy małym zespole, a jego baza danych i pliki rosną z każdą wiadomością i każdym wgranym załącznikiem. Na Pethost wystarczy mu plan Starter, z miejscem na inne aplikacje obok.

Mattermost: plik Docker Compose

Szablon to ten compose.yaml i zmienne zapisywane do .env projektu przy jego tworzeniu. Pethost uruchamia plik dokładnie tak, jak jest napisany.

Kontenery: proxy (caddy:2.11-alpine), mattermost (mattermost/mattermost-team-edition:12.0), postgres (postgres:17-alpine).

Wolumeny, w nocnym backupie: 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:

Więcej w kategorii Sieci i społeczność