İçeriğe geç

Eğitimlerİletişim

Ubuntu'ya PostgreSQL ve HTTPS ile Mattermost nasıl kurulur

Mattermost'u resmi apt deposundan Ubuntu 24.04'e kurun; yerel PostgreSQL veritabanı, Caddy ile HTTPS, sıkı bir güvenlik duvarı ve yedeklerle çalıştırın.

  • Orta
  • 40 dk okuma
  • Güncellendi

Denendiği sistemler: Ubuntu 24.04 LTS

Bu sayfada
  1. Ön koşullar
  2. Adım 1 — PostgreSQL'i kurun ve veritabanını oluşturun
  3. Adım 2 — Mattermost'un apt deposunu ekleyin ve paketi kurun
  4. Adım 3 — Veritabanı bağlantısını ve Site URL'yi yapılandırın
  5. Adım 4 — Mattermost'u başlatın
  6. Adım 5 — Mattermost'u Caddy ile HTTPS üzerinden yayınlayın
  7. Adım 6 — SSH ve web dışındaki tüm portları kapatın
  8. Adım 7 — İlk yöneticiyi oluşturun ve kaydı kapatın
  9. Yedekleme ve geri yükleme
  10. Mattermost güncelleme
  11. Sorun giderme
  12. config.json düzenlendikten hemen sonra servis duruyor
  13. pq: password authentication failed for user "mmuser"
  14. permission denied for schema public
  15. Sayfa açılıyor ama mesajlar yalnızca yenileyince görünüyor
  16. Görüşmeler bağlanıyor ama kimse kimseyi duymuyor
  17. Sonraki adımlar

Mattermost; kanallar, mesaj dizileri, doğrudan mesajlar, dosya paylaşımı ve yerleşik sesli görüşmeler sunan, kendi sunucunuzda çalıştırabileceğiniz bir ekip mesajlaşma platformudur. Kendi sunucunuzda çalıştırdığınızda konuşmalar ve dosyalar sizin denetlediğiniz altyapıda kalır. Bu rehber Mattermost'u Ubuntu 24.04 LTS üzerine Mattermost'un imzalı apt deposundan kurar, yerel bir PostgreSQL veritabanına bağlar, Caddy üzerinden HTTPS ile yayınlar, SSH ve web trafiği dışındaki tüm portları kapatır; ardından ilk yöneticiyi nasıl oluşturacağınızı, sunucuyu nasıl yedekleyeceğinizi, geri yükleyeceğinizi ve yükselteceğinizi gösterir.

Ön koşullar

  • x86_64 (amd64) üzerinde Ubuntu 24.04 LTS çalıştıran bir sunucu. Mattermost'un kurulum rehberi Ubuntu 20.04, 22.04 ve 24.04 LTS sürümlerini listeler. Depo Ubuntu 26.04 için de paket yayınlıyor; ancak rehber bu sürümü henüz listelemiyor ve depo kurulum betiği yalnızca Ubuntu sürümlerini kabul ediyor.
  • sudo yetkisi ve SSH anahtarıyla girişi olan, root olmayan bir kullanıcı: Yeni bir Linux sunucusunu güvenli hale getirin ve SSH anahtarlarını ayarlayın rehberlerine bakın.
  • Sunucuyu gösteren bir A kaydına (IPv6 kullanıyorsanız AAAA kaydına) sahip chat.example.com gibi bir alan adı.
  • Caddy reverse proxy rehberinde anlatıldığı gibi sunucuya kurulmuş Caddy.
  • E-posta bildirimleri ve davetler için bir SMTP hesabı. Mattermost onsuz da çalışır, ancak kullanıcılar bu durumda e-posta almaz.

Mattermost'un gereksinimler sayfasındaki boyutlandırma:

