# 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.

Zorluk: Orta\
Denendiği sistemler: Ubuntu 24.04 LTS

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](/guides/secure-a-new-linux-server) ve [SSH anahtarlarını ayarlayın](/guides/ssh-keys) 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](/guides/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:

| Kaynak | En düşük (resmi) | Önerilen başlangıç |
|---|---|---|
| CPU | Yaklaşık 1.000 kullanıcıya kadar 1 vCPU | PostgreSQL ve Mattermost yarışmasın diye 2 vCPU |
| RAM | Yaklaşık 1.000 kullanıcıya kadar 2 GB | PostgreSQL aynı sunucudaysa 4 GB |
| Disk | Küçü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'
```

> **İpucu**
>
> `CREATE DATABASE` geçersiz yerel ayar (locale) hatası verirse yerel ayarı `sudo locale-gen en_US.UTF-8` ile oluşturun, PostgreSQL'i `sudo systemctl restart postgresql` ile yeniden başlatın ve komutu tekrar çalıştırın.

## 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": "admin@example.com"
  }
}
```

- `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](/guides/nginx-reverse-proxy-certbot) rehberini izleyin ve Mattermost'un [NGINX proxy belgelerindeki](https://docs.mattermost.com/deployment-guide/server/setup-nginx-proxy.html) 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.

> **Not**
>
> HyperDC VPS'lerde giden 25 numaralı port varsayılan olarak kapalıdır. 3 ay veya daha uzun süreyle satın alınan hizmetlerde talep üzerine açılır: [destek talebi açın](/guides/support-tickets). O zamana kadar e-postaları 587 numaralı port üzerinden bir SMTP relay ile gönderin.

## 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ı](https://docs.mattermost.com/administration-guide/upgrade/important-upgrade-notes.html) 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

- Sohbetinizin yanına [Jitsi Meet](/guides/install-jitsi-meet) ile video toplantılar ekleyin.
- Diğer self-hosted sohbet sunucularını karşılaştırın: [Rocket.Chat](/guides/install-rocket-chat) ve [Element ile Matrix Synapse](/guides/install-matrix-synapse).
- Mattermost'un önündeki proxy hakkında daha fazlasını [Caddy reverse proxy](/guides/caddy-reverse-proxy) rehberinde öğrenin.
- SSO, S3 üzerinde dosya depolama ve yüksek erişilebilirlik için resmi [Mattermost kurulum rehberini](https://docs.mattermost.com/deployment-guide/server/deploy-linux.html) okuyun.
- Ekip sohbeti için sunucuları [team chat hosting](/team-chat-hosting) sayfasında karşılaştırın.

## 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.

---

Kaynak: <https://hyperdc.com/tr/guides/tutorials/install-mattermost>\
Son güncelleme: 2026-10-09
