İçeriğe geç

Eğitimlerİletişim

Rocket.Chat Docker Compose ve HTTPS ile nasıl kurulur

Rocket.Chat'i resmi rocketchat-compose dosyaları, MongoDB replica set ve Traefik'in otomatik HTTPS'iyle kurun; sonra güvenceye alın, yedekleyin ve güncelleyin.

  • Orta
  • 40 dk okuma
  • Güncellendi

Denendiği sistemler: Ubuntu 24.04 LTS, Debian 12, Debian 13

Bu sayfada
  1. Ön koşullar
  2. Adım 1 — Resmi Compose projesini klonlayın
  3. Adım 2 — .env dosyasını yapılandırın
  4. Adım 3 — Güvenlik duvarını açın
  5. Adım 4 — Rocket.Chat'i başlatın
  6. Adım 5 — Kurulum sihirbazını çalıştırın ve kayıt formunu kapatın
  7. Yedekleme ve geri yükleme
  8. Rocket.Chat güncelleme
  9. Sorun giderme
  10. Traefik sertifika alamıyor
  11. mongodb konteyneri sürekli yeniden başlıyor
  12. Rocket.Chat bir güncellemeden sonra MongoDB sürüm hatasıyla kapanıyor
  13. 3000 numaralı porta internetten erişilebiliyor
  14. Anlık bildirimler telefonlara ulaşmıyor
  15. Sonraki adımlar

Rocket.Chat; kanallar, doğrudan mesajlar, mesaj dizileri, dosya paylaşımı, video konferans entegrasyonları ve müşteri konuşmaları için bir omnichannel modülü sunan açık kaynaklı bir ekip sohbet platformudur. Bu rehber Rocket.Chat'i resmi rocketchat-compose projesiyle Ubuntu veya Debian üzerine kurar: Rocket.Chat konteyneri, replica set olarak çalışan MongoDB, NATS mesaj aracısı ve Let's Encrypt sertifikasını kendisi alan Traefik. Ardından ilk yöneticiyi oluşturur, kayıt formunu kapatır ve çalışma alanını nasıl yedekleyeceğinizi, geri yükleyeceğinizi ve güncelleyeceğinizi öğrenirsiniz.

Ön koşullar

  • Docker Engine, Compose eklentisi ve git kurulu, Ubuntu 24.04 LTS, Debian 12 veya Debian 13 çalıştıran bir sunucu. Rocket.Chat'in kurulum rehberi MongoDB 8.x'in Ubuntu 26.04'te başlamayabileceği konusunda uyarır ve Ubuntu 24.04 LTS önerir; bu nedenle bu rehber 26.04'ü kapsamaz.
  • sudo yetkisi olan ve docker komutlarını çalıştırabilen, root olmayan bir kullanıcı: Yeni bir Linux sunucusunu güvenli hale getirin rehberine bakın.
  • Sunucuyu gösteren bir A kaydına (IPv6 kullanıyorsanız AAAA kaydına) sahip chat.example.com gibi bir alan adı. Traefik sertifikayı ancak bu kayıt çözümlendikten sonra alabilir.
  • Boş 80 ve 443 numaralı portlar. Bunları Traefik kullanır; bu yüzden aynı sunucuda Caddy veya Nginx çalıştırmayın.
  • Kayıt, anlık bildirimler ve Marketplace'in kullandığı Rocket.Chat bulut servislerine giden HTTPS erişimi.

Rocket.Chat'in gereksinimler sayfası en küçük üretim kurulumunu (500 eşzamanlı kullanıcıya kadar) bileşen bazında listeler:

KaynakEn düşük (resmi)Önerilen başlangıç
CPURocket.Chat için 2 vCPU ve MongoDB için 2 vCPUİkisi tek sunucuda çalışıyorsa 4 vCPU
RAMRocket.Chat için 4 GiB ve MongoDB için 4 GiBTek sunucuda 8 GB
DiskRocket.Chat için 20 GiB ve MongoDB için 10 GiB40 GB ve yüklenen dosyalar için ek alan