KaynakEn düşük (resmi)Önerilen başlangıç
CPUYaklaşık 1.000 kullanıcıya kadar 1 vCPUPostgreSQL ve Mattermost yarışmasın diye 2 vCPU
RAMYaklaşık 1.000 kullanıcıya kadar 2 GBPostgreSQL aynı sunucudaysa 4 GB
DiskKüçük kurulumlar için yayınlanmamış20 GB ve beklediğiniz dosya yüklemeleri kadar alan
VeritabanıPostgreSQL 14 veya üstü (Mattermost v12.0'dan itibaren 15 veya üstü)Ubuntu'nun kendi PostgreSQL paketi

Adım 1 — PostgreSQL'i kurun ve veritabanını oluşturun

PostgreSQL'i Ubuntu arşivinden kurun. Ubuntu 24.04, Mattermost'un gereksinimini karşılayan PostgreSQL 16 ile gelir ve sunucu varsayılan olarak yalnızca localhost üzerinde dinler:

Bash
sudo apt update
sudo apt install postgresql
openssl rand -hex 24

Son komut veritabanı kullanıcısı için rastgele bir parola yazar; bunu kopyalayın. Ardından PostgreSQL kabuğunu açın:

Bash
sudo -u postgres psql

Mattermost'un veritabanı rehberindeki şu komutları çalıştırın ve change-me yerine ürettiğiniz parolayı yazın. Son üç satır, sıradan kullanıcıların public şemasında artık tablo oluşturamadığı PostgreSQL 15 ve sonrası için gereklidir:

SQL
CREATE DATABASE mattermost WITH ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE=template0;
CREATE USER mmuser WITH PASSWORD 'change-me';
GRANT ALL PRIVILEGES ON DATABASE mattermost TO mmuser;
ALTER DATABASE mattermost OWNER TO mmuser;
\c mattermost
ALTER SCHEMA public OWNER TO mmuser;
GRANT USAGE, CREATE ON SCHEMA public TO mmuser;
\q

Yeni kullanıcının TCP üzerinden giriş yapabildiğini kontrol edin; psql parolayı sorar ve ardından bağlantı bilgilerini yazar:

Bash
psql -h localhost -U mmuser -d mattermost -c '\conninfo'

Adım 2 — Mattermost'un apt deposunu ekleyin ve paketi kurun

Mattermost bir depo kurulum betiği sağlar. Betik desteklenen bir Ubuntu sürümü çalıştırdığınızı kontrol eder, Mattermost'un imza anahtarını indirir, parmak izini doğrular, /etc/apt/sources.list.d/mattermost.list dosyasını yazar ve apt update çalıştırır. Çalıştırmadan önce indirip okuyun:

Bash
curl -fsSL https://deb.packages.mattermost.com/repo-setup.sh -o mattermost-repo-setup.sh
less mattermost-repo-setup.sh
sudo bash mattermost-repo-setup.sh mattermost
sudo apt install mattermost

mattermost argümanı yalnızca Mattermost deposunu ekler. Argüman verilmezse betik bu rehberde gerekmeyen Nginx, PostgreSQL ve Certbot depolarını da ekler. Resmi tek satırlık karşılığı curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermost komutudur.

Paket /opt/mattermost altına kurulur ve bir mattermost sistem kullanıcısı oluşturur. Servis henüz etkinleştirilmez ve başlatılmaz. Kurulan sürümü kontrol edin:

Bash
apt-cache policy mattermost

Adım 3 — Veritabanı bağlantısını ve Site URL'yi yapılandırın

Yapılandırma dosyasını gelen varsayılanlardan, yalnızca mattermost kullanıcısının okuyabileceği şekilde oluşturun ve bir düzenleyicide açın:

Bash
sudo install -C -m 600 -o mattermost -g mattermost /opt/mattermost/config/config.defaults.json /opt/mattermost/config/config.json
sudo nano /opt/mattermost/config/config.json

Aşağıdaki anahtarları mevcut bölümlerinde bulun ve yalnızca değerlerini değiştirin. Örnek dosyanın tamamını değil, yalnızca anahtarları gösterir:

JSON
{
  "ServiceSettings": {
    "SiteURL": "https://chat.example.com"
  },
  "SqlSettings": {
    "DriverName": "postgres",
    "DataSource": "postgres://mmuser:change-me@localhost:5432/mattermost?sslmode=disable&connect_timeout=10"
  },
  "SupportSettings": {
    "SupportEmail": "[email protected]"
  }
}
  • SiteURL, kullanıcıların açtığı genel adresin https:// dahil birebir aynısı olmalıdır. E-postalardaki bağlantılar, bildirimler ve WebSocket bağlantısı bu değere dayanır.
  • DataSource, Adım 1'deki veritabanı parolasını içerir. Onaltılık (hex) bir parola URL kodlaması gerektirmez.
  • PostgreSQL aynı sunucuda çalıştığı ve bağlantı localhost dışına çıkmadığı için sslmode=disable uygundur.

Mattermost rehberi, ikisi aynı sunucuda çalışıyorsa servisi PostgreSQL'e bağlamanızı önerir. Bunu paketle gelen unit dosyasını düzenlemek yerine paket yükseltmelerinde korunan bir systemd drop-in dosyasıyla ekleyin:

Bash
sudo systemctl edit mattermost

Düzenleyicide bu satırları yorum işaretlerinin arasına yapıştırın ve kaydedin:

INI
[Unit]
After=postgresql.service
BindsTo=postgresql.service

Adım 4 — Mattermost'u başlatın

Bash
sudo systemctl start mattermost
sudo systemctl status mattermost --no-pager
curl -s http://localhost:8065 | head -n 5
sudo systemctl enable mattermost.service

İlk başlatma veritabanı şemasını oluşturur ve bir dakika kadar sürebilir. curl komutu Mattermost HTML sayfasının başını yazmalıdır. Servis bunun yerine durursa logu sudo journalctl -u mattermost -n 50 --no-pager ile okuyun; aşağıdaki Sorun giderme bölümüne bakın.

Adım 5 — Mattermost'u Caddy ile HTTPS üzerinden yayınlayın

/etc/caddy/Caddyfile dosyasına alan adınız için bir site bloğu ekleyin:

Caddyfile
chat.example.com {
    reverse_proxy 127.0.0.1:8065
}

Caddy'yi yeniden yükleyin ve yanıtı kontrol edin:

Bash
sudo systemctl reload caddy
curl -I https://chat.example.com

HTTP/2 200 ve geçerli bir sertifika görmelisiniz. Caddy sertifikayı Let's Encrypt'ten alır, WebSocket yükseltmelerini kendiliğinden iletir ve X-Forwarded-For ile X-Forwarded-Proto başlıklarını ayarlar; ek bir seçenek gerekmez.

Nginx tercih ediyorsanız Nginx ve Certbot rehberini izleyin ve Mattermost'un NGINX proxy belgelerindeki server bloğunu kullanın. Bu blokta Upgrade ve Connection başlıklarını içeren ayrı bir WebSocket location bölümü, yüklemeler için client_max_body_size ve daha uzun proxy zaman aşımları bulunur; bu parçalar olmadan Mattermost bağlanır ama gerçek zamanlı güncellemeyi bırakır.

Adım 6 — SSH ve web dışındaki tüm portları kapatın

Mattermost Docker içinde değil, normal bir sistem servisi olarak çalışır; bu nedenle ufw 8065 numaralı portu gerçekten korur:

Bash
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

Başka bir makineden nc -vz sunucu-ip-adresiniz 8065 artık reddedilmeli veya zaman aşımına uğramalı, https://chat.example.com ise çalışmaya devam etmelidir.

Calls eklentisi (sesli görüşme ve ekran paylaşımı) varsayılan olarak açıktır. Medya sunucusu UDP üzerinden 8443 numaralı portta dinler; UDP kullanamayan istemciler için TCP 8443 yedek yoldur. Calls kullanmayı planlıyorsanız ikisini de açın:

Bash
sudo ufw allow 8443/udp
sudo ufw allow 8443/tcp

Adım 7 — İlk yöneticiyi oluşturun ve kaydı kapatın

Tarayıcıda https://chat.example.com adresini açın ve bir hesap oluşturun. Yeni bir sunucuda ilk hesap sistem yöneticisi olur. Mattermost ardından ilk ekibinizi oluşturmanızı ister.

Kimseyi davet etmeden önce ürün menüsünden System Console sayfasını açın ve şu ayarları kontrol edin:

  • Authentication > Signup: Enable Open Server ayarını varsayılan değeri olan false olarak bırakın. Kullanıcılar bu durumda hesap oluşturmak için bir davet bağlantısına ihtiyaç duyar.
  • Authentication > MFA: çok faktörlü kimlik doğrulamaya izin verin ve her yönetici hesabında açın.

Ardından Environment > SMTP sayfasını açın. Davetler, parola sıfırlamaları ve e-posta bildirimleri bu ayara bağlıdır. Relay sunucunuzu (örneğin smtp.example.com), 587 portunu, bağlantı güvenliği olarak STARTTLS seçeneğini ve SMTP kullanıcı adı ile parolasını girin, ardından Test Connection düğmesine tıklayın.

Yedekleme ve geri yükleme

Mattermost'un durumu üç yerde tutulur: PostgreSQL veritabanı, /opt/mattermost/config içindeki yapılandırma ve yerel depolama kullanıldığında (varsayılan) /opt/mattermost/data içindeki yüklenen dosyalar. Mattermost'un yedekleme rehberi, veritabanı ile dosyaların birbirini tutması için yedekleme süresince sunucunun durdurulmasını söyler.

Bash
sudo mkdir -p /opt/backups
sudo chown $USER:$USER /opt/backups
chmod 700 /opt/backups
sudo systemctl stop mattermost
sudo -u postgres pg_dump -Fc mattermost > /opt/backups/mattermost-db-$(date +%F).dump
sudo tar czf /opt/backups/mattermost-files-$(date +%F).tar.gz -C /opt/mattermost config data
sudo systemctl start mattermost
ls -lh /opt/backups

Yeni bir sunucuya geri yüklemek için Adım 1–3'ü aynı Mattermost sürümüyle (sudo apt install mattermost=SÜRÜM; sürümleri apt-cache madison mattermost listeler) ve aynı veritabanı parolasıyla tamamlayın, ancak servisi başlatmayın. Ardından dökümü boş veritabanına yükleyin ve dosyaları yerine koyun:

Bash
sudo systemctl stop mattermost
sudo -u postgres pg_restore -d mattermost < /opt/backups/mattermost-db-2026-10-09.dump
sudo tar xzf /opt/backups/mattermost-files-2026-10-09.tar.gz -C /opt/mattermost
sudo chown -R mattermost:mattermost /opt/mattermost/config /opt/mattermost/data
sudo systemctl start mattermost

Tarihleri kendi yedek dosyalarınızın tarihleriyle değiştirin. Yedekleri sunucunun dışına da kopyalayın; örneğin rsync ile başka bir makineye veya nesne depolamaya.

Mattermost güncelleme

Kendi sürümünüzle hedef sürüm arasındaki her sürüm için Mattermost'un önemli yükseltme notlarını okuyun ve önce yedek alın. Mattermost belgeleri apt upgrade komutunun ikili dosyayı çalışırken değiştirdiği konusunda uyarır; bu yüzden yükseltmeden önce servisi durdurun:

Bash
sudo systemctl stop mattermost
sudo apt update && sudo apt upgrade
sudo systemctl start mattermost

İki alışkanlık yükseltmeleri öngörülebilir kılar:

  • Mattermost geriye dönük uyumluluğu yalnızca son Extended Support Release (ESR) sürümüyle garanti eder. Geride kaldıysanız önce en yakın ESR sürümüne, sonra bir sonrakine yükseltin. apt-cache madison mattermost mevcut sürümleri listeler; sudo apt install mattermost=11.7.12-0 belirli bir sürümü kurar (sürümü ihtiyacınız olan ESR ile değiştirin).
  • Rutin apt upgrade çalıştırmalarının Mattermost'u plansız yükseltmesini önlemek için paketi sudo apt-mark hold mattermost ile sabitleyin, hazır olduğunuzda sudo apt-mark unhold mattermost ile serbest bırakın.

Sorun giderme

config.json düzenlendikten hemen sonra servis duruyor

Eksik bir virgül veya tırnak dosyayı geçersiz JSON yapar. Dosyayı sudo python3 -m json.tool /opt/mattermost/config/config.json > /dev/null ile kontrol edin; komut ilk hatanın satırını yazar. Ayrıca sudo journalctl -u mattermost -n 50 --no-pager çıktısını ve /opt/mattermost/logs/mattermost.log dosyasını okuyun.

pq: password authentication failed for user "mmuser"

DataSource içindeki parola veritabanı kullanıcısıyla eşleşmiyor. sudo -u postgres psql -c "ALTER USER mmuser WITH PASSWORD 'yeni-hex-parola';" ile yeni bir parola belirleyin, DataSource değerini güncelleyin ve servisi yeniden başlatın.

permission denied for schema public

PostgreSQL 15 ve sonrasında Adım 1'deki veritabanı sahipliği ve şema yetkileri gereklidir. ALTER DATABASE, ALTER SCHEMA ve GRANT USAGE, CREATE komutlarını postgres kullanıcısıyla yeniden çalıştırın ve Mattermost'u yeniden başlatın.

Sayfa açılıyor ama mesajlar yalnızca yenileyince görünüyor

WebSocket bağlantısı başarısız oluyor. SiteURL değerinin tarayıcıdaki adresle https:// dahil birebir aynı olduğundan emin olun. Tarayıcının geliştirici araçlarında WebSocket adresine 403 yanıtı görmek genellikle SiteURL uyuşmazlığı anlamına gelir. Nginx kullanıyorsanız Mattermost yapılandırmasındaki WebSocket location bloğunun mevcut olduğunu kontrol edin.

Görüşmeler bağlanıyor ama kimse kimseyi duymuyor

Görüşme sinyalleşmesi HTTPS üzerinden çalışır, ancak medya 8443 numaralı porta ihtiyaç duyar. ufw'de ve sunucunun önündeki sağlayıcı veya ağ güvenlik duvarlarında 8443/udp (ve 8443/tcp) portunu açın.

Sonraki adımlar

Sık sorulan sorular

Mattermost loglarını nereye yazar?

Servis systemd günlüğüne yazar; bunu sudo journalctl -u mattermost -n 50 --no-pager ile okursunuz. Mattermost ayrıca kendi log dosyasını /opt/mattermost/logs/mattermost.log konumunda tutar. Servis durduğunda veya bir ayar etkili olmadığında önce ikisine de bakın.

Neden Mattermost'un Docker kurulumu kullanılmıyor?

Mattermost'un konteyner rehberi, Docker kurulumunun kutudan çıktığı hâliyle kümelemeyi ve yüksek erişilebilirliği desteklemediği için üretimde kullanılmaması gerektiğini söyler ve onu test ile geliştirme için sunar. Ubuntu sunucular için belgeler, güvenlik güncellemelerini de apt üzerinden getiren imzalı apt deposunu önerir.

Reverse proxy'nin WebSocket desteği gerekiyor mu?

Evet. Yeni mesajlar, yazıyor göstergeleri ve çevrim içi durum güncellemeleri api/v4/websocket yolundaki bir WebSocket üzerinden gelir. Caddy WebSocket yükseltmelerini ek ayar olmadan iletir; Nginx kullanıyorsanız Upgrade ve Connection başlıklarını ayarlayan resmi Mattermost yapılandırmasını kullanın.

İnternete hangi portlar açık olmalı?

SSH, 80 ve 443. Mattermost'un kendisi 8065 numaralı portta dinler; bu port kapalı kalır ve yalnızca reverse proxy üzerinden erişilir. Yerleşik Calls özelliğini kullanıyorsanız görüşme medyası için 8443/udp ve 8443/tcp portlarını da açın.

Hangi HyperDC sunucularında Mattermost çalışır?

Root erişimi olan ve Ubuntu 24.04 LTS çalıştıran her HyperDC Linux VPS, VDS veya dedicated sunucuda. Mattermost yaklaşık 1.000 kullanıcıya kadar 1 vCPU ve 2 GB RAM yayınlar; PostgreSQL ve dosya yüklemeleri için bunun üzerine pay bırakın.

Kaynaklar

Şifre Oluştur

Lütfen onaylayın