 Autor: [Tomasz Nowosielski](/autorzy/tomasz-nowosielski) Redaktor naczelny, analityk hostingu · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  Mattermost — self-hosted komunikator

# Mattermost — self-hosted komunikator dla zespołów deweloperskich

Opublikowano: 10 kwietnia 2026 · Kategoria: VPS

Slack zdominował rynek komunikatorów dla deweloperów, ale jego ograniczenia (historia wiadomości za paywallem, dane na serwerach Salesforce, koszt per-seat) sprawiają, że wiele firm szuka alternatywy. Mattermost to open-source komunikator dla zespołów technicznych, który możesz uruchomić na własnym VPS — z pełną kontrolą nad danymi, bez limitu historii i z bogatym ekosystemem integracji. Ten artykuł pokazuje instalację przez Docker Compose, konfigurację SMTP, integracje z narzędziami deweloperskimi i tuning wydajności dla większych zespołów.

## Instalacja przez Docker Compose

Oficjalny Docker Compose dla Mattermost instaluje trzy kontenery: aplikację, PostgreSQL i opcjonalnie Nginx jako reverse proxy. Poniżej minimalna konfiguracja produkcyjna z Let's Encrypt:

\# Sklonuj oficjalny repo Mattermost Docker
git clone https://github.com/mattermost/docker
cd docker
cp env.example .env

# Edytuj .env - kluczowe zmienne
# DOMAIN=mattermost.example.com
# MM\_SERVICESETTINGS\_SITEURL=https://mattermost.example.com
# POSTGRES\_USER=mmuser
# POSTGRES\_PASSWORD=mmuser\_password
# POSTGRES\_DB=mattermost

# Utwórz woluminy i nadaj uprawnienia
mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes}
sudo chown -R 2000:2000 ./volumes/app/mattermost

# Uruchom stack (bez Nginx - jezeli masz wlasny reverse proxy)
docker compose -f docker-compose.yml -f docker-compose.without-nginx.yml up -d

# Sprawdz status
docker compose ps
docker compose logs -f mattermost

## Konfiguracja Nginx + Let's Encrypt

Jeśli używasz własnego Nginx (spoza stack Mattermost), dodaj vhost z proxy\_pass i WebSocket support. Mattermost wymaga obsługi WebSocket dla real-time wiadomości:

upstream mattermost {
  server 127.0.0.1:8065;
  keepalive 32;
}

server {
  listen 443 ssl;
  server\_name mattermost.example.com;

  ssl\_certificate /etc/letsencrypt/live/mattermost.example.com/fullchain.pem;
  ssl\_certificate\_key /etc/letsencrypt/live/mattermost.example.com/privkey.pem;

  location / {
    proxy\_pass http://mattermost;
    proxy\_http\_version 1.1;
    proxy\_set\_header Upgrade $http\_upgrade;
    proxy\_set\_header Connection "upgrade";
    proxy\_set\_header Host $host;
    proxy\_set\_header X-Real-IP $remote\_addr;
    proxy\_set\_header X-Forwarded-For $proxy\_add\_x\_forwarded\_for;
    proxy\_set\_header X-Forwarded-Proto $scheme;
    proxy\_buffering off;
    proxy\_read\_timeout 600s;
  }
}

## Konfiguracja SMTP i powiadomień email

Mattermost wysyła emaile do weryfikacji konta, resetowania hasła i powiadomień o wzmianakch. Konfigurację SMTP znajdziesz w `System Console → Environment → SMTP` lub bezpośrednio w pliku `config/config.json`:

\# Fragment config.json - sekcja EmailSettings
{
  "EmailSettings": {
    "SendEmailNotifications": true,
    "FeedbackName": "Mattermost",
    "FeedbackEmail": "noreply@example.com",
    "ReplyToAddress": "noreply@example.com",
    "SMTPServer": "smtp.gmail.com",
    "SMTPPort": "587",
    "ConnectionSecurity": "STARTTLS",
    "EnableSMTPAuth": true,
    "SMTPUsername": "noreply@example.com",
    "SMTPPassword": "app\_password\_tutaj",
    "EnableEmailBatching": true,
    "EmailBatchingBufferSize": 256,
    "EmailBatchingInterval": 30
  }
}

