Článek navazuje na první díl představení videokonferenčního řešení Jitsi meet.
K instalaci obecně
Dokumentace vývojářů obsahuje „quickstart guide“ pro OS Ununtu 18.04, nicméně moje zkušenosti ukazují, že v detailech je třeba postupovat odlišně. Jisti meet pro svůj provoz potřebuje v zásadě webový server, xmpp server, Javu a přístup z internetu prostřednictvím protokolu https. V stručných bodech uvedu ke každému pár poznámek.
Webový server
Jitsi meet můžete provozovat na serveru Apache nebo Nginx, přičemž preferován a tedy nejvíce návodů najdete pro instalaci s Nginx. Pokud je někdo masochista a chce se samostatně trápit s odlaďováním na Apache, pak nemá smysl mu v tom bránit. V mém případě jsem sice www aplikace provozoval prostřednictvím Apache, ovšem pro instalaci Jitsi meet jsem raději nakonfiguroval Apache a Nginx v režimu revezní proxy. A tady první poznámka - v této konfiguraci jsem měl virt. domény na Apache nastaveny pro port 8080. Ovšem tento port využívá i Jitsi meet, čímž došlo ke konfliktu a chybovým hláškám v logu. Situaci jsem vyřešil tak, že Apache jsem nakonfiguroval pro poslech na jiném portu než 8080 a samozřejmě předávání na tento nový port ze strany Nginx. Bylo to rychlejší a jednodušší než přestavět konfiguraci Jitsi meet. Kdo používá na svém serveru pouze Nginx, nemusí tuto otázku řešit.
XMPP server
Jitsi meet potřebuje pro svůj běh xmpp server Prosody, který zajišťuje provoz chatu a přenos hlasu. V repozitářích distribuce Ubuntu 18.04 je server Prosody ve verzi 0.10. Tato verze ovšem nefunguje v aktuální verzi Jitsi meet korektně. Naštěstí vývojáři serveru Prosody obsluhují vlastní ppa repozitáře, kde pro verzi Ubuntu 18.04 najdete verzi Prosody 0.11. Je tedy nanejvýš vhodné nainstalovat tento ppa repozitář před samotnou instalací Jitsi meet.
Java
Jitsi meet je napsána v jazyku Java, proto musí být Java na serveru nainstalována.
A opět poznámka - pokud na serveru Java prostředí nemáte nainstalováno, v rámci závislostí si vše nainstaluje Jitsi meet. Potíž je v tom, že nainstaluje verzi „ibm-java“, která způsobuje na Ubuntu 18.04 nefunkčnost Jitsi meet - konkrétně po připojení k Jitsi meet uvidíte v kartě prohlížeče jen šedou plochu bez dalšího. V diskuzí na fóru k Jitsi se můžete dočíst, že vývojáři předpokládají instalaci OpenJDK. Je tedy nanejvýš vhodné nainstalovat Javu před samotnou instalací Jitsi meet.
K https a ip adrese
Pokud má být videokonferenční server dostupný z internetu, jsou v zásadě dvě možnosti.
- server bude mít přímo veřejnou ip adresu (což předpokládá níže popsaný návod instalace)
- server bude mít neveřejnou ip adresu a bude za NATem. I tuto možnost jsem zkoušel a mohu potvrdit, že Jitsi meet bez problému funguje i za NATem. Oproti instalaci na serveru s veřejnou ip adresou je ovšem doplnit dvě direktivy do konfiguračního souboru.
Pro oba případy však platí, tedy pokud chcete přistupovat k Jitsi meet z Androidu - viz. minulá část, že musíte být schopni získat certifikát Letʼs Encrypt, resp. musíte mít pod svoji kontrolou DNS záznamy pro doménové jméno, na kterém bude instalace Jitsi meet dostupná v internetu.
II - Instalace
Níže jsou popsány konkrétní kroky pro instalaci na serveru s OS Ubuntu 18.04.5_amd64 LTS, který je provozován na veřejné IP adrese.
Předpoklady:
- již je nainstalován server Nginx
- již jsou nakonfigurované DNS záznamy pro dostupnost instalace Jitsi meet z internetu, tak, aby šlo získat certifikát Letʼs encrypt.
- v popisu instalace je použita doména s názvem „vasedomena.cz“ a hostname „meet“, samozřejmě si obojí každý přizpůsobí svému existujícímu reálnému stavu.
Vlastní postup:
- Nakonfigurujeme hostname
- Nakonfigurujeme UFW
- Přidáme příslušné repozitáře
- Nainstalujeme závislosti
- Nainstalujeme samotné Jitsi meet
- poznámka ke konfiguraci za NAT
- Zkontrolujeme logy a odladíme chyby.
AD 1) Správná konfigurace hostname se ukázala jako klíčová. Jitsi meet operuje s dotazy na hostname jak při instalaci, tak během provozu. Je tedy nutné nastavit hostname tak, aby se po dotazu vždy vrátila správná odpověď. V popisu budu předpokládat hostname serveru „meet“, FQDN pak „meet.vasedomena.cz“. Samozřejmě si název patřičně upravte podle své skutečnosti.
Pozn. - pokud potřebujete, aby server byl dostupný i pod jiným názvem, pak je vhodné upravit soubor v /etc/hosts
např. tak, že onomu jinému názvu přiřadíte ip adresu serveru (lokální pokud je za NATem, veřejnou, pokud je přímo v Internetu).
Nastavení hostname:
sudo hostnamectl set-hostname meet
Kontrola nastavení:
hostname -f
Odpovědí by mělo být - meet.vasedomena.cz
Ještě ukázka možného nastavení souboru /etc/hosts
127.0.0.1 localhost 127.0.1.1 jinynazevserveru.vasedomena.cz jinynazevserveru # # IP adresu 1.2.3.4 přepiště skutečnou ip adresou serveru # 1.2.3.4 meet.vasedomena.cz meet
AD 2) Jitsi meet vyžaduje přístup na tcp porty 80, 443, 4443 a udp porty 10000-20000. Při nastavování UFW by bylo dobré nezapomenout povolit si přístup přes ssh, tedy tcp port 22 (pokud nemáte ssh přístup nakonfigurován přes jiný port). Nastavení firewallu UFW provedeme podle následujících příkazů:
sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 4443/tcp sudo ufw allow in 10000:20000/udp sudo ufw enable
Kontrola stavu:
sudo ufw status verbose
AD 3) Přidáme repozitáře pro xmpp server Prosody, Jitsi meet - verzi stable, vč. příslušných klíčů:
sudo echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add - sudo echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
AD 4) Nainstalujeme závislosti:
sudo apt-get update sudo apt-get install gnupg2 default-jre lua-sec
Pozn. - závislost gnupg2 je uvedena v quickstart guide, default-jre - viz pouznámka u Javy, potřeba instalace lua-sec pak vyplynula z chybových hlášeních v logu Prosody.
AD 5) Nainstalujeme samotné Jitsi meet, ovšem bez doporučených závislostí:
sudo apt install --no-install-recommends jitsi-meet
Během instalace bude třeba zodpovědět na pár dotazů - v případě hostname se zadává FQDN, tedy ve tvaru: meet.vasedomena.cz, při dotazu na certifikát vyberte self-signed, v dalším kroku volbu přepíšete získáním certifikátu Letʼs Encrypt.
Při výpisu akcí instalace uvidíte také odkaz na spuštění scriptu pro získání certifikátu Letʼs Encrypt, po ukončení instalace jej tedy spustíme:
sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
Pokud uděláte někde chybu, nic se neděje, osvědčený postup je vše odinstalovat vč. smazání konfiguračních souborů a následně znova spustit instalaci.
Příkaz pro odinstalování:
sudo apt purge jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-turnserver jitsi-meet-web jicofo jitsi-videobridge2 sudo apt autoremove --purge
Pozn. - pokud je server s instalací Jitsi meet za NATem, přidáme do konfiguračního souboru /etc/jitsi/videobridge/sip-communicator.properties
následující direktivy:
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=1.2.3.4 org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=11.22.33.44
Lokální adresu 1.2.3.4 je samozřejmě zapotřebí změnit na skutečnou lokální neveřejnou adresu, stejně tak, jako veřejnou ip adresu 11.22.33.44 za skutečnou, na kterou je překládán provoz v NAT.
Restart Jitsi meet se provádí příkazem:
sudo service prosody restart && sudo service jicofo restart && sudo service jitsi-videobridge2 restart
AD 6) - Kontrola logu a odstranění chyb. Relevantní logy najdete na následujících místech:
/var/log/prosody/prosody.err /var/log/prosody/prosody.log /var/log/jitsi/jicofo.log /var/log/jitsi/jvb.log
Z chybových hlášek k Jitsi jsem odstraňoval problém s obsazeným portem 8080 - řešení jsem popsal v poznámce u webového serveru výše.
Dále jsem měl zápisy v „prosody.err
“
- hlášení o chybějícím balíku lua-sec => viz doplnění instalace závislostí
- hlášení o nemožnosti přístupu k čtení certifikátů a klíče v adresáři
/etc/prosody/certs/
=> patřičně jsem upravil vlastnictví a práva nad souborylocalhost.cnf
,localhhost.crt
alocalhost.key
- poslední chybové hlášení se týkalo BOSH, resp. chybějícího certifikátu pro port 5281. K tomu podrobněji:
Prosody předpokládá modiul BOSH pro http, resp. https transport. Vývojáři Jitsi uvádí, že mají dobré důvody používat pro bosh direktivu „consider_bosh_secure = true;
“, tím ovšem Prosody předpokládá https transport přes port 5281. Protože se ale ve skutečnosti jedná o lokální transport mezi Nginx a Prosody na stejném stroji, není zapotřebí konfigurovat lokální přenos přes https. Aby se odstranila chybová hláška, je třeba serveru Prosody sdělit, že nemá vyhledávat https transport. Toho docílíme direktivou „https_ports = { };
“ s prázdnou hodnotou místo čísla portu pro https přenos. V konfiguračním souboru /etc/prosody/conf.avail/meet.vasedomen.cz.cfg.lua
tedy odstraníme před uvedenou direktivou pomlčky. Tato část konfiguračního souboru pak bude vypadat následovně:
cross_domain_bosh = false; consider_bosh_secure = true; https_ports = { };
Zabezpečení a tunning
Po instalaci Jitsi meet je server veřejně dostupný. Pokud chcete omezit přístup jen pro povolený okruh uživatelů, můžete postupovat podle návodu pro zabezpečení heslem zde nebo pomocí LDAP serveru, kdy návod najdete zde.
Dokumentace k Jitsi meet obsahuje i doporučené úpravy pro instalaci. Najdete je zde a osobně doporučuji min. tři
- nastavit výchozí jazyk na češtinu
- zapnout vynucení zadání jména
- upravit rozlišení - mám na 480p
Příslušné části konfiguračního souboru /etc/jitsi/meet/meet.vasedomena.cz-config.js
pak budou vypadat následovně:
// Sets the preferred resolution (height) for local video. Defaults to 720. resolution: 480, // w3c spec-compliant video constraints to use for video capture. Currently // used by browsers that return true from lib-jitsi-meet's // util#browser#usesNewGumFlow. The constraints are independent from // this config's resolution value. Defaults to requesting an ideal // resolution of 720p. constraints: { video: { height: { ideal: 480, max: 480, min: 360 } } }, // Require users to always specify a display name. requireDisplayName: true, // Default language for the user interface. defaultLanguage: 'cs',
K české lokalizaci
V současné době (10/2020) jsou stránky projektu Jitsi meet určené pro lokalizaci nefunkční. Vývojáři tvrdí, že dočasně. Nic ale nebrání, aby si každý upravil překlad k obrazu svému. Lokalizaci najdete na adrese: /usr/share/jitsi-mmet/lang/
. Zde nás pak zajímají dva soubory:
main.json
=> obsahuje všechny přeložitelné fráze v angličtiněmain-cs.json
=> obsahuje direktivy s příslušným překladem v uvozovkách a může (ale taky nemusí) obsahovat direktivy bez překladu, tedy s prázdnými uvozovkami. Pokud potřebujete něco přeložit, je nutno vmain.json
najít direktivu s anglickou frází a následně zkontrolovat, zda direktiva je obsažena vmain-cs.json
a buď ji doplnit nebo jen doplnit překlad, resp. přeložit.
Doporučuji si soubor main-cs.json
po úpravách zálohovat, protože při aktualizaci Jitsi meet je slušná šance na jeho přepsání.
Další poznámka se týká postupu, aby se provedená aktualizace lokalizace projevila v prohlížeči Chrome. Pokud nestačí restart Jitsi, pak je třeba přikročit k vymazání cache prohlížeče.
D. Dvořák
Licence: volně k použití a převzetí.