Klienti XMPP
Tento chatovací modul je založen na protokolu XMPP, známém také jako Jabber. Proto je možné se k chatům připojit pomocí klientského softwaru XMPP. To může být užitečné například pro usnadnění moderátorských operací.
Uživatelskou dokumentaci související s těmito funkcemi naleznete na stránce uživatelská dokumentace.
Povolení těchto funkcí vyžaduje změny konfigurace na serveru a v záznamech DNS. To není možné konfigurovat pouze z rozhraní Peertube a vyžaduje to základní systémové některé základní systémové administrátorské dovednosti.
Přihlášení k účtu Peertube
Tato funkce zatím není k dispozici a objeví se v některé z budoucích verzí zásuvného modulu.
Připojení pomocí externího účtu XMPP
Chcete-li tuto funkci povolit, musíte nastavit svůj server a záznamy DNS tak, aby klienti XMPP mohli najít Prosody server, který tento zásuvný modul interně používá, a získat k němu přístup.
Nastavení zásuvného modulu
Začněte tím, že přejdete do nastavení pluginu livechat své instance a povolíte nastavení “Povolit připojení k místnosti pomocí externích účtů XMPP”. Zaškrtnutím tohoto nastavení se níže zobrazí nová nastavení.
Především pole “Prosody server to server port”. To je ve výchozím nastavení 5269, což je standardní port pro tuto službu. Můžete jej však změnit na jiný port, pokud je na vašem serveru již používán.
V dalším poli “Síťová rozhraní serveru” můžete zadat, na kterých síťových rozhraních má server naslouchat. Výchozí hodnota “*, ::” znamená, že se má naslouchat na všech IP adresách. Pokud si přejete naslouchat pouze na určitých IP adresách, můžete tyto hodnoty změnit. Syntaxe je vysvětlena vedle nastavení.
Nastavení “Složka certifikátu” můžete ponechat prázdné. V takovém případě bude zásuvný modul automaticky generovat certifikáty podepsané vlastním podpisem. Některé servery XMPP se mohou v závislosti na své konfiguraci odmítnout připojit. V takovém případě zde můžete uvést cestu na serveru, do které je třeba umístit certifikáty, které má modul používat. Je na vás, abyste je vygenerovali a obnovili. Další informace naleznete níže.
Firewall
Na bráně firewall musíte otevřít nakonfigurovaný port (ve výchozím nastavení 5269).
Pokud používáte Docker pro svůj Peertube, je třeba upravit soubor
docker-compose.yml
tak, aby byl otevřen port 5269 kontejneru peertube
,
aby se k němu mohl připojit vnější svět.
DNS
Je třeba přidat záznamy DNS umožňující vzdáleným serverům najít komponenty “room.your_instance.tld” a “external.your_instance.tld”.
Nejjednodušší je přidat záznamy SRV pro “room” a “external” subdoménu:
název záznamu: _xmpp-server._tcp.room.your_instance.tld. (nahraďte “your_instance.tld” uri vaší instance)
TTL: 3600
class: IN
SRV: 0
priority: 0
weight: 5
port: 5269 (přizpůsobte, pokud jste změnili výchozí port)
cíl: your_instance.tld. (nahraďte uri vaší instance)
název záznamu: _xmpp-server._tcp.external.your_instance.tld. (nahraďte “your_instance.tld” uri vaší instance)
TTL: 3600
class: IN
SRV: 0
priority: 0
weight: 5
port: 5269 (přizpůsobte, pokud jste změnili výchozí port)
cíl: your_instance.tld. (nahraďte uri vaší instance)
Dejte pozor, abyste za “your_instance.tld” ponechali tečku.
Při kontrole záznamů příkazem dig
byste měli získat podobný výsledek:
$ dig +short _xmpp-server._tcp.room.videos.john-livingston.fr. SRV
0 5 5269 videos.john-livingston.fr.
$ dig +short _xmpp-server._tcp.external.videos.john-livingston.fr. SRV
0 5 5269 videos.john-livingston.fr.
Pokud nepoužíváte standardní port 5269
, musíte také přidat záznam SRV
pro _xmpp-server._tcp.your_instance.tld.
(stejně jako výše, jen bez
předpony room.
). Tento záznam můžete samozřejmě přidat i v případě, že
používáte standardní port. Bude to také fungovat.
Použití důvěryhodných certifikátů
Certifikáty s vlastním podpisem, které tento zásuvný modul ve výchozím nastavení používá, mohou být některými servery XMPP z bezpečnostních důvodů odmítnuty.
Je možné používat certifikáty ověřené certifikační autoritou. To však vyžaduje pokročilé znalosti správy systému. Vzhledem k množství možných případů použití zde skutečně není možné zdokumentovat všechny situace. Tato dokumentace proto pouze vysvětlí cíl, kterého je třeba dosáhnout, a uvede příklad, který bude vhodný pouze pro “základní” situaci (ruční instalace Peertube pomocí letsencrypt). Pokud se nacházíte v jiné situaci (instalace Dockeru, certifikáty podepsané jinou autoritou atd…), budete si muset tento postup přizpůsobit sami.
Základní princip
Je na vás, abyste vygenerovali platné certifikáty pro domény
vase_instance.tld
a room.your_instance.tld
. Můžete použít jakoukoli
metodu podporovanou Prosody.
Tyto certifikáty pak musíte umístit do složky, která bude přístupná
uživateli peertube
, a tuto složku zadat v nastavení pluginu “Certificate
folder”.
Pokud chcete k importu certifikátů použít nástroj ProsodyCtl, je tento
nástroj k dispozici (po spuštění Peertube) pomocí následujícího příkazu
(upravte cestu k datové složce Peertube a nahraďte “xxx” argumenty, které
chcete předat prosodyctl): sudo -u peertube /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosodyAppImage/squashfs-root/AppRun prosodyctl --config /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosody/prosody.cfg.lua xxx
Zásuvný modul bude jednou denně kontrolovat, zda v této složce nebyly změněny nějaké soubory, a v případě potřeby znovu načte aplikaci Prosody.
Metoda pro jednoduchý případ
Předpokládáme, že vaše instalace Peertube je “klasická” (bez použití Dockeru) a že certifikáty jsou generovány nástrojem letsencrypt pomocí nástroje certbot.
Nejprve musíme vytvořit certifikát pro subdoménu room.your_instance.tld
:
to je uri komponenty MUC (chatovací místnosti XMPP). I když jsou spojení
navázána na vaše_instance.tld
, budeme potřebovat platný certifikát pro
tuto subdoménu.
Začněte tedy nastavením položky DNS pro room.your_instance.tld
, která
ukazuje na váš server. Můžete použít položku CNAME (nebo položku A a
položku AAAA).
Dále použijeme nginx (již nainstalovaný pro Peertube) k vygenerování
certifikátu certbot. Vytvoříme nový web. Do souboru
/etc/nginx/site-available/room.peertube
přidejte:
server {
listen 80;
listen [::]:80;
server_name room.your_instance.tld;
location /.well-known/acme-challenge/ {
default_type "text/plain";
root /var/www/certbot;
}
location / { return 301 https://your_instance.tld; }
}
Poté web povolte:
ln -s /etc/nginx/sites-available/room.peertube /etc/nginx/sites-enabled/
systemc reload nginx
Poté připravíme složku, do které budeme později importovat certifikáty.
Předpokládáme, že zásuvný modul již máte aktivní. Vytvoříme následující
složku (pokud již neexistuje) s uživatelem peertube
, abychom se ujistili,
že nedojde k problémům s právy:
sudo -u peertube mkdir /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosody/certs
Nyní je třeba tuto složku nakonfigurovat v nastavení zásuvného modulu v parametru “Složky certifikátů”. Je důležité to provést nyní, jinak skript pro import certifikátů vloží certifikáty do nesprávné složky.
Nakonfigurujeme certbot tak, aby vygenerované certifikáty importoval do složky Prosody. Můžeme použít nástroj ProsodyCtl přibalený v zásuvném modulu.
Poznámka: aby byl zásuvný modul k dispozici, musí být alespoň jednou spuštěn.
Vytvoříme soubor /etc/letsencrypt/renewal-hooks/deploy/prosody.sh
obsahující:
#!/usr/bin/env sh
/var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosodyAppImage/squashfs-root/AppRun prosodyctl \
--root \
--config /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosody/prosody.cfg.lua \
cert import \
room.your_instance.tld your_instance.tld /etc/letsencrypt/live
Poté požádáme o vygenerování certifikátu:
certbot -d room.videos.john-livingston.fr
Pokud vám certbot nabídne několik způsobů generování certifikátu, vyberte možnost “nginx”.
Nyní byste měli najít certifikáty v nakonfigurované složce.
Poznámka: při prvním použití je nutné znovu načíst aplikaci Prosody. Nejjednodušší způsob, jak to udělat, je restartovat Peertube.
Metoda pro řešení Docker
Tato metoda funguje s oficiálně podporovaným Docker guide od PeerTube.
Nejprve vytvořte položku DNS pro room.your_instance.tld
, která bude
ukazovat na váš server. Můžete použít položku CNAME (nebo položku A a
položku AAAA). To je nutné, aby aplikace Let’s Encrypt ověřila doménu pro
generování certifikátu.
Zadejte adresář, ve kterém se nachází váš soubor docker-compose.yml
.
Otevřete shell v kontejneru certbot:
docker exec -it certbot /bin/sh
Spusťte certbot:
certbot
Zobrazí se řada výzev. Jako typ ověření zadejte 2
:
How would you like to authenticate with the ACME CA?
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Zadejte název domény room.your_instance.tld
:
Please enter the domain name(s) you would like on your certificate (comma and/or space separated) (Enter 'c' to cancel): room.your_instance.tld
Zadejte adresář, do kterého webový server PeerTube doručuje požadavky na
Let’s Encrypt, /var/www/certbot
:
Input the webroot for <room.your_instance.tld>: (Enter 'c' to cancel): /var/www/certbot
Měli byste vidět následující výstup:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/room.your_instance.tld/fullchain.pem
Key is saved at: /etc/letsencrypt/live/room.your_instance.tld/privkey.pem
Spusťte níže uvedený příkaz uvnitř kontejneru certbot, abyste skupině peertube poskytli přístup ke čtení nových certifikátů a soukromých klíčů. Poznámka: Tímto způsobem budou soubory přístupné ke čtení také skupině s id 999 v hostitelském systému. Před spuštěním tohoto příkazu zkontrolujte skupiny ve svém systému a vyhodnoťte to jako riziko.
chown -R root:999 /etc/letsencrypt/live; \
chmod 750 /etc/letsencrypt/live; \
chown -R root:999 /etc/letsencrypt/archive; \
chmod 750 /etc/letsencrypt/archive; \
find /etc/letsencrypt/ -name 'privkey*' -exec chmod 0640 {} \;
Ukončení kontejneru certbot:
exit
Upravte soubor docker-compose.yml
a změňte řádek entrypoint
pod službou
certbot
na následující. Je to stejné jako výše, ale má se to provádět
automaticky po každém obnovení certifikátu.
entrypoint: /bin/sh -c "trap exit TERM; while :; do certbot renew --webroot -w /var/www/certbot; chown -R root:999 /etc/letsencrypt/live; chmod 750 /etc/letsencrypt/live; chown -R root:999 /etc/letsencrypt/archive; chmod 750 /etc/letsencrypt/archive; find /etc/letsencrypt/ -name 'privkey*' -exec chmod 0640 {} +; sleep 12h & wait $${!}; done;"
Pokračujte v úpravě souboru docker-compose.yml
a přidejte svazek
certifikátů certbot do kontejneru peertube. Mělo by to vypadat nějak takto:
volumes:
- ./docker-volume/certbot/conf:/etc/letsencrypt
Restartujte služby:
docker-compose down; docker-comopse up -d
V nastavení pluginu livechat v administraci PeerTube nastavte adresář certifikátu na následující hodnotu:
/etc/letsencrypt/live
Uložte nastavení zásuvného modulu a ověřte, zda Prosody vidí certifikáty:
docker-compose exec -u peertube \
peertube \
/data/plugins/data/peertube-plugin-livechat/prosodyAppImage/squashfs-root/AppRun \
prosodyctl \
--config /data/plugins/data/peertube-plugin-livechat/prosody/prosody.cfg.lua \
check certs
Odstraňování potíží
Pokud se vám to nedaří, můžete použít diagnostický nástroj (tlačítko je v horní části stránky s nastavením zásuvného modulu) a podívat se na část “Kontrola Prosody”.