Ako nainštalovať server Spreed WebRTC pomocou obrázka Docker


Spreed je bezplatný server pre audio/video hovory a konferencie WebRTC s otvoreným zdrojom (AGPL) navrhnutý s ohľadom na súkromie. WebRTC je bezplatná a otvorená technológia, ktorá umožňuje prehliadačom komunikovať medzi sebou spôsobom peer-to-peer. Server Spreed WebRTC používa end-to-end šifrovanie na ochranu súkromia a bezpečnosti používateľov.

Spreed WebRTC vám umožňuje robiť nasledujúce veci.

  • Zabezpečený audio, video a textový chat
  • Webové konferencie
  • Individuálny videorozhovor

V predchádzajúcom návode sme diskutovali o tom, ako nainštalovať server Spreed WebRTC na Ubuntu 16.04 pomocou oficiálneho PPA. Tento tutoriál vám ukáže, ako nainštalovať server Spreed WebRTC na Ubuntu pomocou obrazu Docker.

Prečo používať Docker? Spreed PPA funguje iba na Ubuntu 16.04, takže ak používate Ubuntu 20.04, 18.04 alebo akúkoľvek inú distribúciu, nemôžete použiť PPA. Výhodou Dockeru je, že nezáleží na tom, či používate Debian, Ubuntu, CentOS, Redhat, SUSE alebo čokoľvek iné, pokiaľ vaša distribúcia dokáže spustiť Docker engine, môžete si na ňu nainštalovať Spreed WebRTC.

Krok 1: Nainštalujte Docker na Ubuntu

Ak chcete najnovšiu verziu Docker, môžete si nainštalovať Docker z úložiska APT Docker. Pre jednoduchosť tento návod nainštaluje Docker z predvoleného úložiska softvéru Ubuntu.

sudo apt update
sudo apt install docker.io

Po nainštalovaní by sa mal démon Docker automaticky spustiť. Jeho stav môžete skontrolovať pomocou:

systemctl status docker

Tip: Ak sa vyššie uvedený príkaz neskončí okamžite, môžete ho ukončiť stlačením klávesu Q.

Ak nie je spustený, spustite démona týmto príkazom:

sudo systemctl start docker

A povoliť automatické spustenie pri štarte:

sudo systemctl enable docker

Krok 2: Nainštalujte Spreed WebRTC Server na Ubuntu pomocou Docker Image

Po nainštalovaní Dockera spustite nasledujúci príkaz na vytvorenie adresára pre Spreed WebRTC a do tohto adresára stiahnite súbor server.conf. Tento súbor vám umožňuje poskytnúť prispôsobené parametre serveru Spreed WebRTC pri spustení obrazu Docker.

sudo mkdir /etc/spreed/

cd /etc/spreed/

sudo wget https://raw.githubusercontent.com/strukturag/spreed-webrtc/master/server.conf.in -O server.conf

Potom súbor upravte pomocou textového editora príkazového riadka, ako je napríklad Nano.

sudo nano /etc/spreed/server.conf

Nájdite nasledujúci riadok.

listen = 127.0.0.1:8080

Spreed potrebuje počúvať 0.0.0.0:8080 v kontajneri Docker, aby mohol prijímať požiadavky od hostiteľa.

listen = 0.0.0.0:8080

Uložte a zatvorte súbor.

Pred spustením kontajnera Spreed WebRTC Docker musíme vytvoriť dostatok entropie na generovanie tajných informácií servera. na vytvorenie entropie môžeme použiť rng-tools.

sudo apt install rng-tools

Po nainštalovaní spustite

sudo rngd -r /dev/urandom

Potom zadaním nasledujúceho príkazu spustite obrázok ukotvenia spreed/webrtc so súborom server.conf.

sudo docker run -d --name my-spreed-webrtc -p 127.0.0.1:8080:8080 -v /etc/spreed:/etc/spreed -i -t spreed/webrtc -c /etc/spreed/server.conf

Kde :

  • -d: Oddelený režim spôsobí, že kontajner beží na pozadí.
  • --name: Priraďte svojmu kontajneru Docker vlastný názov.
  • -p: Zverejní port kontajnera na hostiteľovi. Prvý port, ak je hostiteľský port, druhý je port kontajnera. Spreed tiež počúva na porte 8443 v kontajneri Docker pre požiadavku HTTPS, ale na ukončenie pripojenia TLS použijeme Apache/Nginx, takže nemusíme zverejniť port 8443 hostiteľovi.
  • -v: Vytvorenie pripojenia väzby. Docker viaže pripojenia /etc/spreed/ v hostiteľovi na /etc/spreed/ v kontajneri Docker.
  • -t: Pridelenie pseudo-TTY.
  • -c: Prepíše predvolený súbor /etc/spreed/server.conf v kontajneri Docker.

