Bir ekibin iletişimi, o ekibin kurumsal hafızasıdır. Alınan kararlar, tartışılan fikirler, paylaşılan dosyalar ve müşteri yazışmaları hep bu akışın içinde birikir. Slack, Microsoft Teams gibi bulut tabanlı servisler bu ihtiyacı hızla karşılasa da, ekip büyüdükçe kullanıcı başına artan fatura, mesaj geçmişi sınırları ve en önemlisi tüm bu hassas verinin başka bir şirketin veri merkezinde durması ciddi soru işaretleri doğurur. Rocket.Chat, tam bu noktada devreye giren, kendi sunucunuzda çalıştırdığınız açık kaynaklı bir ekip mesajlaşma platformudur.
Bu rehberde Rocket.Chat'in ne olduğunu, kanal ve doğrudan mesaj yapısını, entegrasyon yeteneklerini ve kimler için mantıklı olduğunu ele alacağız. Ardından Docker ve Snap ile iki farklı kurulum yöntemini, MongoDB veritabanı gereksinimini, ters vekil ve SSL yapılandırmasını, kullanıcı yönetimini ve yedeklemeyi pratik örneklerle inceleyeceğiz. Sonunda Rocket.Chat'i, bu kategorideki en güçlü rakibi olan Mattermost ile de karşılaştıracağız; kendi altyapınızda benzer bir platform işleten ekipler için Mattermost rehberimiz tamamlayıcı bir okuma olacaktır.
Rocket.Chat nedir, ne işe yarar?#
Rocket.Chat, ekipler için tasarlanmış açık kaynaklı bir mesajlaşma ve iş birliği platformudur. En yalın tanımıyla, kendi sunucunuzda barındırdığınız bir Slack ya da Teams alternatifi olarak düşünebilirsiniz. Kanallar, doğrudan mesajlar, sesli ve görüntülü görüşme, dosya paylaşımı, tam metin arama ve zengin entegrasyon desteği gibi modern bir iletişim aracından beklenen her şeyi sunar. Farkı, tüm bu iletişim verisinin üçüncü bir şirketin bulutunda değil, sizin seçtiğiniz ve denetlediğiniz bir sunucuda kalmasıdır.
Teknik olarak Rocket.Chat, Node.js üzerinde çalışan bir sunucu bileşeni ve modern bir web arayüzünden oluşur. Verilerini bir MongoDB veritabanında saklar; yani tipik bir kurulum en az iki bileşenden meydana gelir: Rocket.Chat uygulaması ve MongoDB. Kullanıcılar platforma tarayıcıdan, masaüstü uygulamasından (Windows, macOS, Linux) veya mobil uygulamalardan (Android, iOS) erişebilir. Ofiste bilgisayardan başladığınız bir konuşmaya yolda telefonunuzdan devam edebilirsiniz.
Rocket.Chat'i yalnızca bir sohbet aracı olmanın ötesine taşıyan şey, güçlü omnichannel (çok kanallı destek) yetenekleridir. Web sitenize gömülü canlı destek widget'ından gelen ziyaretçi mesajlarını, WhatsApp, Telegram ve e-posta gibi kanalları tek bir gelen kutusunda toplayabilirsiniz. Bu yönüyle Rocket.Chat, hem iç iletişim hem de müşteri destek merkezi olarak kullanılabilen çift amaçlı bir platformdur.
Kanal, doğrudan mesaj ve mesajlaşma yapısı#
Rocket.Chat'in iletişim modeli, Slack'e alışkın ekiplerin anında kendini evinde hissedeceği bir yapıdadır. Temel yapı taşları şunlardır:
- Kanallar (Channels): Konu, proje veya departman bazında açtığınız herkese açık odalardır. Bir kanala katılan herkes geçmiş mesajları da görebilir; bu yönüyle kurumsal bilginin şeffaf biçimde paylaşıldığı alanlardır.
- Özel gruplar (Private Groups): Yalnızca davet edilenlerin görebildiği kapalı odalardır. Hassas projeler, yönetim yazışmaları veya İK konuları için idealdir.
- Doğrudan mesajlar (Direct Messages / DM): İki kişi arasındaki birebir yazışmalardır. Birden fazla kişiyle grup DM'i de açabilirsiniz.
- Tartışmalar (Discussions): Bir mesajın altında ayrı bir alt oda açarak konuyu ana kanaldan koparmadan derinleştirmenizi sağlar. Kanalların dağınıklaşmasını önler.
- Konu başlıkları (Threads): Bir mesaja verilen yanıtları ayrı bir dizide toplar; böylece aynı kanalda paralel konuşmalar birbirine karışmaz.
Her mesaj bloğunda emoji tepkileri, alıntılar, yıldızlama, sabitleme (pin) ve dosya ekleme desteği vardır. Markdown biçimlendirmesi sayesinde kod parçalarını, listeleri ve bağlantıları düzgün biçimde paylaşabilirsiniz. Kullanıcılar @kullanici ile birini etiketleyebilir, #kanal ile başka bir kanala atıfta bulunabilir. Bu tanıdık yapı, Slack veya Teams'ten geçiş yapan ekiplerin uyum sürecini oldukça kısaltır.
Docker ile Rocket.Chat kurulumu#
Rocket.Chat'i kurmanın en temiz ve en yaygın yolu Docker Compose ile kurulumdur. Bu yöntem, hem Rocket.Chat uygulamasını hem de zorunlu bağımlılığı olan MongoDB veritabanını tek bir yapılandırma dosyasında toplar ve tek komutla ayağa kaldırır. Konteyner mantığına yabancıysanız ve kurulumdan sonra bu servisleri görsel bir panelden yönetmek isterseniz, Portainer rehberimiz işinizi ciddi biçimde kolaylaştırır.
Önemli bir teknik ayrıntı: Rocket.Chat, MongoDB'yi replica set modunda çalışıyor bekler. Bu, MongoDB'nin değişiklik akışı (change streams) özelliğini kullanır ve Rocket.Chat'in gerçek zamanlı mesaj güncellemelerinin çalışması için şarttır. Tek sunuculuk bir kurulumda bile tek üyeli bir replica set tanımlamanız gerekir. Aşağıdaki docker-compose.yml bunu doğru biçimde yapılandırır:
services:
mongodb:
image: mongo:6.0
container_name: rocketchat_mongo
restart: always
command: >
mongod --replSet rs0 --oplogSize 128 --bind_ip_all
volumes:
- mongo_data:/data/db
- mongo_config:/data/configdb
mongo-init:
image: mongo:6.0
depends_on:
- mongodb
restart: "no"
entrypoint: >
bash -c "sleep 8 &&
mongosh --host rocketchat_mongo:27017 --eval
'rs.initiate({_id:\"rs0\",members:[{_id:0,host:\"rocketchat_mongo:27017\"}]})'"
rocketchat:
image: rocketchat/rocket.chat:latest
container_name: rocketchat
restart: always
depends_on:
- mongodb
ports:
- "3000:3000"
environment:
- ROOT_URL=https://sohbet.sirketiniz.com
- MONGO_URL=mongodb://rocketchat_mongo:27017/rocketchat?replicaSet=rs0
- MONGO_OPLOG_URL=mongodb://rocketchat_mongo:27017/local?replicaSet=rs0
- PORT=3000
volumes:
mongo_data:
mongo_config:
Dosyayı bir klasöre kaydedip aynı dizinde şu komutu çalıştırmanız yeterlidir:
docker compose up -d
Birkaç dakika içinde mongo-init konteyneri replica set'i başlatır, ardından Rocket.Chat 3000 portunda yayına geçer. Konteynerlerin durumunu ve günlüklerini kontrol etmek için şu komutları kullanabilirsiniz:
# Servislerin durumunu görüntüle
docker compose ps
# Rocket.Chat günlüklerini canlı izle
docker compose logs -f rocketchat
ROOT_URL değerini mutlaka sunucunuzun erişileceği tam adrese göre ayarlayın; bu değer yanlışsa giriş yönlendirmeleri ve bağlantılar bozulur. Üretim ortamı için MongoDB imajının sürümünü sabitlemek (örneğin mongo:6.0) ve latest etiketini bilinçli kullanmak iyi bir alışkanlıktır.
Snap ile hızlı kurulum#
Docker ile uğraşmak istemiyorsanız, Ubuntu tabanlı sunucularda Snap paketi çok daha hızlı bir başlangıç sunar. Snap paketi, Rocket.Chat'i ve uyumlu MongoDB sürümünü birlikte getirir; replica set yapılandırmasını da otomatik hallettiği için tek komutla çalışan bir kurulum elde edersiniz:
sudo snap install rocketchat-server
Kurulum tamamlandığında servis otomatik başlar ve varsayılan olarak 3000 portundan yayın yapar. Servisi yönetmek için standart snap komutlarını kullanırsınız:
# Durumu kontrol et
sudo systemctl status snap.rocketchat-server.rocketchat-server.service
# Servisi yeniden başlat
sudo snap restart rocketchat-server
Snap yöntemi, hızlı bir deneme ortamı ya da küçük bir ekip için son derece pratiktir. Ancak Docker yaklaşımı, sürüm yönetimi, taşınabilirlik ve yedekleme esnekliği açısından üretim ortamlarında genellikle daha çok tercih edilir. İki yöntemin de aynı yazılımı çalıştırdığını unutmayın; fark yalnızca paketleme ve yönetim biçimindedir.
| Yöntem | Avantaj | Dezavantaj |
|---|---|---|
| Docker Compose | Tam kontrol, taşınabilirlik, kolay yedekleme | Konteyner bilgisi gerektirir |
| Snap | Tek komut, otomatik MongoDB, hızlı başlangıç | Sürüm/altyapı esnekliği daha az |
Ters vekil ve SSL yapılandırması#
Rocket.Chat'i doğrudan 3000 portundan yayına almak yerine önüne bir ters vekil (reverse proxy) koymak, üretim ortamı için önerilen yaklaşımdır. Böylece uygulamaya standart 443 portundan, geçerli bir HTTPS sertifikasıyla erişir; sertifika yönetimini tek noktada toplar ve WebSocket geçişini düzgün yapılandırırsınız. Rocket.Chat gerçek zamanlı mesajlaşma için yoğun biçimde WebSocket kullandığından, bu ayar atlanırsa mesajlar anlık gelmez ve bağlantı sürekli kopar.
Aşağıdaki Nginx yapılandırması, hem HTTPS'i hem de WebSocket yükseltmesini doğru biçimde ayarlar:
server {
listen 443 ssl http2;
server_name sohbet.sirketiniz.com;
ssl_certificate /etc/letsencrypt/live/sohbet.sirketiniz.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/sohbet.sirketiniz.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
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_read_timeout 3600;
}
}
server {
listen 80;
server_name sohbet.sirketiniz.com;
return 301 https://$host$request_uri;
}
Buradaki Upgrade ve Connection "upgrade" başlıkları WebSocket'in çalışması için kritik öneme sahiptir; proxy_read_timeout değerini yüksek tutmak da uzun süreli bağlantıların gereksiz yere kesilmesini önler. Ücretsiz ve otomatik yenilenen bir sertifika kurmak için SSL sertifikası hizmetlerimizi inceleyebilir ya da Let's Encrypt kullanabilirsiniz. Bir mesajlaşma platformunu HTTPS olmadan yayına almak, tüm iç yazışmaların ağ üzerinden şifresiz aktarılması demektir; bu yüzden SSL bir tercih değil, zorunluluktur.
Kullanıcı yönetimi ve roller#
Kurulumdan sonra tarayıcınızdan sunucunuzun adresine gittiğinizde bir kurulum sihirbazı sizi karşılar. İlk oluşturduğunuz hesap, sistemin yöneticisi (admin) olur; bu yüzden ilk hesabı kendiniz açın ve güçlü bir parola belirleyin. Ardından yönetim panelinden (Administration) tüm sunucu davranışını yapılandırırsınız.
Rocket.Chat, rol tabanlı bir yetkilendirme modeli kullanır. Öntanımlı roller şunlardır:
| Rol | Kapsam | Tipik kullanım |
|---|---|---|
| admin | Tüm sistem | Sunucu yönetimi, ayarlar, kullanıcılar |
| moderator | Kanal düzeyi | Kanal içi mesaj/kullanıcı yönetimi |
| owner | Kanal düzeyi | Kanalı oluşturan, tam kanal denetimi |
| user | Genel | Standart ekip üyesi |
| bot | Sistem | Entegrasyon/otomasyon hesapları |
| guest | Sınırlı | Yalnızca davet edilen kanallara erişim |
Kullanıcıları yönetim panelinden tek tek ekleyebilir, e-posta ile davet edebilir ya da kayıt politikasını serbest bırakabilirsiniz. Kurumsal kullanımda genellikle davet tabanlı veya alan adı kısıtlamalı kayıt tercih edilir; böylece yalnızca @sirketiniz.com uzantılı adreslerle kayıt olunabilir. Daha büyük kurumlar için LDAP/Active Directory, SAML ve OAuth ile tekil oturum açma (SSO) entegrasyonu da mevcuttur; bu sayede kullanıcılar zaten var olan kurumsal kimlikleriyle giriş yapar. İki faktörlü doğrulamayı (2FA) tüm hesaplar için zorunlu kılmak da yönetim panelinden birkaç tıkla mümkündür.
Entegrasyonlar ve webhook'lar#
Rocket.Chat'i basit bir sohbet aracından merkezi bir iletişim altyapısına dönüştüren şey, güçlü entegrasyon yetenekleridir. Üç temel mekanizma vardır:
- Gelen webhook'lar (Incoming Webhooks): Dış sistemlerin Rocket.Chat'e mesaj göndermesini sağlar. Örneğin bir izleme sistemi, sunucu düştüğünde ilgili kanala otomatik uyarı bırakabilir. Panelden bir webhook oluşturduğunuzda size özel bir URL verilir; o URL'e JSON gövdeli bir POST isteği atmanız yeterlidir:
curl -X POST \
-H 'Content-Type: application/json' \
--data '{"text":"Uyari: web-01 sunucusu yanit vermiyor!"}' \
https://sohbet.sirketiniz.com/hooks/AbC123/gizli-token
- Giden webhook'lar (Outgoing Webhooks): Belirli bir kanala mesaj yazıldığında ya da bir tetik kelime geçtiğinde dış bir servise istek gönderir. Otomasyon iş akışları için idealdir.
- REST API ve Realtime API: Rocket.Chat'in tüm işlevlerini programatik olarak yönetmenizi sağlar. Kullanıcı oluşturma, kanal açma, mesaj gönderme gibi işlemler API üzerinden yapılabilir; bu da özel botlar ve entegrasyonlar geliştirmenin kapısını aralar.
Ayrıca hazır uygulama pazarında (Rocket.Chat Marketplace) Jira, GitHub, GitLab, Zapier ve daha pek çok servis için hazır bağlantılar bulunur. Slash komutları (/ ile başlayan komutlar) sayesinde de kanal içinden hızlı işlemler tetiklenebilir. Bu esneklik, özellikle geliştirici ve DevOps ekiplerinin Rocket.Chat'i CI/CD hatlarının ve izleme sistemlerinin merkezine yerleştirmesini kolaylaştırır.
Rocket.Chat ile Mattermost karşılaştırması#
Kendi sunucusunda çalışan Slack alternatifi ararken karşınıza en çok çıkacak iki isim Rocket.Chat ve Mattermost'tur. İkisi de olgun, açık kaynak ve güçlü platformlardır; ancak öncelikleri farklıdır. Aşağıdaki tablo temel ayrımları özetler:
| Özellik | Rocket.Chat | Mattermost |
|---|---|---|
| Veritabanı | MongoDB | PostgreSQL |
| Teknoloji | Node.js | Go |
| Omnichannel destek | Yerleşik ve güçlü | Sınırlı |
| Canlı destek widget'ı | Var (yerleşik) | Yok |
| DevOps entegrasyonu | İyi | Çok güçlü |
| Kaynak tüketimi | Orta-yüksek | Düşük-orta |
| Lisans | Açık kaynak | Açık kaynak |
Kabaca bir yön çizmek gerekirse: iç iletişimin yanında müşteri desteği, canlı sohbet ve çok kanallı (omnichannel) senaryolar da sizin için önemliyse Rocket.Chat öne çıkar; web sitenize gömülü canlı destek ve WhatsApp/Telegram entegrasyonları kutudan çıkar. Buna karşılık salt ekip içi iletişim, düşük kaynak tüketimi ve derin DevOps entegrasyonu önceliğinizse Mattermost daha yalın ve hafif bir seçenektir. Her iki ürünü de aynı sunucuda değerlendirmek için ilgili Mattermost rehberimizi okumanızı öneririz. Detaylı bir mimari kararı öncesinde iki platformu da bir test sunucusunda birkaç gün denemek en isabetli yaklaşımdır.
Yedekleme ve bakım#
Ekip iletişiminiz kurumsal hafızanızın önemli bir parçası olduğu için düzenli yedekleme ihmal edilmemelidir. Rocket.Chat'te yedeklenmesi gereken iki temel bileşen vardır: MongoDB veritabanı (mesajlar, kullanıcılar, kanallar, ayarlar) ve yüklenen dosyalar (varsayılan depolamada bunlar da veritabanının GridFS alanında tutulur; harici depolama kullanıyorsanız o konum). Docker kurulumunda veritabanı, bağladığınız mongo_data biriminde durur.
Veritabanının tutarlı bir anlık görüntüsünü almak için mongodump kullanabilirsiniz:
# Konteyner içinden veritabanı dökümü al
docker exec rocketchat_mongo \
mongodump --db rocketchat --archive=/data/db/yedek.gz --gzip
# Yedeği sunucuya kopyala
docker cp rocketchat_mongo:/data/db/yedek.gz ./rocketchat_$(date +%F).gz
Bu yedekleri sunucu dışında, ayrı bir konumda saklamak ve işlemi bir cron görevi ile otomatikleştirmek en sağlıklı yaklaşımdır. Yalnızca veritabanını yedekleyip harici dosya depolamanızı unutmak, geri yükleme sırasında eksik içerikle karşılaşmanıza yol açar. Yedekleme sürecinizi merkezi ve otomatik yönetmek isterseniz yedekleme çözümlerimizi inceleyebilir, sunucu bakımını uzmanlara devretmek isterseniz sunucu yönetimi hizmetimize göz atabilirsiniz. Bakım tarafında ise MongoDB ve Rocket.Chat imajlarını güvenlik yamalarını kaçırmamak için düzenli güncellemek, güncelleme öncesinde mutlaka yedek almak ve büyük sürüm atlamalarında değişiklik notlarını okumak temel disiplinlerdir.
Sıkça Sorulan Sorular#
Rocket.Chat ücretsiz mi?#
Rocket.Chat'in Community sürümü açık kaynak ve ücretsizdir; kanallar, doğrudan mesajlar, dosya paylaşımı, arama, entegrasyonlar ve hatta temel omnichannel özellikleri dahil olmak üzere çoğu ekibin ihtiyaç duyduğu her şeyi içerir. Gelişmiş kurumsal özellikler, öncelikli destek ve bazı yönetim/uyumluluk araçları için ücretli Enterprise abonelikleri de mevcuttur. Kendi sunucunuzda barındırdığınızda yalnızca sunucu maliyetini karşılarsınız; kullanıcı başına aylık ücret ödemezsiniz.
Rocket.Chat neden MongoDB'ye ihtiyaç duyar?#
Rocket.Chat tüm verisini, yani mesajları, kullanıcıları, kanalları ve ayarları bir MongoDB veritabanında saklar. Bunun ötesinde, gerçek zamanlı mesaj güncellemelerini yakalamak için MongoDB'nin oplog ve change streams özelliklerini kullanır; bu da MongoDB'nin replica set modunda çalışmasını gerektirir. Tek sunuculuk kurulumlarda bile bu yüzden tek üyeli bir replica set tanımlanır. Docker Compose örneğimizdeki mongo-init servisi ve --replSet rs0 bayrağı tam olarak bu işi otomatik yapar.
Rocket.Chat mı Mattermost mu tercih etmeliyim?#
İkisi de olgun ve güçlü açık kaynak platformlardır; seçim önceliklerinize bağlıdır. İç iletişimin yanında web sitesi canlı desteği, WhatsApp/Telegram entegrasyonu ve çok kanallı müşteri desteği (omnichannel) sizin için önemliyse Rocket.Chat daha kapsamlı bir çözümdür. Buna karşılık sadece ekip içi mesajlaşma, düşük kaynak tüketimi ve derin DevOps entegrasyonu istiyorsanız Mattermost daha yalın ve hafif kalır. En sağlıklı karar, iki platformu da bir test sunucusunda birkaç gün deneyip ekibinizin akışına hangisinin oturduğunu görmektir.
Rocket.Chat çalıştırmak için nasıl bir sunucu gerekir?#
Rocket.Chat, MongoDB ile birlikte çalıştığı için Mattermost'a göre biraz daha kaynak ister. Küçük bir ekip (5-20 kullanıcı) için 2 GB RAM ve 2 vCPU makul bir başlangıçtır, ancak rahat bir deneyim için 4 GB RAM önerilir. Kullanıcı sayısı ve mesaj trafiği arttıkça belleği ve işlem gücünü büyütmek, büyük kurumlarda ise MongoDB'yi ayrı bir sunucuya taşımak gerekir. Paylaşımlı hosting bu iş için uygun değildir; tam kök erişimi sunan bir sanal ya da fiziksel sunucu şarttır.
Rocket.Chat'i mobilden kullanabilir miyim?#
Evet. Rocket.Chat'in Android ve iOS için resmi mobil uygulamaları vardır; masaüstü için de Windows, macOS ve Linux uygulamaları mevcuttur. Kendi sunucunuza bağlanmak için mobil uygulamada sunucu adresinizi (örneğin https://sohbet.sirketiniz.com) girmeniz yeterlidir. Anlık bildirimlerin sorunsuz çalışması için sunucunuzun geçerli bir HTTPS sertifikasıyla ve doğru ROOT_URL değeriyle yapılandırılmış olması gerekir; bu yüzden ters vekil ve SSL adımlarını atlamamak önemlidir.
Verilerim KVKK açısından güvende olur mu?#
Rocket.Chat'i Türkiye'deki kendi sunucunuzda barındırdığınızda, tüm iletişim verisi sizin denetiminizdeki bir altyapıda kalır. Bu, verinin nerede durduğunu bilmenizi ve KVKK gerekliliklerine uygun yönetmenizi kolaylaştırır; verinin yurt dışına aktarımı gibi karmaşık uyum konularıyla uğraşmak yerine veri egemenliğini doğrudan elinizde tutmuş olursunuz. Yine de sunucu güvenliği, HTTPS, güçlü kimlik doğrulama ve düzenli yedekleme gibi önlemleri eksiksiz uygulamak sizin sorumluluğunuzdadır.
Kapanış#
Rocket.Chat, ekip iletişiminizi ve müşteri desteğinizi üçüncü bir tarafa bağımlı kalmadan, öngörülebilir bir maliyetle ve tam denetimle yönetmenin en olgun yollarından biridir. Kanallar, doğrudan mesajlar ve tanıdık bir Slack deneyimini sunarken; yerleşik omnichannel destek, güçlü entegrasyon yetenekleri ve en önemlisi tüm verinin sizin denetiminizde kalması gibi ciddi avantajlar sağlar. Özellikle iç iletişimi ve canlı desteği tek platformda toplamak isteyen ekipler için güçlü bir tercihtir.
Kendi Rocket.Chat sunucunuzu kurmak için sürekli çalışabilen, tam kök erişimi sunan sağlam bir zemine ihtiyacınız var. Bu tür 7/24 hizmetler için sanal sunucu (VDS) çözümlerimizi ve genel sunucu paketlerimizi inceleyebilir, hazır uygulamalarla hızlı başlamak için App Center kataloğumuza göz atabilirsiniz. Ekibinizin iletişimini ve müşteri iletişiminizi kendi denetiminize almaya bugün başlayabilirsiniz.