# 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.

Zorluk: Orta\
Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13

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.

> **Not**
>
> Jitsi el kitabı Debian/Ubuntu paketleriyle kurulumu da belgeler. O yolda eski secure-domain girişi artık kullanımdan kaldırılmış olarak işaretlidir ve belgelenen yerine geçen yöntem Keycloak üzerinden token kimlik doğrulamasıdır. Burada kullanılan Docker kurulumunda yerleşik kullanıcı girişi bulunur; bu da onu tek sunucu için daha basit bir seçim yapar.

## Ö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](/guides/install-docker-ubuntu) veya [Debian'a Docker kurulumu](/guides/install-docker-debian) rehberine bakın.
- `sudo` yetkisi olan, root olmayan bir kullanıcı ([Yeni bir Linux sunucusunu güvenli hale getirin](/guides/secure-a-new-linux-server)).
- Sunucunun genel IP adresini gösteren bir A kaydına (IPv6 kullanıyorsanız AAAA kaydına) sahip `meet.example.com` gibi 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.

```bash
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 verbose
```

Docker 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:

```bash
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)
ls
```

Dosya, 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:

```bash
unzip -q stable-*
mv jitsi-docker-jitsi-meet-* meet
cd meet
```

## Adı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:

```bash
cp env.example .env
./gen-passwords.sh
chmod 600 .env
grep -c "PASSWORD=." .env
```

Son 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:

```env
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=admin@example.com
ENABLE_AUTH=1
ENABLE_GUESTS=1
AUTH_TYPE=internal
```

Bu ayarların görevi:

- `HTTP_PORT` ve `HTTPS_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=internal` ile birlikte `ENABLE_AUTH=1`, oda oluşturulmadan önce Jitsi'nin kullanıcı adı ve parola istemesini sağlar; `ENABLE_GUESTS=1` davet edilen kişilerin hesap olmadan katılmasına yine izin verir.
- `TZ` loglar için saat dilimini belirler; `UTC` yerine kendi bölgenizi yazın, örneğin `Europe/Istanbul`.

> **İpucu**
>
> Let's Encrypt, isteyebileceğiniz sertifika sayısını sınırlar. DNS henüz hazır değilse ilk başlatmayı `ENABLE_LETSENCRYPT` satırı yorumdayken yapın, diğer her şeyin çalıştığını kontrol edin, sonra etkinleştirin.

## 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:

```bash
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:

```bash
docker compose up -d
docker compose ps
docker compose logs -f web
```

Dö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:

```bash
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/meet` içindeki `.env` dosyası (alan adı ayarları ve üretilen servis parolaları),
- `~/.jitsi-meet-cfg` yapı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:

```bash
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 -d
```

Yeni 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.

```bash
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 -d
```

`stable-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](/guides/install-mattermost) veya [Matrix Synapse ve Element](/guides/install-matrix-synapse) ile bir ekip sohbeti ekleyin.
- Burada kullanılan Compose komutlarını [Docker Compose temelleri](/guides/docker-compose-basics) rehberinde öğrenin.
- TURN, ek videobridge'lerle ölçekleme ve kayıt için resmi [Jitsi el kitabını](https://jitsi.github.io/handbook/docs/devops-guide/) okuyun.
- Video toplantılar için sunucuları [Jitsi hosting](/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.

---

Kaynak: <https://hyperdc.com/tr/guides/tutorials/install-jitsi-meet>\
Son güncelleme: 2026-10-09