Teraz server Spreed WebRTC počúva na 127.0.0.1:8080, ako je možné vidieť na:

sudo ss -lnpt | grep docker

Krok 3: Nastavte reverzný proxy

Aby sme mohli pristupovať k webovému rozhraniu Spreed prostredníctvom názvu domény, musíme preň nastaviť reverzný proxy server pomocou Apache alebo Nginx. Umožní vám tiež povoliť HTTPS, takže pripojenie môže byť šifrované.

Apache

Nainštalujte webový server Apache na Ubuntu.

sudo apt install apache2

Potom vytvorte súbor virtuálneho hostiteľa pre Spreed.

sudo nano /etc/apache2/sites-available/spreed-webrtc.conf

Vložte nasledujúci text do súboru. Nahraďte spreed.example.com preferovaným názvom hostiteľa a nezabudnite pre tento názov hostiteľa nastaviť záznam DNS A.

<VirtualHost *:80>
    ServerName spreed.example.com
    <Location />
      ProxyPass http://127.0.0.1:8080/
      ProxyPassReverse http://127.0.0.1:8080/
    </Location>

    <Location /ws>
       ProxyPass ws://127.0.0.1:8080/
    </Location>
    ProxyVia On
    ProxyPreserveHost On
</VirtualHost>

Uložte a zatvorte súbor. Potom musíme povoliť modul proxy_http.

sudo a2enmod proxy_http

Ďalej povoľte tohto virtuálneho hostiteľa.

sudo a2ensite spreed-webrtc.conf

Otestujte konfigurácie a znova načítajte Apache

sudo apachectl configtest

sudo systemctl reload apache2

Teraz by ste mali mať prístup k Spreed WebRTC cez http://spreed.example.com vo webovom prehliadači.

Nginx

Najprv nainštalujte Nginx na Ubuntu.

sudo apt install nginx

Potom vytvorte súbor bloku servera pre Spreed WebRTC.

sudo nano /etc/nginx/conf.d/spreed-webrtc.conf

Vložte nasledujúci text do súboru. Nahraďte spreed.example.com preferovaným názvom hostiteľa a nezabudnite pre tento názov hostiteľa nastaviť záznam DNS A.

server {
        listen 80;
        listen [::]:80;
        server_name spreed.example.com;
        error_log /var/log/nginx/spreed.error;
        location / {
                proxy_pass http://127.0.0.1:8080;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                proxy_buffering             on;
                proxy_ignore_client_abort   off;
                proxy_redirect              off;
                proxy_connect_timeout       90;
                proxy_send_timeout          90;
                proxy_read_timeout          90;
                proxy_buffer_size           4k;
                proxy_buffers               4 32k;
                proxy_busy_buffers_size     64k;
                proxy_temp_file_write_size  64k;
                proxy_next_upstream         error timeout invalid_header http_502 http_503 http_504;
        }

        location ~ /.well-known/acme-challenge {
             root /usr/share/nginx/spreed/;
             allow all;
        }
}

Uložte a zatvorte súbor. Potom otestujte konfigurácie Nginx a znova načítajte.

sudo nginx -t

sudo systemctl reload nginx

Teraz by ste mali mať prístup k Spreed WebRTC cez http://spreed.example.com vo webovom prehliadači.

Krok 4: Získajte a nainštalujte certifikát TLS

Teraz získajme bezplatný certifikát TLS od spoločnosti Let's encrypt. Spustite nasledujúce príkazy na inštaláciu klienta Let’s Encrypt (certbot) z oficiálneho certbota PPA.

sudo apt install certbot

Ak používate webový server Apache, musíte si nainštalovať aj doplnok Certbot Apache.

sudo apt install python3-certbot-apache

Potom zadajte nasledujúci príkaz na získanie bezplatného certifikátu TLS/SSL.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email  -d spreed.example.com

Ak používate webový server Nginx, musíte si nainštalovať doplnok Certbot Nginx.