Resmi tablo, yüksek erişilebilirlik için üç üyeli bir MongoDB replica set varsayar. Bu rehber tek üye çalıştırır; bu tek sunucu için uygundur ama otomatik yedeğe geçiş (failover) sağlamaz.

Adım 1 — Resmi Compose projesini klonlayın

Uygulama klasörünü oluşturun ve depoyu içine klonlayın:

Bash
sudo mkdir -p /opt/rocketchat
sudo chown $USER:$USER /opt/rocketchat
git clone --depth 1 https://github.com/RocketChat/rocketchat-compose.git /opt/rocketchat
cd /opt/rocketchat
cp .env.example .env
chmod 600 .env
ls

Proje yığını birkaç Compose dosyasına böler:

  • compose.yml — Rocket.Chat uygulaması,
  • compose.database.yml — MongoDB, veri klasörü izinlerini düzelten bir yardımcı ve replica set'i ilklendiren tek seferlik bir konteyner,
  • compose.nats.yml — NATS mesaj aracısı,
  • compose.traefik.yml — Let's Encrypt'li Traefik,
  • compose.monitoring.yml ve docker.yml — isteğe bağlı Prometheus, Loki ve Grafana izleme yığını.

Rocket.Chat bu dosyaları düzenlememenizi önerir. Değiştirdiğiniz her şey .env dosyasına girer.

Adım 2 — .env dosyasını yapılandırın

Dosyayı nano .env ile açın. Mevcut değerleri değiştirin ve eksik satırları ekleyin:

.env
RELEASE=8.8.1
DOMAIN=chat.example.com
ROOT_URL=https://chat.example.com
LETSENCRYPT_ENABLED=true
LETSENCRYPT_EMAIL[email protected]
TRAEFIK_PROTOCOL=https
BIND_IP=127.0.0.1
TRAEFIK_DASHBOARD_PORT=127.0.0.1:8080
MONGODB_VERSION=8.0
COMPOSE_FILE=compose.traefik.yml:compose.database.yml:compose.yml:compose.nats.yml

Bu ayarların işlevi:

  • RELEASE, Rocket.Chat sürümünü sabitler. Rocket.Chat üretimde latest yerine sabit bir sürüm numarasını şiddetle önerir. En yeni sürümü desteklenen sürümler sayfasından alın; bu rehber yazılırken güncel sürüm 8.8.1 idi.
  • DOMAIN ve ROOT_URL genel adresle eşleşmelidir. Traefik sertifikayı DOMAIN için ister, Rocket.Chat ise bağlantıları ROOT_URL üzerinden oluşturur.
  • LETSENCRYPT_ENABLED, LETSENCRYPT_EMAIL ve TRAEFIK_PROTOCOL=https, Traefik'i Let's Encrypt sertifikalı HTTPS'e geçirir.
  • BIND_IP=127.0.0.1 güvenlik açısından önemlidir. compose.yml, 3000 numaralı portu ve metrik portunu varsayılan olarak tüm adreslerde yayınlar ve Docker'ın yayınladığı portlar ufw'yi atlar. Traefik Rocket.Chat'e Compose ağı üzerinden ulaşır; bu nedenle ana makinedeki portun yalnızca localhost'ta dinlemesi yeterlidir.
  • TRAEFIK_DASHBOARD_PORT=127.0.0.1:8080, Traefik panel portunu localhost'ta tutar. Panel varsayılan olarak kapalıdır, ancak port eşlemesi aksi hâlde 8080'i yine tüm adreslerde açardı.
  • MONGODB_VERSION=8.0, Rocket.Chat 8.x için en düşük MongoDB sürümüyle eşleşir. Her sürüm uyumlu MongoDB sürümlerini bildirir: curl -s https://releases.rocket.chat/8.8.1/info bunları compatibleMongoVersions alanında gösterir.
  • COMPOSE_FILE, docker compose komutuna yığını hangi dosyaların oluşturduğunu söyler; böylece sonraki her komut -f seçenekleri olmadan aynı dosya kümesini kullanır. Deponun README dosyası, bileşenlerin dosyalarını dışarıda bırakarak bileşenleri çıkarabileceğinizi söyler; bu liste izleme yığınını dışarıda bırakır.

