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
- Ön koşullar
- Adım 1 — PostgreSQL'i kurun ve veritabanını oluşturun
- Adım 2 — Mattermost'un apt deposunu ekleyin ve paketi kurun
- Adım 3 — Veritabanı bağlantısını ve Site URL'yi yapılandırın
- Adım 4 — Mattermost'u başlatın
- Adım 5 — Mattermost'u Caddy ile HTTPS üzerinden yayınlayın
- Adım 6 — SSH ve web dışındaki tüm portları kapatın
- Adım 7 — İlk yöneticiyi oluşturun ve kaydı kapatın
- Yedekleme ve geri yükleme
- Mattermost güncelleme
- Sorun giderme
- config.json düzenlendikten hemen sonra servis duruyor
- pq: password authentication failed for user "mmuser"
- permission denied for schema public
- Sayfa açılıyor ama mesajlar yalnızca yenileyince görünüyor
- Görüşmeler bağlanıyor ama kimse kimseyi duymuyor
- 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.
sudoyetkisi 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.comgibi 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:
| 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:
sudo apt update
sudo apt install postgresql
openssl rand -hex 24Son komut veritabanı kullanıcısı için rastgele bir parola yazar; bunu kopyalayın. Ardından PostgreSQL kabuğunu açın:
sudo -u postgres psqlMattermost'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:
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;
\qYeni kullanıcının TCP üzerinden giriş yapabildiğini kontrol edin; psql parolayı sorar ve ardından bağlantı bilgilerini yazar:
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:
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 mattermostmattermost 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:
apt-cache policy mattermostAdı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:
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.jsonAş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:
{
"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 adresinhttps://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=disableuygundur.
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:
sudo systemctl edit mattermostDüzenleyicide bu satırları yorum işaretlerinin arasına yapıştırın ve kaydedin:
[Unit]
After=postgresql.service
BindsTo=postgresql.serviceAdım 4 — Mattermost'u başlatın
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:
chat.example.com {
reverse_proxy 127.0.0.1:8065
}Caddy'yi yeniden yükleyin ve yanıtı kontrol edin:
sudo systemctl reload caddy
curl -I https://chat.example.comHTTP/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:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verboseBaş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:
sudo ufw allow 8443/udp
sudo ufw allow 8443/tcpAdı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.
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/backupsYeni 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:
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 mattermostTarihleri 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:
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 mattermostmevcut sürümleri listeler;sudo apt install mattermost=11.7.12-0belirli 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 paketisudo apt-mark hold mattermostile sabitleyin, hazır olduğunuzdasudo apt-mark unhold mattermostile 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 ile video toplantılar ekleyin.
- Diğer self-hosted sohbet sunucularını karşılaştırın: Rocket.Chat ve Element ile Matrix Synapse.
- Mattermost'un önündeki proxy hakkında daha fazlasını Caddy reverse proxy rehberinde öğrenin.
- SSO, S3 üzerinde dosya depolama ve yüksek erişilebilirlik için resmi Mattermost kurulum rehberini okuyun.
- Ekip sohbeti için sunucuları 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.
Kaynaklar
- docs.mattermost.com/deployment-guide/server/deploy-linux.html
- docs.mattermost.com/deployment-guide/server/linux/deploy-ubuntu.html
- docs.mattermost.com/deployment-guide/server/prepare-database.html
- docs.mattermost.com/deployment-guide/server/deploy-containers.html
- docs.mattermost.com/deployment-guide/software-hardware-requirements…
- docs.mattermost.com/product-overview/editions-and-offerings.html
- docs.mattermost.com/deployment-guide/server/setup-nginx-proxy.html
- docs.mattermost.com/administration-guide/configure/authentication-c…
- docs.mattermost.com/administration-guide/configure/plugins-configur…
- docs.mattermost.com/deployment-guide/backup-disaster-recovery.html
- docs.mattermost.com/administration-guide/upgrade/upgrading-mattermo…
- docs.mattermost.com/administration-guide/upgrade/prepare-to-upgrade…