# Zrestartuj po zmianie config.json
docker compose restart mattermost

## Integracje: GitHub, GitLab i Jira webhooks

Mattermost obsługuje przychodzące webhooks (Incoming Webhooks) do odbierania powiadomień z zewnętrznych systemów. Poniżej konfiguracja dla GitHub:

\# 1. Włącz Incoming Webhooks w System Console
# System Console → Integrations → Integration Management
# Enable Incoming Webhooks = true

# 2. Utwórz webhook w Mattermost
# Menu → Integrations → Incoming Webhooks → Add Incoming Webhook
# Wybierz kanał docelowy (np. #dev-notifications)
# Skopiuj URL: https://mattermost.example.com/hooks/xxxx

# 3. Dodaj webhook w GitHub
# Repo → Settings → Webhooks → Add webhook
# Payload URL: https://mattermost.example.com/hooks/xxxx
# Content type: application/json
# Wybierz events: Push, Pull requests, Issues, Releases

# 4. Slash commands - przyklad wlasnej komendy
# Menu → Integrations → Slash Commands → Add Slash Command
# Command: /deploy
# Request URL: https://your-ci-server.com/deploy-hook
# Method: POST
# Response username: deploy-bot

## Integracja z LDAP / Active Directory

LDAP sync pozwala zalogować pracowników korporacyjnym kontem bez tworzenia osobnych kont Mattermost. W wersji Team Edition (bezpłatnej) dostępny jest plugin open-source LDAP; pełna synchronizacja grupowa wymaga licencji Enterprise. Konfiguracja w `config.json`:

"LdapSettings": {
  "Enable": true,
  "EnableSync": true,
  "LdapServer": "ldap.company.com",
  "LdapPort": 389,
  "ConnectionSecurity": "STARTTLS",
  "BaseDN": "OU=Users,DC=company,DC=com",
  "BindUsername": "CN=svc-mattermost,OU=ServiceAccounts,DC=company,DC=com",
  "BindPassword": "bind\_password",
  "UserFilter": "(objectClass=person)",
  "GuestFilter": "",
  "EmailAttribute": "mail",
  "UsernameAttribute": "sAMAccountName",
  "FirstNameAttribute": "givenName",
  "LastNameAttribute": "sn",
  "NicknameAttribute": "displayName",
  "IdAttribute": "objectGUID",
  "SyncIntervalMinutes": 60,
  "MaxPageSize": 0
}

## Performance tuning — DB pooling i Elasticsearch

Przy większych zespołach (200+ aktywnych użytkowników) domyślna konfiguracja PostgreSQL może być wąskim gardłem. Warto dostroić connection pooling oraz włączyć Elasticsearch dla wydajnego wyszukiwania.

Rozmiar zespołu

RAM aplikacji

RAM PostgreSQL

Elasticsearch

Zalecany VPS

Do 50 użytkowników

1 GB

512 MB

Nie

2 GB RAM total

50–200 użytkowników

2 GB

1 GB

Opcjonalnie

4 GB RAM total

200–500 użytkowników

4 GB

2 GB

Zalecane (4 GB)

8–12 GB RAM total

500–2000 użytkowników

8 GB

4 GB

Wymagane (8 GB)

16–24 GB RAM total

\# Elasticsearch w docker-compose.yml (dodaj serwis)
elasticsearch:
  image: elasticsearch:7.17.0
  environment:
    - discovery.type=single-node
    - "ES\_JAVA\_OPTS=-Xms2g -Xmx2g"
    - xpack.security.enabled=false
  volumes:
    - ./volumes/elasticsearch:/usr/share/elasticsearch/data

# config.json - Elasticsearch settings
"ElasticsearchSettings": {
  "EnableIndexing": true,
  "EnableSearching": true,
  "EnableAutocomplete": true,
  "ConnectionURL": "http://elasticsearch:9200",
  "Username": "",
  "Password": "",
  "SniffEnabled": false,
  "StartOfSchemaVersion": 0,
  "BulkIndexingTimeWindowSeconds": 3600
}

