Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

Jitsi Meet — self-hosted wideokonferencje na VPS

Opublikowano: 10 kwietnia 2026 · Kategoria: VPS

Zoom, Google Meet i Teams to wygodne narzędzia, ale dane z rozmów trafiają na serwery zewnętrznych firm. Jitsi Meet to open-source alternatywa, którą możesz uruchomić na własnym VPS — bez opłat za licencje i z pełną kontrolą nad danymi. Instalacja jest zaskakująco prosta dzięki oficjalnemu skryptowi. Wyzwaniem jest konfiguracja sieci: TURN server (coturn) dla użytkowników za NAT i firmowymi firewallami, skalowanie Jitsi Videobridge (JVB) dla dużych konferencji i uwierzytelnianie JWT dla kontrolowanego dostępu.

Instalacja Jitsi Meet — quick install

Oficjalny pakiet Jitsi dla Debian/Ubuntu instaluje wszystkie komponenty przez apt: Prosody (XMPP server), Jicofo (conference focus), Jitsi Videobridge (JVB) i nginx. Wymagana jest domena z rekordem A wskazującym na VPS:

# Ubuntu 22.04 / Debian 12 - wymagana pelna domena (nie IP)
# Przed instalacja: DNS A record meet.example.com → twoje_IP

# Dodaj repo Jitsi
curl https://download.jitsi.org/jitsi-key.gpg.key | \
  sudo gpg --dearmor -o /usr/share/keyrings/jitsi.gpg
echo "deb [signed-by=/usr/share/keyrings/jitsi.gpg] https://download.jitsi.org stable/" | \
  sudo tee /etc/apt/sources.list.d/jitsi-stable.list

# Upewnij sie ze certbot jest zainstalowany
sudo apt update && sudo apt install -y certbot

# Instaluj Jitsi (interaktywny installer pyta o domene i certyfikat)
sudo apt install -y jitsi-meet

# Podczas instalacji:
# 1. Podaj domene: meet.example.com
# 2. Wybierz certyfikat: Let's Encrypt (automatyczny) lub własny

# Generuj certifikat Let's Encrypt jezeli nie zrobiłes tego w instalatorze
sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

# Sprawdz status usług
sudo systemctl status prosody jicofo jitsi-videobridge2 nginx

TURN server — coturn dla połączeń za NAT

TURN server (Traversal Using Relays around NAT) jest konieczny dla użytkowników za korporacyjnymi firewallami blokującymi UDP. Coturn to standardowa implementacja serwera STUN/TURN. Jitsi automatycznie konfiguruje go jeśli jest zainstalowany na tym samym serwerze:

# Instaluj coturn
sudo apt install -y coturn

# Edytuj /etc/default/coturn
TURNSERVER_ENABLED=1

# Konfiguracja /etc/turnserver.conf
listening-port=3478
tls-listening-port=5349
listening-ip=0.0.0.0
external-ip=TWOJE_PUBLICZNE_IP
relay-ip=TWOJE_PUBLICZNE_IP
realm=meet.example.com
server-name=meet.example.com
use-auth-secret
static-auth-secret=LOSOWY_KLUCZ_32_ZNAKI
cert=/etc/letsencrypt/live/meet.example.com/fullchain.pem
pkey=/etc/letsencrypt/live/meet.example.com/privkey.pem
log-file=/var/log/turnserver/turnserver.log
min-port=49152
max-port=65535

# Uruchom coturn
sudo systemctl enable --now coturn

# Konfiguruj Jitsi - /etc/jitsi/meet/meet.example.com-config.js
p2p: {
  enabled: true,
  stunServers: [
    { urls: 'stun:meet.example.com:3478' }
  ]
},
iceServers: [
  {
    urls: ['turn:meet.example.com:3478?transport=udp'],
    username: 'AUTOGENEROWANE_PRZEZ_JITSI',
    credential: 'AUTOGENEROWANE_PRZEZ_JITSI'
  }
]

JWT authentication — kontrola dostępu do pokojów

Domyślnie każdy może wejść do dowolnego pokoju wpisując URL. JWT authentication pozwala wymagać ważnego tokenu — wygenerowanego przez Twoją aplikację — do dołączenia do konferencji:

# /etc/prosody/conf.avail/meet.example.com.cfg.lua
VirtualHost "meet.example.com"
  authentication = "token"
  app_id = "moja_aplikacja"
  app_secret = "TAJNY_KLUCZ_JWT"
  allow_empty_token = false

# Zrestartuj Prosody
sudo systemctl restart prosody

# Generowanie tokenu JWT w Node.js
const jwt = require('jsonwebtoken');