Compose'un yapılandırmayı okuyabildiğini kontrol edin:

Bash
docker compose config --services

Liste traefik, mongodb, rocketchat ve nats servislerini içermelidir. Burada çıkan bir hata genellikle .env içindeki bir yazım hatasını gösterir.

Adım 3 — Güvenlik duvarını açın

Yalnızca SSH ve web trafiğine izin verin:

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

Traefik, alan adını denetlediğinizi kanıtlamak için 443 numaralı portta TLS doğrulamasını kullanır; bu yüzden ilk başlatmadan önce 443 portuna erişilebilmeli ve DNS bu sunucuyu göstermelidir. Resmi dosyalar MongoDB ve NATS'i yalnızca 127.0.0.1 üzerinde yayınlar; Adım 2 de Rocket.Chat'in kendi portlarını oraya taşıdı.

Adım 4 — Rocket.Chat'i başlatın

İmajları çekin ve yığını başlatın:

Bash
cd /opt/rocketchat
docker compose pull
docker compose up -d
docker compose ps -a
docker compose logs -f rocketchat

rocketchat, mongodb, nats ve traefik gibi konteynerler Up durumunda olmalıdır. İzin yardımcısı ve replica set ilklendirme konteyneri işlerini bitirip Exited (0) gösterir; bu beklenen durumdur. Rocket.Chat, logunda bir SERVER RUNNING kutusu göründüğünde hazırdır; logu izlemeyi bırakmak için Ctrl+C tuşlarına basın.

HTTPS'i ve kapalı uygulama portunu kontrol edin:

Bash
curl -I https://chat.example.com

Yanıt geçerli bir sertifikayla HTTP/2 200 olmalıdır. Başka bir makineden nc -vz sunucu-ip-adresiniz 3000 reddedilmeli veya zaman aşımına uğramalıdır.

Adım 5 — Kurulum sihirbazını çalıştırın ve kayıt formunu kapatın

https://chat.example.com adresini açın. Kurulum sihirbazı önce ilk yöneticiyi (ad, kullanıcı adı, e-posta ve parola), sonra kuruluş bilgilerinizi ister ve ardından çalışma alanını e-posta adresinizle Rocket.Chat Cloud'a kaydeder. Kaydı tamamlamak için Rocket.Chat'in gönderdiği e-postayı onaylayın.

Rocket.Chat'in çalışma alanı SSS sayfası, kayıt formunun genellikle Public olarak ayarlı olduğunu belirtir; bu da adresi bulan herkesin hesap oluşturabilmesi demektir. Bağlantıyı paylaşmadan önce formu kapatın:

  1. Manage > Workspace > Settings > Accounts sayfasına gidin.
  2. Registration bölümüne inin ve Registration Form ayarını Disabled yapın.
  3. Kaydedin, ardından kullanıcıları Manage > Workspace > Users sayfasından davet edin.

Mevcut kullanıcılar her zamanki gibi giriş yapmaya devam eder. Ayarlardayken her yönetici hesabında iki faktörlü kimlik doğrulamayı açın ve File Upload bölümünü gözden geçirin: dosyalar varsayılan olarak MongoDB GridFS içinde saklanır ve Rocket.Chat üretim için S3 veya MinIO gibi nesne depolamayı önerir (Self-hosted S3 depolama rehberine bakın).

Rocket.Chat davetleri, parola sıfırlamalarını, adres doğrulamalarını ve kaçırılan mesaj bildirimlerini Manage > Workspace > Settings > Email altındaki SMTP bölümünde ayarladığınız relay üzerinden e-postayla gönderir (protokol smtp, sunucu smtp.example.com, port 587, SMTP kullanıcı adınız ve parolanız ile bir From Email adresi).

