Jitsi Meet Docker ve Let's Encrypt ile nasıl kurulur
Kendi Jitsi Meet video konferans sunucunuzu resmi Docker kurulumu ve Let's Encrypt sertifikasıyla çalıştırın; oda açmayı yalnızca kullanıcılarınıza bırakın.
- Orta
- 40 dk okuma
- Güncellendi
Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13
Bu sayfada
- Ön koşullar
- Adım 1 — Güvenlik duvarı portlarını açın
- Adım 2 — En son sürümü indirin
- Adım 3 — .env dosyasını oluşturun ve parolaları üretin
- Adım 4 — Alan adını, HTTPS'i ve girişleri ayarlayın
- Adım 5 — Yapılandırma klasörlerini oluşturun ve Jitsi'yi başlatın
- Adım 6 — Kullanıcı hesaplarını oluşturun
- Adım 7 — Bir toplantıyı test edin
- Yedekleme ve geri yükleme
- Jitsi Meet güncelleme
- Sorun giderme
- İki kişiyle görüşme çalışıyor ama üç kişide ses ya da görüntü yok
- Sertifika alınamıyor
- Güncellemeden sonra bir konteyner sürekli yeniden başlıyor
- Herkes giriş yapmadan hâlâ oda açabiliyor
- 80 veya 443 numaralı port zaten kullanımda
- Sonraki adımlar
Jitsi Meet; tarayıcıda ve Jitsi mobil uygulamalarında çalışan açık kaynaklı bir video konferans platformudur. Kendi sunucunuzu çalıştırmak toplantı trafiğini sizin denetlediğiniz altyapıda tutar ve kimlerin oda açabileceğine sizin karar vermenizi sağlar. Bu rehber Jitsi Meet'i projenin resmi docker-jitsi-meet sürümüyle Ubuntu veya Debian üzerine kurar, Let's Encrypt'ten sertifika alır, toplantı başlatmak için giriş zorunlu kılar ve sunucuyu nasıl yedekleyeceğinizi, güncelleyeceğinizi ve sorunlarını nasıl gidereceğinizi gösterir.
Ön koşullar
- Docker Engine ve Compose eklentisi kurulu, Ubuntu 24.04 veya 26.04 LTS ya da Debian 12 veya 13 çalıştıran bir sunucu: Ubuntu'ya Docker kurulumu veya Debian'a Docker kurulumu rehberine bakın.
sudoyetkisi olan, root olmayan bir kullanıcı (Yeni bir Linux sunucusunu güvenli hale getirin).- Sunucunun genel IP adresini gösteren bir A kaydına (IPv6 kullanıyorsanız AAAA kaydına) sahip
meet.example.comgibi bir alan adı. - Sunucuda boş 80 ve 443 numaralı portlar. Bu rehberde HTTPS'i Jitsi web konteynerinin kendisi sunar; aynı makinede başka bir web sunucusu çalıştırmayın.
Jitsi el kitabındaki boyutlandırma önerileri:
| Kaynak | En düşük (resmi) | Önerilen başlangıç |
|---|---|---|
| CPU | Temel bir sunucu için 4 ayrılmış çekirdek | 4 veya daha fazla ayrılmış çekirdek; paylaşımlı CPU'dan kaçının |
| RAM | Test veya çok küçük toplantılar için 2 GB, küçük toplantılar için 4 GB | El kitabının genel önerisi olan 8 GB |
| Disk | Yaklaşık 20 GB | 20 GB ve loglar için ek alan |
| Ağ | Arkadaş grupları veya küçük bir kuruluş için yaklaşık 1 Gbit/s çoğu zaman yeterli | Güvenmeden önce gerçek hızı ve gecikmeyi ölçün |
Video bant genişliği hızla toplanır: el kitabı akış başına 360p'de yaklaşık 500 kbit/s, 720p'de yaklaşık 2,5 Mbit/s verir.
Adım 1 — Güvenlik duvarı portlarını açın
Jitsi, web uygulaması için HTTPS'e ve ses ile görüntü için UDP 10000 portuna ihtiyaç duyar. 80 numaralı port Let's Encrypt doğrulaması için kullanılır.
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp
sudo ufw enable
sudo ufw status verboseDocker bu konteyner portlarını kendisi yayınlar ve bunlar için ufw'ye bağlı değildir; yine de kuralları açıkça yazmak, sunucunun neyi dışarı açması gerektiğini belgelemiş olur.
Adım 2 — En son sürümü indirin
El kitabı, sürüm birbiriyle uyumlu imaj sürümlerini sabitlediği için depoyu klonlamak yerine sürüm arşivini kullanmanızı ister. Bir çalışma klasörü oluşturun ve en son sürüm arşivini GitHub'dan indirin:
sudo apt install wget unzip
sudo mkdir -p /opt/jitsi
sudo chown $USER:$USER /opt/jitsi
cd /opt/jitsi
wget $(wget -q -O - https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/latest | grep zip | cut -d\" -f4)
lsDosya, sürüm etiketinin adını taşır; örneğin stable- ve ardından bir sayı. Arşivi açın ve Compose proje adının güncellemeler boyunca aynı kalması için klasöre sabit bir ad verin:
unzip -q stable-*
mv jitsi-docker-jitsi-meet-* meet
cd meetAdım 3 — .env dosyasını oluşturun ve parolaları üretin
Örnek yapılandırmayı kopyalayın ve dahili servis hesaplarına rastgele parolaları ekteki betiğin yazmasına izin verin:
cp env.example .env
./gen-passwords.sh
chmod 600 .env
grep -c "PASSWORD=." .envSon komut artık değeri olan parola satırlarını sayar; sonuç sıfırdan büyük olmalıdır.
Adım 4 — Alan adını, HTTPS'i ve girişleri ayarlayın
.env dosyasını bir düzenleyiciyle açın (nano .env) ve aşağıdaki değerleri ayarlayın. Bazı satırlar zaten vardır; diğerleri # ile yorum satırı yapılmıştır ve başındaki işaret kaldırılmalıdır:
HTTP_PORT=80
HTTPS_PORT=443
TZ=UTC
PUBLIC_URL=https://meet.example.com
JVB_ADVERTISE_IPS=203.0.113.10
ENABLE_LETSENCRYPT=1
LETSENCRYPT_DOMAIN=meet.example.com
LETSENCRYPT_EMAIL[email protected]
ENABLE_AUTH=1
ENABLE_GUESTS=1
AUTH_TYPE=internalBu ayarların görevi:
HTTP_PORTveHTTPS_PORT, web konteynerini Let's Encrypt'in gerektirdiği standart portlarda yayınlar.PUBLIC_URL, kullanıcıların açtığı gerçek adres olmalıdır.JVB_ADVERTISE_IPS, videobridge'e istemcilere hangi genel IP'yi bildireceğini söyler. Docker içinde köprü NAT arkasındadır ve bu ayar olmadan üç veya daha fazla kişili görüşmelerde çoğu zaman ses ya da görüntü olmaz. Sunucunuzun genel IPv4 adresini yazın.AUTH_TYPE=internalile birlikteENABLE_AUTH=1, oda oluşturulmadan önce Jitsi'nin kullanıcı adı ve parola istemesini sağlar;ENABLE_GUESTS=1davet edilen kişilerin hesap olmadan katılmasına yine izin verir.TZloglar için saat dilimini belirler;UTCyerine kendi bölgenizi yazın, örneğinEurope/Istanbul.
Adım 5 — Yapılandırma klasörlerini oluşturun ve Jitsi'yi başlatın
Konteynerler UID/GID 1000 olarak çalışır ve yapılandırma klasörleri eksikse ya da yazılabilir değilse başlamayı reddeder. Klasörleri el kitabında gösterildiği gibi oluşturun:
mkdir -p ~/.jitsi-meet-cfg/{web,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri,transcriber}
mkdir -p ~/.jitsi-meet-cfg/storage/{jibri,prosody,transcripts,web}
mkdir -p ~/.jitsi-meet-cfg/tmp/{web-crontabs,web-load-test}
chmod 777 ~/.jitsi-meet-cfg/storage/{jibri,prosody,transcripts,web}
chmod 777 ~/.jitsi-meet-cfg/tmp/{web-crontabs,web-load-test}Yığını başlatın ve web konteynerinin sertifika istemesini izleyin:
docker compose up -d
docker compose ps
docker compose logs -f webDört temel servisin (web, prosody, jicofo, jvb) tamamı çalışıyor görünmelidir. Sertifika alındıktan sonra log izlemeyi Ctrl+C ile bırakın.
Adım 6 — Kullanıcı hesaplarını oluşturun
Kullanıcılar Prosody konteynerinde tutulur. Toplantı başlatabilecek her kişi için bir hesap oluşturun; meet.jitsi genel alan adınız değil, Docker kurulumunun dahili XMPP alan adıdır:
docker compose exec prosody prosodyctl --config /run/prosody/config/prosody.cfg.lua register alice meet.jitsi 'a-long-unique-password'Komut başarılı olduğunda hiçbir şey yazmaz. Bir hesabı silmek için aynı komutu register yerine unregister alice meet.jitsi ile çalıştırın.
Adım 7 — Bir toplantıyı test edin
Tarayıcıda https://meet.example.com adresini açın. Sertifika geçerli olmalıdır (uyarısız bir kilit simgesi). Bir oda adı girip Start meeting düğmesine tıklayın; Jitsi sizden ev sahibi olarak giriş yapmanızı ister. Adım 6'daki hesabı kullanın.
Ardından aynı odaya mobil veri kullanan bir telefondan ve üçüncü bir cihazdan katılın. Gerçek test üç katılımcılı görüşmedir; çünkü tüm medyanın UDP 10000 portu üzerinden videobridge'den geçtiği ilk durum budur.
Yedekleme ve geri yükleme
İmajlarda olmayan her şey iki yerde durur:
/opt/jitsi/meetiçindeki.envdosyası (alan adı ayarları ve üretilen servis parolaları),~/.jitsi-meet-cfgyapılandırma klasörü (üretilen yapılandırma, sertifikalar ve Prosody kullanıcı veritabanı).
Yığın durmuşken ikisinin tarihli bir arşivini oluşturun:
cd /opt/jitsi/meet
docker compose down
sudo mkdir -p /opt/backups
sudo tar czf /opt/backups/jitsi-$(date +%F).tar.gz -C / opt/jitsi/meet/.env -C $HOME .jitsi-meet-cfg
docker compose up -dYeni bir sunucuya geri yüklemek için Docker'ı kurun, aynı sürümü indirin (Adım 2), arşivi .env dosyası /opt/jitsi/meet içine ve .jitsi-meet-cfg yönetici kullanıcının ev dizinine dönecek şekilde açın ve docker compose up -d çalıştırın. Yedekleri sunucunun dışına da kopyalayın.
Jitsi Meet güncelleme
Her docker-jitsi-meet sürümü test edilmiş bir imaj sürümü setini sabitler; bu nedenle güncellemek yeni sürüm klasörüne geçmek demektir. Önce GitHub'daki sürüm notlarını okuyun ve yedek alın.
cd /opt/jitsi
wget $(wget -q -O - https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/latest | grep zip | cut -d\" -f4)
unzip -q -o stable-NEW_NUMBER
cp meet/.env jitsi-docker-jitsi-meet-*/.env
cd meet
docker compose down
cd ..
mv meet meet-previous
mv jitsi-docker-jitsi-meet-* meet
cd meet
docker compose pull
docker compose up -dstable-NEW_NUMBER yerine az önce indirdiğiniz dosyanın adını yazın. Yeni env.example dosyasını kendi .env dosyanızla karşılaştırın ve istediğiniz yeni ayarları aktarın. El kitabına göre stable-11146 sürümünden eski bir sürümden geliyorsanız yapılandırma klasörünüzü korursunuz, ancak başlatmadan önce Adım 5'teki yeni storage ve tmp klasörlerini oluşturmanız gerekir. Yeni sürüm çalıştıktan sonra meet-previous klasörünü silin.
Sorun giderme
İki kişiyle görüşme çalışıyor ama üç kişide ses ya da görüntü yok
İki kişilik görüşmeler eşler arası çalışabilir; üç ve daha fazla kişi her zaman videobridge üzerinden geçer. Yol üzerindeki her güvenlik duvarında UDP 10000 portunun açık olduğunu ve JVB_ADVERTISE_IPS değerinin sunucunun genel IP'sini içerdiğini kontrol edin. .env dosyasını değiştirdikten sonra konteynerleri yeniden oluşturmak için docker compose up -d çalıştırın.
Sertifika alınamıyor
docker compose logs web çalıştırın ve Let's Encrypt iletilerini okuyun. Olağan nedenler; henüz bu sunucuyu göstermeyen bir DNS kaydı, engellenmiş ya da başka bir program tarafından kullanılan 80 numaralı port veya tekrarlanan denemelerden sonra Let's Encrypt sınırına takılmaktır. Nedeni giderin ve docker compose restart web ile yeniden başlatın.
Güncellemeden sonra bir konteyner sürekli yeniden başlıyor
stable-11146 sürümünden bu yana konteynerler sıkılaştırılmıştır ve Adım 5'teki storage ve tmp klasörlerine orada gösterilen izinlerle ihtiyaç duyar. Klasörleri oluşturun, ardından docker compose up -d komutunu yeniden çalıştırıp docker compose logs çıktısını kontrol edin.
Herkes giriş yapmadan hâlâ oda açabiliyor
Kimlik doğrulama ayarları konteynerler oluşturulurken uygulanır. .env içinde ENABLE_AUTH=1 ve AUTH_TYPE=internal satırlarının yorumdan çıkarıldığından emin olun, ardından docker compose up -d --force-recreate çalıştırın.
80 veya 443 numaralı port zaten kullanımda
Sunucuda başka bir web sunucusu çalışıyor. Onu durdurun (sudo systemctl disable --now nginx veya caddy) ya da Jitsi'yi o proxy'nin arkasında çalıştırın: web konteynerini yerel portlarda tutun, ENABLE_LETSENCRYPT=0 ayarlayın ve alan adını WebSocket desteğiyle konteynerin HTTPS portuna yönlendirin.
Sonraki adımlar
- Toplantılarınızın yanına Mattermost veya Matrix Synapse ve Element ile bir ekip sohbeti ekleyin.
- Burada kullanılan Compose komutlarını Docker Compose temelleri rehberinde öğrenin.
- TURN, ek videobridge'lerle ölçekleme ve kayıt için resmi Jitsi el kitabını okuyun.
- Video toplantılar için sunucuları Jitsi hosting sayfasında karşılaştırın.
Sık sorulan sorular
Tek bir Jitsi sunucusu kaç katılımcıyı kaldırır?
Jitsi projesi sabit bir sayı vermez. Sonuç CPU'ya, bant genişliğine ve görüntü kalitesine bağlıdır: el kitabı akış başına yaklaşık 180p'de 200 kbit/s, 360p'de 500 kbit/s ve 720p'de 2,5 Mbit/s verir. Büyük toplantılar için Jitsi tek büyük bir sunucu yerine ek videobridge'ler eklemeyi önerir.
Misafirler hesap olmadan katılabilir mi?
Evet. ENABLE_AUTH=1 ve ENABLE_GUESTS=1 ile odayı yalnızca kayıtlı kullanıcılar başlatabilir; ev sahibi odaya girdikten sonra bağlantıya sahip herkes katılabilir.
Bu rehber neden Debian paketleri yerine Docker kullanıyor?
İkisi de resmidir. Paket kurulumunda basit secure-domain girişi Jitsi el kitabında kullanımdan kaldırılmış olarak işaretlidir ve belgelenen yerine geçen yöntem Keycloak ile token kimlik doğrulamasıdır. Docker kurulumunda yerleşik kullanıcı girişi (AUTH_TYPE=internal) vardır ve güncellemeler tek bir sürüm indirmesiyle yapılır.
Toplantıları kaydedebilir miyim?
Kayıt, Jibri adlı ayrı bir bileşenle yapılır. Eşzamanlı her kayıt, 1280x720 çözünürlükte en az 8 GB RAM'e sahip ayrı bir Jibri örneği gerektirir ve el kitabı Jibri'yi Jitsi Meet ile aynı sunucuda çalıştırmamanızı önerir.
Jitsi Meet'i mevcut Caddy veya Nginx'imin arkasında çalıştırabilir miyim?
Evet; ancak bu durumda web konteyneri 80 ve 443 numaralı portları almamalıdır. HTTP_PORT ve HTTPS_PORT değerlerini yerel portlarda bırakın, ENABLE_LETSENCRYPT'i kapatın ve alan adını WebSocket desteğiyle HTTPS portuna yönlendirin. 10000/udp portu yine doğrudan videobridge'e ulaşmalıdır.
Kaynaklar
- jitsi.github.io/handbook/docs/devops-guide/devops-guide-docker
- raw.githubusercontent.com/jitsi/handbook/master/docs/devops-guide/d…
- raw.githubusercontent.com/jitsi/docker-jitsi-meet/master/env.example
- jitsi.github.io/handbook/docs/devops-guide/devops-guide-requirements
- jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart
- jitsi.github.io/handbook/docs/devops-guide/secure-domain
- jitsi.github.io/handbook/docs/devops-guide/authentication