const payload = {
  context: {
    user: {
      name: "Jan Kowalski",
      email: "[email protected]",
    },
  },
  aud: "jitsi",
  iss: "moja_aplikacja",
  sub: "meet.example.com",
  room: "nazwaPokooju",     // "*" = dostep do wszystkich pokojow
  exp: Math.floor(Date.now() / 1000) + 3600,
};

const token = jwt.sign(payload, 'TAJNY_KLUCZ_JWT');
const meetURL = `https://meet.example.com/nazwaPokooju?jwt=${token}`;
console.log(meetURL);

Skalowanie — konfiguracja Jitsi Videobridge

Przy dużych konferencjach (20+ uczestników) jeden JVB może być wąskim gardłem. Jitsi obsługuje wiele instancji JVB na różnych serwerach — ruch video jest rozdzielany między nie przez Jicofo:

Funkcja Jitsi Meet (self-hosted) Zoom Google Meet
Cena Koszt VPS (~20–100 PLN/msc) Od 0 (limit 40 min) / 54 PLN/msc Od 0 (Google Workspace)
Kontrola danych Pełna — Twój serwer Dane u Zoom (USA) Dane u Google
Maks. uczestników Zależy od VPS (ok. 50/serwer) 100–1000 (plan) 100–1000 (Workspace)
Nagrywanie Jibri (skomplikowane) Wbudowane Wbudowane
Wymagania techniczne VPS + konfiguracja Konto Google account

Najczęstsze pytania

Jakie wymagania sprzętowe ma Jitsi Meet na VPS? +
Minimalne wymagania zależą od liczby uczestników: do 10 osób — 2 vCPU i 2 GB RAM. Do 20 osób — 4 vCPU i 4 GB RAM. Do 50 osób — 8 vCPU i 8 GB RAM. Jitsi domyślnie używa peer-to-peer dla 2 uczestników i przełącza na SFU (Jitsi Videobridge) przy 3+. Kluczowe jest łącze: każdy uczestnik HD wideo to ok. 2–3 Mbps upload po stronie serwera. Zalecane jest minimum 100 Mbps dedykowany port.
Dlaczego Jitsi nie działa za NAT i jak to naprawić? +
Jitsi Videobridge używa protokołu ICE do negocjacji mediów. Za NAT (np. VPS z prywatnym IP za load balancerem) JVB nie wie jaki jest jego publiczny adres IP. Rozwiązanie: (1) ustaw NAT_PUBLIC_IP w konfiguracji JVB, (2) zainstaluj coturn (TURN server) i skonfiguruj Jitsi do używania go jako relay. Coturn obsługuje UDP port 3478 i TCP 443 jako fallback. Bez TURN server połączenia często się nie nawiązują z sieci za firmowym firewallem.
Jak włączyć uwierzytelnianie JWT w Jitsi Meet? +
JWT authentication w Jitsi pozwala kontrolować dostęp do pokojów przez zewnętrzny system (np. własna aplikacja). Konfiguracja: w /etc/prosody/conf.avail/[domena].cfg.lua ustaw authentication=token i podaj app_id, app_secret. Twoja aplikacja generuje token JWT z claimami (room, sub=app_id, iss=app_id, exp). Link do konferencji zawiera JWT: https://meet.example.com/pokoj?jwt=TOKEN. Bez ważnego tokenu użytkownik jest odrzucany.
Czym Jitsi różni się od Zoom i Google Meet? +
Jitsi Meet to open-source rozwiązanie self-hosted: Twoje rozmowy są na Twoim serwerze, bez danych u third-party. Zoom i Google Meet to managed cloud services z prostszą obsługą i lepszą skalowalnością, ale z opłatami i brakiem kontroli nad danymi. Jitsi sprawdza się dla firm wymagających RODO-compliance i małych/średnich grup. Dla 100+ uczestników Zoom/Meet jest prostszy i tańszy w utrzymaniu. Jitsi Meet jest darmowy — płacisz tylko za VPS.
Jak nagrywać spotkania w Jitsi Meet? +
Nagrywanie w Jitsi realizuje Jibri (Jitsi Broadcasting Infrastructure) — serwis uruchamiający Chrome w trybie headless i nagrywający wideo. Jibri wymaga osobnej maszyny (lub VM) z min. 4 GB RAM i GPU/CPU do enkodowania. Nagrywa do pliku lokalnego lub streamuje do YouTube/Twitch. Konfiguracja jest skomplikowana — Jibri musi być zarejestrowany w Prosody i połączony z JVB. Alternatywa: nagrywanie po stronie klienta przez przeglądarkę (Ctrl+R w Electron app).

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.