# Po konfiguracji - przeliczenie indeksu
# System Console → Environment → Elasticsearch
# "Purge Indexes" a potem "Index Now"

## Najczęstsze pytania

Ile RAM potrzebuje Mattermost na VPS? +

Minimalna konfiguracja produkcyjna Mattermost to 2 GB RAM dla zespołów do 100 użytkowników. Przy 100–500 użytkownikach zaleca się 4 GB RAM i 2 vCPU. Dla 500–2000 użytkowników — 8 GB RAM i 4 vCPU. Elasticsearch dla zaawansowanego wyszukiwania wymaga dodatkowych 4 GB RAM. Docker Compose (Mattermost + PostgreSQL) zużywa ok. 600–900 MB w trybie idle.

Czy Mattermost obsługuje webhooks GitHub i GitLab? +

Tak, Mattermost ma natywne integracje z GitHub i GitLab przez przychodzące webhooks. Po włączeniu w System Console → Integrations → Incoming Webhooks kopiujesz URL i wklejasz go w ustawieniach repo na GitHub/GitLab. Możesz otrzymywać powiadomienia o push, pull request, review, issues i pipeline CI/CD. Mattermost obsługuje też slash commands, boty i Mattermost Apps Framework dla zaawansowanych integracji.

Jak skonfigurować SMTP w Mattermost? +

SMTP konfiguruje się w config.json lub przez System Console → Environment → SMTP. Wymagane pola: SMTPServer (np. smtp.gmail.com), SMTPPort (587 dla STARTTLS lub 465 dla SSL), EnableSMTPAuth=true, SMTPUsername, SMTPPassword, FeedbackEmail (nadawca). Po zapisaniu użyj przycisku "Send Test Email" w konsoli administracyjnej, by zweryfikować konfigurację. Obsługiwany jest też SMTP z SES, SendGrid i Mailgun.

Czym Mattermost różni się od Slacka? +

Mattermost to self-hosted alternatywa dla Slacka z zachowaniem pełnej kontroli nad danymi. Kluczowe różnice: Mattermost działa na własnym serwerze (pełna prywatność danych), nie ma limitu historii wiadomości w wersji bezpłatnej, obsługuje LDAP/AD w wersji Team Edition przez plugin, ma otwarte API i rozbudowany system uprawnień. Slack jest prostszy w konfiguracji i ma bogatszy marketplace, ale wiąże się z przechowywaniem danych na serwerach Salesforce i kosztami per-seat.

Jak wykonać backup Mattermost? +

Backup Mattermost składa się z 3 elementów: (1) dump bazy PostgreSQL: pg\_dump -U mmuser mattermost -F c > backup.dump, (2) kopia katalogu z załącznikami: /opt/mattermost/data/ lub /var/lib/docker/volumes/mattermost\_config/ (przy Docker), (3) kopia config.json. Zalecane jest codzienne backupowanie z retencją 30 dni. Backup można zautomatyzować przez systemd timer lub cron. Przywracanie: pg\_restore + rsync danych + restart usługi.

## Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.

Contabo

VPS z dużą ilością RAM pod Mattermost dla większych zespołów

Duży RAM

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo)

ProSerwer.pl

Polski VPS — dane komunikatora pozostają w Polsce (RODO)

Polski VPS

[Aktywuj rabat →](/out/proserwer-pl)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/proserwer)

Mikr.us

Budżetowy VPS do testów i małego zespołu (do 20 osób)

Dev/Test

[Aktywuj rabat →](/out/mikrus)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus)

## Powiązane strony

-   [Matrix Synapse — zdecentralizowany komunikator](/baza-wiedzy/matrix-synapse-serwer)
-   [Docker na VPS — instalacja i konfiguracja](/baza-wiedzy/docker-na-vps)
-   [Nextcloud — self-hosted chmura na VPS](/baza-wiedzy/nextcloud-instalacja-vps)
-   [Wszystkie artykuły](/baza-wiedzy/)