Yedekleme ve geri yükleme

Varsayılan GridFS depolamada her şeyi MongoDB tutar: kullanıcılar, mesajlar, ayarlar ve yüklenen dosyalar. .env dosyası ise kurulum ayarlarınızı tutar. Rocket.Chat'in rehberi veritabanını ana makineye akıtılan mongodump ile yedekler:

Bash
sudo mkdir -p /opt/backups
sudo chown $USER:$USER /opt/backups
chmod 700 /opt/backups
cd /opt/rocketchat
docker compose exec -T mongodb sh -c 'mongodump --archive' > /opt/backups/rocketchat-db-$(date +%F).archive
cp .env /opt/backups/rocketchat-env-$(date +%F)
ls -lh /opt/backups

-T sözde terminali (pseudo-terminal) kapatır; böylece ikili arşiv dosyaya değişmeden ulaşır. Dosya yüklemelerini FileSystem depolama türüne geçirdiyseniz o klasörü de arşivleyin; S3 veya MinIO kullanıyorsanız kovayı (bucket) depolama sağlayıcınızın araçlarıyla yedekleyin.

Geri yüklemek için aynı RELEASE ve MONGODB_VERSION değerleriyle çalışan bir yığından başlayın (yeni bir sunucuda Adım 1–4'ü kaydettiğiniz .env ile tekrarlayın). Rocket.Chat'i durdurun, arşivi yükleyin ve yeniden başlatın:

Bash
cd /opt/rocketchat
docker compose stop rocketchat
docker compose exec -T mongodb sh -c 'mongorestore --archive --drop' < /opt/backups/rocketchat-db-2026-10-09.archive
docker compose start rocketchat

Yedekleri sunucunun dışına da kopyalayın.

Rocket.Chat güncelleme

Rocket.Chat'in güncelleme yönergeleri dört kurala dayanır: sürüm notlarını okuyun, önce yedek alın, yeni sürüm gerektiriyorsa MongoDB'yi Rocket.Chat'ten önce güncelleyin ve ana sürümler arasında birer birer ilerleyin (7.x'ten 8.x'e; asla 6.x'ten doğrudan 8.x'e değil). Aynı ana sürüm içindeki ara sürüm ve yama güncellemeleri doğrudan uygulanabilir.

Bash
cd /opt/rocketchat
curl -s https://releases.rocket.chat/8.8.1/info
nano .env
docker compose pull
docker compose up -d
docker compose ps

curl komutundaki 8.8.1 değerini hedef sürümle değiştirin ve compatibleMongoVersions alanını kontrol edin. .env içinde RELEASE değerini yeni sürüme ayarlayın. Sürüm daha yeni bir MongoDB gerektiriyorsa önce MONGODB_VERSION değerini değiştirin, docker compose up -d mongodb çalıştırın ve konteynerin sağlıklı duruma gelmesini bekleyin. COMPOSE_FILE tüm dosyalarınızı listelediği için docker compose up -d yığını aynı servislerle yeniden oluşturur; Rocket.Chat'in rehberi bir dosyayı dışarıda bırakmanın o servisleri düşürdüğü konusunda uyarır. Ardından sürümü Manage > Workspace altında doğrulayın.

MongoDB doğrudan eski sürüme düşürülemez; geri dönmek için önce özellik uyumluluk sürümünü (feature compatibility version) düşürmek gerekir. Bu yüzden güncellemeden önce aldığınız yedeği saklayın.

Sorun giderme

Traefik sertifika alamıyor

docker compose logs traefik çalıştırın. Olağan nedenler henüz bu sunucuyu göstermeyen bir DNS kaydı, sunucunun önündeki bir güvenlik duvarında engellenmiş 443 portu veya tekrarlanan denemelerden sonra Let's Encrypt hız sınırlarıdır. Nedeni giderin, ardından docker compose restart traefik çalıştırın.

mongodb konteyneri sürekli yeniden başlıyor

docker compose logs mongodb çıktısını okuyun. MongoDB, izin yardımcısının veri klasörünün sahipliğini düzeltmesini yaklaşık beş dakikaya kadar bekler ve bu başarısız olursa kapanır. Ubuntu 26.04'te MongoDB 8.x hiç başlamayabilir; bunun yerine Ubuntu 24.04 LTS veya Debian kullanın.

Rocket.Chat bir güncellemeden sonra MongoDB sürüm hatasıyla kapanıyor

Yeni sürüm daha yeni bir MongoDB gerektiriyor. Sürüm için compatibleMongoVersions alanını kontrol edin, .env içinde MONGODB_VERSION değerini yükseltin, önce docker compose up -d mongodb ile MongoDB'yi güncelleyin, ardından Rocket.Chat'i yeniden başlatın.

3000 numaralı porta internetten erişilebiliyor

.env dosyasında BIND_IP eksik; bu yüzden Docker portu tüm adreslerde yayınlıyor ve ufw onu engellemiyor. BIND_IP=127.0.0.1 ekleyin ve konteyneri yeniden oluşturmak için docker compose up -d çalıştırın.

Anlık bildirimler telefonlara ulaşmıyor

Anlık bildirimler, desteklenen bir sürümde kayıtlı bir çalışma alanı gerektiren Rocket.Chat bulut ağ geçidinden geçer. Kayıt durumunu Manage > Workspace altında kontrol edin, çalışma alanını yeniden kaydedin veya eşitleyin ve sürümünüzün destek süresi dolduysa güncelleyin.

Sonraki adımlar

Sık sorulan sorular

Rocket.Chat yüklenen dosyaları nerede saklar?

Varsayılan olarak MongoDB GridFS içinde; bu yüzden bu rehberdeki veritabanı yedeği dosyaları da içerir. Manage > Workspace > Settings > File Upload altında FileSystem depolama türüne veya Rocket.Chat'in üretim için önerdiği MinIO gibi S3 uyumlu nesne depolamaya geçebilirsiniz; bu durumda o depolamayı da yedekleyin.

Çalışma alanımı Rocket.Chat Cloud'a kaydetmek zorunda mıyım?

Rocket.Chat belgeleri kaydı kurulum sihirbazında zorunlu bir adım olarak tanımlar. Kayıt, çalışma alanını anlık bildirim ağ geçidi ve Marketplace gibi bulut servislerine bağlar. Air-gapped çalışma alanları ayrı bir süreç izler ve bulut servislerini kullanamaz.

Rocket.Chat neden MongoDB replica set'e ihtiyaç duyar?

Rocket.Chat gerçek zamanlı güncellemeler için replica set'in oplog'unu kullanır. Resmi compose.database.yml dosyası MongoDB'yi rs0 adlı tek düğümlü bir replica set olarak başlatır ve kendiliğinden ilklendirir; bunu elle yapılandırmanız gerekmez.

Her Rocket.Chat sürümü ne kadar süre desteklenir?

Standart sürümler altı ay, LTS sürümler on iki ay desteklenir. Destek süresi biten bir sürüm güvenlik düzeltmesi almaz, anlık bildirimler gibi bulut servisleri durur ve resmi mobil ile masaüstü uygulamaları bağlanamayabilir.

Traefik yerine Caddy veya Nginx kullanabilir miyim?

Evet. Rocket.Chat bir Nginx kurulumunu belgeler: compose.traefik.yml dosyasını dışarıda bırakın, LETSENCRYPT_ENABLED=false ayarlayın ve alan adınızı WebSocket desteğiyle 3000 numaralı porta yönlendirin. Bu rehber, resmi dosyalardaki varsayılan yol olduğu için paketle gelen Traefik'i kullanır.

Kaynaklar

Şifre Oluştur

Lütfen onaylayın