sudo apt install python3-certbot-nginx

Potom použite doplnok Nginx na získanie a inštaláciu certifikátu spustením nasledujúceho príkazu.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email  -d spreed.example.com

Zobrazí sa nasledujúci text označujúci, že ste úspešne získali certifikát TLS.

Krok 5: Nainštalujte server TURN/STUN

WebRTC nebude fungovať, ak sú používatelia za rôznymi zariadeniami NAT. Bude zablokovaný. Aby sme mohli prejsť NAT, musíme nastaviť server TURN/STUN ako relé medzi webovými prehliadačmi. TURN znamená Traversal Using Relays around NAT. Coturn je bezplatný a open source server TURN a STUN pre VoIP a WebRTC.

Coturn je k dispozícii z úložiska Ubuntu, takže ho nainštalujte pomocou nasledujúceho príkazu:

sudo apt install coturn

Po nainštalovaní sa automaticky spustí. Jeho stav môžete skontrolovať pomocou:

systemctl status coturn

Ukážkový výstup:

Ak nie je spustený, spustite ho manuálne pomocou:

sudo systemctl start coturn

A tiež povoliť automatické spustenie pri štarte:

sudo systemctl enable coturn

Krok 6: Nakonfigurujte Coturn pre Spreed WebRTC

Upravte hlavný konfiguračný súbor.

sudo nano /etc/turnserver.conf

Štandardne sú všetky riadky v tomto súbore zakomentované. Nižšie je uvedený príklad konfigurácie, ktorú môžete skopírovať a vložiť do svojho súboru.

  • Nahraďte vaša-domena.com názvom domény vášho NextCloud alebo Spreed WebRTC.
  • Nahraďte 12.34.56.78 verejnou IP adresou servera.
  • Nastavte dlhé a bezpečné overovacie tajomstvo. (Na vygenerovanie náhodného reťazca môžete použiť príkaz openssl rand -base64 20.)
# Run as TURN server only, all STUN requests will be ignored.
no-stun

# Specify listening port. Change to 80 or 443 to go around some strict NATs.
listening-port=8443
tls-listening-port=5349

# Specify listening IP, if not set then Coturn listens on all system IPs. 
listening-ip=12.34.56.78
relay-ip=12.34.56.78

# These lines enable support for WebRTC
fingerprint
lt-cred-mech
realm=your-domain.com

# Authentication method
use-auth-secret
static-auth-secret=your-auth-secret

total-quota=100

# Total bytes-per-second bandwidth the TURN server is allowed to allocate
# for the sessions, combined (input and output network streams are treated separately).
bps-capacity=0

# This line provides extra security.
stale-nonce

log-file=/var/log/turnserver/turn.log
no-loopback-peers
no-multicast-peers

Uložte a zatvorte súbor. Potom reštartujte server coturn pomocou:

sudo systemctl restart coturn

Coturn beží ako používateľ turnserver. Spustite nasledujúci príkaz a mali by ste vidieť, že počúva na porte 8443.

sudo ss -lnpt | grep turnserver

Teraz upravme konfiguračný súbor Spreed WebRTC.

sudo nano /etc/spreed/server.conf

Do sekcie [aplikácia] pridajte nasledujúce dva riadky. Podľa toho nahraďte červený text.

turnURIs = turn:coturn-server-ip:8443?transport=udp

turnSecret = your-auth-secrect

Uložte a zatvorte súbor. Potom reštartujte kontajner dokovacieho zariadenia Spreed WebRTC pomocou

sudo docker restart my-spreed-webrtc

Aby Coturn fungoval, mali by ste otvoriť port TCP a UDP 8843 vo firewalle. Ak používate bránu firewall UFW, spustite nasledujúce príkazy.

sudo ufw allow 8443/tcp
sudo ufw allow 8443/udp

Po spustení Coturn a reštarte Spreed WebRTC by používatelia, ktorí sú za NAT, mali mať možnosť normálne používať audio/video hovory.

Ďalši krok

Dúfam, že vám tento návod pomohol nainštalovať server Spreed WebRTC na Ubuntu pomocou obrazu Docker. Môžete tiež chcieť integrovať Spreed.Me s NextCloud.

  • Ako integrovať Spreed Me WebRTC s NextCloud

Ako vždy, ak ste považovali tento príspevok za užitočný, prihláste sa na odber nášho bezplatného bulletinu.

Súvisiace články