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 |