Görüntülü toplantı bugün neredeyse her ekibin günlük rutininin bir parçası. Ancak çoğu popüler çözüm sizden bir hesap açmanızı, bir uygulama indirmenizi ve dakika başına para ödemenizi ister; dahası konuşmalarınız, katılımcı listeleriniz ve toplantı kayıtlarınız üçüncü bir şirketin sunucularında tutulur. Bir hukuk bürosunun müvekkil görüşmesi, bir sağlık kuruluşunun hasta danışması ya da bir yazılım ekibinin ürün planlaması söz konusu olduğunda bu durum ciddi bir mahremiyet ve uyum sorunu haline gelir. İşte Jitsi Meet tam da bu noktada devreye giriyor.
Jitsi Meet, tamamen açık kaynaklı, tarayıcıdan çalışan ve hiçbir hesap gerektirmeyen bir görüntülü konferans platformudur. Bir bağlantı oluşturur, karşı tarafa gönderirsiniz ve iki taraf da tarayıcıda "Katıl" düğmesine basar; hepsi bu. Üstelik yazılımın tamamını kendi sunucunuza kurabildiğiniz için tüm trafik ve kayıtlar sizin kontrolünüzdedir. Bu rehberde Jitsi Meet'in nasıl çalıştığını, kendi sunucunuza Docker ile nasıl kuracağınızı, alan adı ile TLS ayarlarını, NAT arkasındaki sunucular için hayati önemdeki TURN yapılandırmasını, oda güvenliğini ve toplantı kaydını uçtan uca ele alacağız. Anlatımı, bir müşteriye omzunun üzerinden anlatan kıdemli bir sistem yöneticisi gibi, gerçek komutlarla yapacağız.
Jitsi Meet Nedir ve Nasıl Çalışır#
Jitsi Meet, aslında birkaç bileşenin bir araya gelmesiyle oluşan bir "yığın"dır (stack). Tarayıcıda gördüğünüz o sade arayüz, arka planda birbiriyle konuşan dört ana servisin ürünüdür. Bu bileşenleri tanımak, ileride bir şey ters gittiğinde nereye bakacağınızı bilmeniz açısından önemlidir.
- Jitsi Meet (web arayüzü): Katılımcının tarayıcıda açtığı JavaScript uygulaması. Kamerayı, mikrofonu ve ekran paylaşımını yönetir, WebRTC üzerinden medyayı taşır.
- Prosody (XMPP sunucusu): Toplantı odalarının "sinyalleşme" katmanı. Kimin odaya girdiği, kimin konuştuğu, sohbet mesajları gibi kontrol trafiğini taşır. Medya değil, koordinasyon burada döner.
- Jicofo (Jitsi Conference Focus): Odaların beynidir. Katılımcıları video köprüsüne bağlar, kimin akışının kime iletileceğine karar verir, aktif konuşmacıyı belirler.
- JVB (Jitsi Videobridge): Asıl işi yapan servis. Tüm katılımcıların ses ve görüntü akışlarını alır, en verimli şekilde yeniden dağıtır. Sunucunuzun bant genişliğini ve CPU'sunu en çok yoran bileşen budur.
Önemli bir mimari nokta şudur: Jitsi, "Selective Forwarding Unit" (SFU) modeliyle çalışır. Yani sunucu, akışları yeniden kodlamaz (transcode etmez); her katılımcının gönderdiği akışı olduğu gibi diğerlerine iletir. Bu, sunucu üzerindeki CPU yükünü klasik MCU mimarilerine göre dramatik biçimde azaltır ama karşılığında bant genişliği tüketimi artar. On kişilik bir toplantıda her katılımcı diğer dokuz kişinin akışını alır. Bu yüzden kendi sunucunuzu planlarken CPU'dan çok yükseltme (upload) bant genişliğine odaklanmanız gerekir.
Zoom ve Diğer Alternatiflere Göre Farkları#
Jitsi'nin en çok merak edilen yönü, ticari platformların yerini gerçekten tutup tutamayacağıdır. Cevap "büyük ölçüde evet" ama nüanslarla. Aşağıdaki tablo, kendi sunucunuzda barındırdığınız bir Jitsi kurulumunu tipik ticari alternatiflerle karşılaştırıyor.
| Özellik | Jitsi Meet (self-hosted) | Zoom / Ticari SaaS |
|---|---|---|
| Hesap gereksinimi | Yok, davet bağlantısı yeter | Genellikle en az bir taraf için gerekir |
| Uygulama kurulumu | Yok, tarayıcıdan çalışır | Sık sık istemci indirmesi ister |
| Süre ve katılımcı limiti | Kendi donanımınıza bağlı | Ücretsiz planda 40 dk gibi limitler |
| Veri egemenliği | %100 sizde | Sağlayıcının sunucularında |
| Maliyet | Sunucu + bant genişliği | Aylık kullanıcı başı abonelik |
| Uçtan uca şifreleme | Destekleniyor (E2EE) | Plana göre değişir |
| Kayıt (recording) | Jibri ile kendi diskinize | Bulut kaydı, çoğu zaman ek ücret |
| Özelleştirme / marka | Tam kontrol (logo, renk, alan adı) | Sınırlı |
Buradaki en büyük kazanç maliyet ve mahremiyettir. Aylık sabit bir VDS ücretiyle sınırsız toplantı yapabilir, kullanıcı başına ödeme yapmaktan kurtulursunuz. Buna karşılık, işletme sorumluluğu sizin üzerinizdedir: sunucuyu güncel tutmak, yedek almak ve ölçeklemeyi planlamak size düşer. Eğer bu işletme yükünü kendiniz taşımak istemiyorsanız, sunucu tarafını sunucu yönetimi hizmetiyle bize devredebilir, sadece toplantılarınıza odaklanabilirsiniz. Kendi ekip içi metin iletişiminizi de ayrıca kurmak isterseniz, aynı self-hosted felsefesini paylaşan Mattermost çözümü Jitsi ile çok iyi tamamlanır.
Sunucu Gereksinimleri ve Ön Hazırlık#
Kaç kişilik toplantılar yapacağınıza göre donanım ihtiyacınız değişir. Aşağıdaki değerler, saha deneyiminden çıkan pratik bir başlangıç noktasıdır; ağır ekran paylaşımı ve HD video kullanımı bu rakamları yukarı çeker.
| Senaryo | vCPU | RAM | Yükleme bant genişliği |
|---|---|---|---|
| 2-10 kişilik toplantılar | 2 | 4 GB | 50-100 Mbps |
| 10-35 kişilik toplantılar | 4 | 8 GB | 200-500 Mbps |
| 35+ / çoklu paralel oda | 8+ | 16 GB+ | 1 Gbps ve JVB ölçekleme |
Jitsi için önerdiğimiz taban, temiz bir Ubuntu 22.04 LTS kurulumudur ve kesinlikle bir genel IP adresi ister. NAT arkasında da çalışır ama TURN ayarı zorunlu hale gelir (buna aşağıda değineceğiz). Toplantı kalitesi doğrudan sunucunun yükleme hızına bağlı olduğundan, ev bağlantısı yerine veri merkezinde barındırılan bir makine tercih edin. İhtiyacınıza uygun bir VDS sunucu ya da daha ölçeklenebilir bir sanal sunucu bu iş için idealdir; küçük ekipler için sunucu kataloğumuzdaki giriş seviyesi paketler de yeterli olur.
Kuruluma başlamadan önce sistemi güncelleyin ve gerekli portları açın. Jitsi'nin ihtiyaç duyduğu portlar şunlardır: HTTP/HTTPS için 80 ve 443, medya için UDP 10000 ve TURN kullanacaksanız TCP/UDP 3478 ile TLS-TURN için 5349.
# Sistemi güncelle
sudo apt update && sudo apt upgrade -y
# Zaman senkronizasyonunu doğrula (sertifikalar için kritik)
sudo timedatectl set-ntp true
# Güvenlik duvarı kurallarını uygula
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw enable
Alan Adı ve DNS Ayarları#
Jitsi bir alan adı olmadan da çalışabilir ama üretim ortamı için mutlaka bir alt alan adı ayırın; hem TLS sertifikası için hem de kullanıcıya güven veren temiz bir bağlantı için gereklidir. Örneğin meet.sirketiniz.com gibi bir kayıt oluşturun ve sunucunuzun genel IP'sine yönlendirin.
; A kaydı — sunucunun genel IPv4 adresi
meet.sirketiniz.com. 3600 IN A 203.0.113.45
; Varsa IPv6
meet.sirketiniz.com. 3600 IN AAAA 2001:db8::45
Henüz bir alan adınız yoksa alan adı sayfamızdan uygun bir uzantı alabilirsiniz. DNS yayılımını doğrulamadan kuruluma geçmeyin; dig meet.sirketiniz.com +short komutunun doğru IP'yi döndürdüğünden emin olun. Sertifika üretimi için Let's Encrypt bu kaydı çözebilmelidir, aksi halde kurulum HTTPS aşamasında takılır. TLS tarafını dert etmek istemez ve panelinizden yönetilebilir bir sertifika isterseniz, SSL sertifikası hizmetimiz de bu senaryoda kullanılabilir.
Docker ile Jitsi Meet Kurulumu#
Jitsi'yi kurmanın en temiz ve taşınabilir yolu resmi docker-jitsi-meet deposudur. Tüm bileşenleri ayrı konteynerler olarak ayağa kaldırır, güncellemeyi ve geri almayı kolaylaştırır. Önce Docker ve Docker Compose'u kurmuş olmanız gerekir. Konteynerlerinizi görsel bir arayüzden izlemek isterseniz, Portainer kurulumu Jitsi yığınını yönetmeyi oldukça kolaylaştırır.
# Docker deposunu ekle ve kur
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER # oturumu yeniden açın
# Resmi Jitsi Docker deposunu al
git clone https://github.com/jitsi/docker-jitsi-meet.git
cd docker-jitsi-meet
# En son kararlı sürüm etiketine geç
git checkout stable
Depo, örnek bir yapılandırma dosyasıyla gelir. Bunu kopyalayıp kendi değerlerinizle düzenlersiniz. En kritik alanlar alan adınız, Let's Encrypt e-postanız ve genel IP adresinizdir.
# Örnek env dosyasını kopyala
cp env.example .env
# Güçlü rastgele parolaları otomatik üret (Prosody bileşenleri için)
./gen-passwords.sh
# Yapılandırma dizinlerini oluştur
mkdir -p ~/.jitsi-meet-cfg/{web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}
Şimdi .env dosyasını açıp aşağıdaki temel ayarları yapın. Bu blok, dosyanın en kritik satırlarını gösterir.
# Genel erişim alan adı
PUBLIC_URL=https://meet.sirketiniz.com
# Yerel yapılandırma dizini
CONFIG=~/.jitsi-meet-cfg
# Let's Encrypt otomatik sertifika
ENABLE_LETSENCRYPT=1
LETSENCRYPT_DOMAIN=meet.sirketiniz.com
[email protected]
# HTTP/HTTPS port eşlemesi
HTTP_PORT=80
HTTPS_PORT=443
# Videobridge medya portu ve genel IP
JVB_PORT=10000
DOCKER_HOST_ADDRESS=203.0.113.45
# Saat dilimi
TZ=Europe/Istanbul
Ayarları tamamladıktan sonra yığını ayağa kaldırın. İlk çalıştırmada Docker imajları indirilir ve Let's Encrypt sertifikası üretilir; bu birkaç dakika sürebilir.
# Konteynerleri arka planda başlat
docker compose up -d
# Logları izleyerek sertifika üretimini doğrula
docker compose logs -f web
Her şey yolundaysa artık https://meet.sirketiniz.com adresine tarayıcıdan gidip bir oda adı yazarak ilk toplantınızı başlatabilirsiniz. Sunucunuzun genel yönetimi ve bakım disiplini konusunda destek isterseniz sunucu yönetimi ekibimiz güncelleme, izleme ve olay müdahalesini üstlenebilir.
TURN Sunucusu ve NAT Ayarları#
Kurulumun en sık atlanan ama en çok soruna yol açan kısmı budur. WebRTC, katılımcılar arasında en verimli medya yolunu bulmaya çalışır. Ancak katılımcılar kurumsal güvenlik duvarları, mobil operatör NAT'ları ya da kısıtlı ofis ağları arkasında olduğunda doğrudan UDP bağlantısı kurulamaz. İşte bu durumda TURN sunucusu devreye girer: medyayı, ulaşılabilir bir aracı üzerinden geçirir. TURN olmadan, "bağlandım ama karşı tarafı göremiyorum/duyamıyorum" tipi arızalar yaşarsınız.
Docker Jitsi yığını, coturn konteynerini içerir ve .env dosyasından etkinleştirilir. Kritik olan, TURN'ün hem UDP hem de 443 üzerinden TLS ile erişilebilir olmasıdır; çünkü katı güvenlik duvarları yalnızca 443 portuna izin verir.
# Yerleşik coturn'ü etkinleştir
TURN_CREDENTIALS=uzun-rastgele-bir-sir-anahtari
TURNS_HOST=meet.sirketiniz.com
TURN_PORT=3478
TURNS_PORT=5349
# Katı ağlar için 443 üzerinden TCP geri dönüşü açık kalmalı
ENABLE_COLIBRI_WEBSOCKET=1
Eğer sunucunuz bir bulut sağlayıcıda çalışıyorsa ve arkasında NAT varsa (yani makinenin gördüğü yerel IP ile dışarıdan görünen genel IP farklıysa), Videobridge'e her ikisini de bildirmeniz gerekir. Bu, "harici bir katılımcı odaya giriyor ama medya akmıyor" sorununun bir numaralı çözümüdür.
# Videobridge'in yerel ve genel adresini eşle
JVB_ADVERTISE_IPS=203.0.113.45
DOCKER_HOST_ADDRESS=203.0.113.45
Ağın kalabalık olduğu kurumsal ortamlarda TURN trafiğini bir güvenlik katmanının arkasına almak isteyebilirsiniz. Sunucunuza gelen istekleri filtrelemek ve saldırı yüzeyini daraltmak için WAF ve DDoS koruma hizmetlerimiz, halka açık bir konferans sunucusunda gönül rahatlığı sağlar. Değişiklikten sonra docker compose restart ile servisleri yeniden başlatmayı ve farklı bir ağdan (örneğin mobil veri) test etmeyi unutmayın.
Oda Güvenliği, Şifreleme ve Kayıt#
Varsayılan Jitsi kurulumunda oda adını bilen herkes içeri girebilir. Üretim ortamında bunu mutlaka sıkılaştırmanız gerekir. Üç temel güvenlik katmanı vardır: oda şifresi, lobi (bekleme odası) ve kimlik doğrulamalı oda oluşturma.
Oda şifresi en basit yöntemdir; toplantı sahibi arayüzden bir parola belirler, girmek isteyen herkes bu parolayı yazmak zorundadır. Lobi özelliği ise daha kontrollü bir akış sunar: katılımcılar bir bekleme odasında tutulur, ev sahibi tek tek onaylayana kadar toplantıya alınmazlar. Kurumsal görüşmeler için lobiyi varsayılan açmanızı öneririm.
Daha güçlü bir kısıtlama için güvenli oda (secure domain) yapılandırmasını kullanabilirsiniz; bu modda yalnızca kimliği doğrulanmış kullanıcılar yeni oda açabilir, diğerleri sadece davet edildikleri odaya katılabilir.
# Prosody içinde bir toplantı sahibi hesabı oluştur
docker compose exec prosody prosodyctl --config /config/prosody.cfg.lua \
register moderator meet.jitsi guclu-bir-parola
Uçtan uca şifreleme (E2EE) Jitsi'nin öne çıkan özelliklerindendir. Etkinleştirildiğinde, medya akışları sunucuda bile çözülemez; yalnızca odadaki katılımcıların tarayıcıları anahtara sahiptir. Bunu toplantı sırasında güvenlik menüsünden açabilirsiniz. Sinyalleşme trafiği zaten TLS ile korunur, E2EE ise medyanın kendisini korur; ikisi birlikte "sunucuyu ele geçiren biri bile toplantıyı dinleyemesin" seviyesini sağlar.
Kayıt (recording) özelliği için Jitsi, Jibri adında ayrı bir bileşen kullanır. Jibri, sanal bir tarayıcı oturumu açar, toplantıyı görüntüsel olarak izler ve ekranı bir video dosyasına kaydeder. Kaynak tüketimi yüksektir; her eşzamanlı kayıt için ayrı bir Chrome örneği çalıştığından, yoğun kayıt yapacaksanız Jibri'yi ayrı bir sunucuda barındırmanız akıllıca olur.
# docker-compose.yml içine Jibri servisini ekleyin (özet)
services:
jibri:
image: jitsi/jibri:stable
restart: unless-stopped
volumes:
- ${CONFIG}/jibri:/config:Z
- /dev/shm:/dev/shm
cap_add:
- SYS_ADMIN
environment:
- ENABLE_RECORDING=1
- JIBRI_RECORDING_DIR=/config/recordings
Kayıtları sakladığınız disk hızla dolabileceğinden, düzenli bir yedekleme politikası kurun ve eski kayıtları arşivleyin. Toplantı kayıtları çoğu zaman hassas veri içerdiği için, bunları şifreli bir depolamada tutmayı ve erişimi sınırlamayı ihmal etmeyin.
Ölçekleme ve Performans İpuçları#
Tek bir sunucu, tipik olarak birkaç yüz eşzamanlı katılımcıya kadar rahat hizmet verir. Bunun ötesine geçtiğinizde darboğaz her zaman Videobridge (JVB) olacaktır. İyi haber şu ki JVB yatay ölçeklenebilir: aynı Jicofo'ya birden fazla JVB bağlayarak yükü dağıtabilirsiniz. Böylece odalar farklı köprülere yayılır ve toplam kapasite katlanır.
Performansı korumak için birkaç pratik ipucu: Öncelikle her katılımcı için son kod çözme (last-N) sınırı belirleyin; büyük odalarda herkesin herkesin videosunu almasını engelleyerek bant genişliğini korursunuz. İkincisi, ses odaklı toplantılarda video kalitesini adaptif bırakın; Jitsi ağ koşullarına göre çözünürlüğü otomatik düşürür. Üçüncüsü, sunucunun yükleme trafiğini gerçek zamanlı izleyin.
# JVB istatistiklerini ve aktif konferans sayısını izle
curl -s http://localhost:8080/colibri/stats | python3 -m json.tool
# Sistemin anlık ağ ve CPU yükünü gör
docker stats
Uzun vadede sağlıklı bir kurulum için izleme ve uyarı sistemi şarttır; sunucu yükünü, disk doluluğunu ve servis ayaktalığını takip eden bir gözlem katmanı kurmanızı öneririm. Kurumsal görünürlük için markanızı ve arama motoru varlığınızı da güçlendirmek isterseniz SEO tarafını ayrıca değerlendirebilirsiniz; ancak öncelik her zaman kararlı ve hızlı bir altyapıdır.
Sıkça Sorulan Sorular#
Jitsi Meet gerçekten ücretsiz mi?#
Evet, Jitsi Meet Apache 2.0 lisansıyla dağıtılan tamamen açık kaynaklı ve ücretsiz bir yazılımdır. Yazılımın kendisi için hiçbir lisans bedeli ödemezsiniz. Tek maliyetiniz, onu barındıracağınız sunucu ve tükettiğiniz bant genişliğidir. Yani kullanıcı başına aylık abonelik ödemek yerine, sabit bir sunucu ücretiyle sınırsız toplantı yapabilirsiniz.
Katılımcıların hesap açması veya uygulama indirmesi gerekiyor mu?#
Hayır, Jitsi Meet'in en güçlü yanı budur. Katılımcılar sadece kendilerine gönderdiğiniz toplantı bağlantısına tıklar ve modern bir tarayıcıda (Chrome, Firefox, Edge, Safari) doğrudan toplantıya katılır. Hesap oluşturma, giriş yapma veya masaüstü uygulaması kurma zorunluluğu yoktur. Mobilde daha iyi bir deneyim için isteğe bağlı bir uygulama mevcuttur ama tarayıcıdan katılmak da her zaman mümkündür.
Kaç kişi aynı anda toplantıya katılabilir?#
Bu tamamen sunucunuzun donanımına ve yükleme bant genişliğine bağlıdır. İyi yapılandırılmış tek bir sunucu, birkaç yüz eşzamanlı katılımcıya kadar hizmet verebilir. Sınır, işlemci gücünden çok yükleme hızıdır çünkü sunucu her katılımcının akışını diğerlerine iletir. Daha büyük ölçekler için birden fazla Videobridge ekleyerek kapasiteyi yatay olarak artırabilirsiniz.
TURN sunucusu kurmak zorunda mıyım?#
Küçük bir grup aynı ağ koşullarındaysa TURN olmadan da çalışabilir, ancak üretim ortamı için kesinlikle öneririm. Katılımcılarınız kurumsal güvenlik duvarları, kısıtlı ofis ağları veya mobil operatör NAT'ları arkasında olduğunda doğrudan bağlantı kurulamaz. TURN sunucusu bu durumda medyayı aracı üzerinden geçirerek "bağlanıyorum ama göremiyorum" sorununu ortadan kaldırır. Docker kurulumundaki yerleşik coturn ile bu iş oldukça kolaydır.
Toplantı kayıtları nereye kaydedilir ve güvenli mi?#
Kayıtlar, Jibri bileşeni aracılığıyla doğrudan sizin sunucunuzun diskine kaydedilir; hiçbir üçüncü taraf bulutuna gitmez. Bu, veri egemenliği açısından büyük avantajdır ancak sorumluluğu da size yükler. Kayıtlar hassas veri içerebileceği için şifreli bir depolama kullanmanızı, erişimi sınırlamanızı ve düzenli bir yedekleme politikası uygulamanızı öneririm. Disk hızla dolabileceğinden eski kayıtları arşivlemeyi de unutmayın.
Jitsi kurulumunu kendim yapmak istemezsem ne yapabilirim?#
Docker ile kurulum oldukça standart olsa da sunucu güncellemesi, TLS yenileme, izleme ve olay müdahalesi gibi işletme sorumlulukları zamanla yorucu olabilir. Bu yükü taşımak istemezseniz, sunucu tarafını yönetilen bir hizmete devredebilirsiniz. Sunucu yönetimi ekibimiz kurulum, sıkılaştırma ve bakımı üstlenir; siz yalnızca toplantılarınıza odaklanırsınız. Böylece açık kaynağın özgürlüğünü, yönetilen hizmetin rahatlığıyla birleştirmiş olursunuz.
Kapanış#
Jitsi Meet, görüntülü konferansta bağımsızlık ve mahremiyet isteyen herkes için olgun, kanıtlanmış bir çözümdür. Hesapsız ve uygulamasız tarayıcı deneyimi, uçtan uca şifreleme, kendi diskinize kayıt ve tam marka kontrolü gibi özelliklerle ticari alternatiflerin yerini büyük ölçüde tutar; üstelik kullanıcı başı abonelik yerine sabit bir sunucu maliyetiyle. Bu rehberde Docker kurulumundan TURN yapılandırmasına, oda güvenliğinden kayda kadar üretime hazır bir kurulumun tüm adımlarını ele aldık.
Kendi görüntülü konferans altyapınızı bugün kurmaya başlayabilirsiniz. Performanslı ve genel IP'li bir başlangıç için VDS sunucu veya sanal sunucu paketlerimizi inceleyin, alan adı ve SSL sertifikası ile temiz bir bağlantı oluşturun. Kurulum ve bakım yükünü bize bırakmak isterseniz sunucu yönetimi hizmetimiz devrede; benzer self-hosted uygulamaları keşfetmek için App Center ve Bilgi Merkezi kaynaklarımıza göz atabilirsiniz. Sorularınız için ekibimiz her zaman bir tık uzağınızda.