È inevitabile, specie in questo periodo, che ci si trovi a dover vivere la vita d’ufficio in
videoconferenza. Chi lavora con un computer questi sono tempi duri; le nostre vite dovevano essere più semplici e credo che
così non è.
Ma ora siamo dentro alla spirale del lavoro in
smartworking (quanto fa fico dirlo ultimamente?) che però è spesso poco
smart (intelligente) ma molto
working.
Ed ecco che risbucano dalla tomba
Google Hangouts (sinceramente pensavo avesse chiuso,
come da tradizione Google) e soprattutto
Zoom. Mi aspetttavo anche la
ribalta di Skype, invece ci ho fatto un solo meeting fino ad oggi (contro una ventina su Google e una cinquantina su Google).
[TITOLO]La dura legge del Closed Source[/TITOLO]
Sposare il
Closed-Source è un atto di fede che si fa con la Software House. Non si conosce il motore all’interno del programma, sappiamo solo che funziona e basta.
Con l’
Open-Source la fiducia fra sviluppatori e utenti è reciproca. Non c’è bisogno di essere programmatori, né tantomeno di leggere il codice sorgente per sapere che fine fanno i vostri dati, però confidiamo che la
Community della rete lo abbia spolpato per benino, e che alcune anime pie abbiano contribuito a renderlo un programma migliore.
[TITOLO]Il caso Zoom-Gate[/TITOLO]
Il recente
caso di breach ai danni di Zoom, con un furto di circa 500.000 account in vendita a 0.002$/login, ha fatto traballare i tavoli di diversi utenti “smart”. Alcuni sono scappati a gambe levate, altri — come sempre — non hanno mai niente da nascondere.
Non che il resto dei software sia inviolabile — come non lo è nessun software — ma la sua
struttura decentralizzata ci consente di avere una sicurezza
relativamente maggiore rispetto ad un unico endpoint.
Inoltre, i sistemi che vediamo oggi sono
esenti da ogni registrazione (su Jitsi ci si può registrare via app per una più pratica gestione), consentendo una più difficile associazione dei dati.
[TITOLO]Io Resto a Casa… .work[/TITOLO]
Ecco che mentre navigo sul web mi capita di imbattermi in
iorestoacasa.work, un aggregatore di canali basati su
Jitsi/Multiparty Meeting. Prima di addentrarci in virtuosismi tecnici cerchiamo di capire cos’è.
Il progetto
iorestoacasa.work fornisce, a chi ne ha bisogno, un canale in cui poter avviare una stanza virtuale in cui è possibile comunicare via video e chat, esattamente come fanno
Google Hangouts o Zoom.
Le stanze vengono ospitate da aziende terze, le quali forniscono i server su cui si appoggiano gli utenti. Le aziende forniscono questi server, in cambio di una visibilità
È possibile scegliere tra un server Multiparty Meeting (in blu) e/o Jitsi (in fucsia). Nel riquadro rosso lo sponsor.
[TITOLO]Jitsi o Multiparty Meeting[/TITOLO]
La scelta di uno o l’altro dipende fondamentalmente da come si intende gestire la conversazione:
- Multiparty Meeting: è interamente basato sul protocollo WebRTC. Questo permette di collegarsi ad una live-chat usando solo un browser. Ha meno funzioni di Jitsi, ed una qualità (video) leggermente peggiore, ma è più stabile per chi ha una connessione lenta.
- Jitsi: è possibile utilizzarlo sia tramite WebRTC (browser) che tramite App (da smartphone). Rispetto a MM ha più funzioni (come la gestione di moderazione o l’alzata di mano) ed è relativamente migliore, ma è meno indicata per chi ha una connessione lenta. *Al momento Safari e altri browser non-Webkit non sono supportati.
That’s all! Il mio consiglio è quello di adattarsi in base alle esigenze:
- Per poche persone: se è una call tra amici probabilmente Multiparty fa al caso vostro. Quando tutti saranno connessi, consiglio di bloccare l’accesso (per evitare l’ingresso di cazzeggiatori). È consentita una chat e lo share screen.
- Per tante persone e conferenze di lavoro: Jitsi integra tutto ciò che ha Multiparty Meeting, in più permette di assegnare una password al canale, di alzare la mano, di mutare altri utenti e così via.
Test video di Multiparty Meeting
Test video di Jitsi
Complessivamente, alla fine ho scelto
Jitsi per le mie attività di conference-call. Oltretutto da app offre la pratica funzione (come Hangouts e Zoom) di condividere un link di una stanza ad un
evento in calendario.
Jitsi — da app smartphone — permette anche di organizzare call e di condividerle in calendario!
E ora va, il mondo delle
conference-call (sicure) ti aspetta!
Se invece vuoi crearti il tuo server Multiparty Meeting/Jitsi, continua la lettura
[TITOLO]Ti vuoi creare un server?[/TITOLO]
Bene bene, eccoci nella parte più tecnico/laboriosa, quella pensata per chi è privacy-paranoico e vuole un serverino tutto per sé! Puoi anche decidere di
condividerlo su iorestoacasa.work: a tal proposito ti consiglio di visitare il
sito ufficiale per ulteriori informazioni.
Se vuoi solo videochattare con i tuoi amici/collaboratori ti ricordo che potrai avvalerti di
iorestoacasa.work o dei
server ufficiali messi a disposizione da Multiparty Meeting (
https://letsmeet.no) o da Jitsi (
https://meet.jit.si).
Innanzitutto dovrai procurarti un server con queste
caratteristiche:
- Una macchina dedicata allo scopo, non condivisa con altri servizi (http, posta etc…)
- IPv4 statico, se possibile in Italia
- Connessione 100 Mbps simmetrica, consigliata 1Gbps (4Mbps/utente)
- 4 CPU server grade (Xeon o analogo)
- 4GB RAM
Se non hai un server puoi decidere di affittarne uno da un rivenditore. Se vuoi contribuire al mio lavoro puoi decidere di prenderlo da Netsons da
qui, è un’azienda seria e Italia che opera nel settore da anni.
Nota: nella nostra guida useremo Ubuntu Server 19.04. Sentiti libero di usare altre distribuzioni, purché tu ne abbia le competenze per amministrarle!
Nota 2:
se stai creando un server privato (quindi non collegato ai repository di iorestoacasa.work) probabilmente la macchina dedicata potrà essere
molto meno performante. Anche una VPS da pochi €/mese potrà essere adeguata. Fai le dovute prove e se vuoi fammi sapere com’è andata
Idea: sai che potresti creare un
server aziendale interno, dove i vari reparti potrebbero collegarsi, passando direttamente dalla rete locale? In questo caso, addio sale riunioni! O, se siete una famiglia numerosa, anche in casa!
[TITOLO]Cosa e come installare[/TITOLO]
Di seguito vediamo come installare Multiparty Meeting e Jitsi. In caso di problemi, fai sempre riferimento alle sorgenti linkate degli How-To.
Giusto un
paio di termini:
- IRAC: si fa riferimento al repository “IoRestoACasa.work”. Se si vuole contribuire al progetto, segui questo percorso.
- Vanilla: si fa riferimento all’installazione dei servizi, senza influenze esterne. Se si vuole un server privato, segui questo percorso.
- Docker: ci si riferisce ai contenitori docker. Questi solitamente sono più semplici da utilizzare e hanno al loro interno tutto il necessario per funzionare, con poche configurazioni da fare.
[TITOLO]Installare Multiparty Meeting Server[/TITOLO]
Prendi sempre come riferimento il
repository ufficiale Github (per la versione stand-alone); se vuoi contribuire al progetto iorestoacasa.work, il repository è
qui.
[SOTTOTITOLO]
Metodo automatico (Docker/IRAC)[/SOTTOTITOLO]
Questa è la procedura ufficiale del team di iorestoacasa.work. Se avete bisogno e volete contribuire potete collegarvi al
canale Telegram ufficiale. NB: non si fa supporto (credo) a server Vanilla ma solo quelli che vogliono contribuire!
- Per prima cosa sarà necessario installare docker e docker-compose. Puoi cliccare sui link oppure scendere in fondo a questa pagina e seguire gli “extra” consigliati. A te la scelta.
- Seguirà l’installazione di git con il comando:
$ sudo apt install git
- Avrai bisogno di un certificato SSL valido; puoi utilizzare Let’s Encrypt, così da ottenerne gratuitamente uno. Puoi anche usare certbot per ottenerne uno:
$ sudo apt install certbot
$ sudo certbot certonly -d nomedominio.com --standalone
- Clona il repository e accedi alla cartella:
$ cd /opt
$ git clone https://github.com/iorestoacasa-work/mm.git
$ cd mm
- Copia il certificato:
$ cp /etc/letsencrypt/live/TUODOMINIO/fullchain.pem certs/
$ cp /etc/letsencrypt/live/TUODOMINIO/privkey.pem certs/
- Modifica i file di configurazione, prendendo la struttura dagli esempi. I tre file dovranno essere modificati; i parametri saranno quelli con il valore CHANGEME.
$ cp coturn.example.conf coturn.conf
$ cp configs/app/config.example.js configs/app/config.js
$ cp configs/server/config.example.js configs/server/config.js
- Avvia il container:
$ docker-compose up -d
- Puoi verificare che il server sia online visitando http://hostname.scelto.it:8081/metrics
A questo punto non ti resta che comunicare l’esito agli admin avviando una issue su Github; tutte le informazioni puoi trovarle sul
repository ufficiale.
[SOTTOTITOLO]Metodo automatico (Docker/Vanilla)[/SOTTOTITOLO]
La procedura è molto simile a quella vista in precedenza. Cambiano alcuni valori, che puoi trovare insieme all’immagine docker, a
questo link.
[SOTTOTITOLO]Metodo automatico (Ansible/Vanilla)[/SOTTOTITOLO]
Questa è probabilmente la procedura più semplice di tutte ma è limitata solo per distribuzioni basate su Debian/Ubuntu. È necessario l’uso di
ansible, un modulo presente in pip3. La procedura è facilmente descritta in questo meraviglioso
asciicinema. Buona visione!
[SOTTOTITOLO]Metodo manuale (Vanilla)[/SOTTOTITOLO]
Se vuoi procedere all’installazione manuale, senza contribuire a IoRestoACasa.work, dovrai seguire questa procedura
step-by-step.
Questa procedura potrebbe cambiare da un momento all’altro (causa cambio versione) ma gli step sono pressappoco quelli che vedrai. Puoi usarli come reference in qualunque momento.
- Installa nodejs in versione v10.*. Le istruzioni per ogni tipo di distribuzione sono linkate qui.
- Installa il software necessario:
$ sudo apt install npm build-essential redis
- Clona il progetto dal repository git:
$ git clone [URL]https://github.com/havfo/multiparty-meeting.git[/URL]
$ cd multiparty-meeting
- Rinomina la configurazione del server d’esempio con quella che userai:
$ cp server/config/config.example.js server/config/config.js
- Fai la stessa cosa, stavolta per la configurazione dell’app:
$ cp app/public/config/config.example.js app/public/config/config.js
- I due file config.js andranno configurati, riempiendo i campi richiesti (porte in ascolto, tipi di login, certificato TLS valido e così via).
- Avvia il browser app:
$ cd app
$ npm install
$ npm run build
tutti i file lato client saranno salvati in server/public.
- Avvia il server:
$ cd ..
$ cd server
$ npm install
- Procedi al test in locale. È consigliabile non avviarlo da root:
$ cd server
$ npm start
- Testa il servizio collegandoti all’indirizzo https://ip-o-dominio:3443/roomname.
- Se tutto funziona stoppa il servizio, quindi copia i file .service nella location di systemd, così da averlo sempre a portata di mano.
$ cp multiparty-meeting.service /etc/systemd/system/
$ edit /etc/systemd/system/multiparty-meeting.service
- Riavvia il systemd e avvia il servizio:
$ systemctl daemon-reload
$ systemctl start multiparty-meeting
- Per abilitare il servizio in start-up mode con il server, abilitalo con:
$ systemctl enable multiparty-meeting
A questo punto dovresti avere il servizio funzionante. È consigliabile inoltre proteggere il tutto con il
TURN Server, che consentirà di veicolare e proteggere il traffico VoIP. Una volta installato, ricordati di compilare gli accessi all’interno di:
$ nano app/public/config/config.js
[TITOLO]Installare Jitsi Server[/TITOLO]
[SOTTOTITOLO]Metodo automatico (Docker/IRAC)[/SOTTOTITOLO]
Installare Jitsi da condividere con IRAC è molto simile alla procedura di MM.
- Preinstalla docker e docker-compose. Puoi usare i link che ti ho citato oppure scorri in fondo alla pagina e leggi gli extra, lì troverai le guide
- Installa GIT:
$ sudo apt install git
- Clona i repository e accedi alla cartella:
$ cd /opt
$ git clone https://github.com/iorestoacasa-work/docker-jitsi-meet.git
$ cd docker-jitsi-meet
- Genera il file di configurazione, prendendo la struttura dall’esempio e modificane i primi 8 valori:
$ cp env.example .env
- Genera la password di sicurezza tramite lo script:
$ ./gen-passwords.sh
- Avvia il docker:
$ docker-compose up -d
- Puoi verificare il funzionamento del server navigandolo su https://IPODOMINIO:8081
Se hai già un server Jitsi e vuoi condividerlo con iorestoacasa.work,
qui troverai gli script per aggiungerne le metriche. Come sempre, in caso di dubbi, fai riferimento al
sito web ufficiale.
[SOTTOTITOLO]Metodo manuale (Vanilla)[/SOTTOTITOLO]
- Se stai usando Ubuntu, per prima cosa abilita i repository universe da cui prenderemo le dipendenze richieste:
$ sudo apt-add-repository universe
- Se vuoi che la macchina venga risolta tramite un FQDN (es. meet.example.org) per prima cosa assicurati che in /etc/hostname sia presente. A questo punto aggiungi l’hostname nel file /etc/hosts secondo questa sintassi:
127.0.0.1 localhost meet.example.org
- Aggiungi i repository di Jitsi alla tua distribuzione:
$ echo ‘deb [URL]https://download.jitsi.org[/URL] stable/’ >> /etc/apt/sources.list.d/jitsi-stable.list
$ wget -qO — [URL]https://download.jitsi.org/jitsi-key.gpg.key[/URL] | sudo apt-key add -
- Assicurati che le porte del Firewall siano aperte, in particolare:
- 80 TCP
- 443 TCP
- 10000 UDP
- L’autoinstaller verificherà la presenza di Nginx o Apache. Se uno di questi non fosse disponibile, verrà installato Nginx. Tienilo a mente qualora volessi installare Apache. Detto ciò, installiamo rispettivamente il supporto ai repository HTTPS, effettuiamo un update dei repo e avviamo l’installazione del server:
$ apt-get install apt-transport-https
$ apt-get update
$ apt-get -y install jitsi-meet
- Ti verrà chiesto come configurare l’host. In particolare, assicurati di indicare lo stesso FQDN indicato sul punto 2 (in caso contrario, puoi sempre usare l’IP della macchina).
- Genera il certificato TLS:
/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
A questo punto il server dovrebbe essere accessibile all’indirizzo
https://IP-O-DOMINIO (non è necessario specificare la porta, in quanto è la 80).
Inoltre, vorresti poter installare Jigasi, il gateway server. Per farlo ti basterà lanciare:
$ sudo apt-get -y install jigasi
oppure
$ wget [URL]https://download.jitsi.org/unstable/jigasi_1.0-107_amd64.deb[/URL]
$ dpkg -i jigasi_1.0–107_amd64.deb
[TITOLO]Extra: installare Docker su Ubuntu Server[/TITOLO]
La procedura per installare i due pacchetti è abbastanza semplice. Vediamo come fare,
step-by-step.
- Aggiorniamo la lista dei repository:
$ sudo apt -y update
- Installiamo le dipendenze:
$ sudo apt -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
- Se presenti vecchie versioni, eliminiamole:
$ sudo apt remove docker docker-engine docker.io containerd runc
- Importiamo la chiave GPG del repository Docker:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- Aggiungi Docker CE ai repository:
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- Installa Docker:
$ sudo apt update && sudo apt -y install docker-ce docker-ce-cli containerd.io
- Aggiungi il tuo utente al gruppo docker:
$ sudo usermod -aG docker $USER
$ newgrp docker
- Puoi verificare la presenza di docker lanciando:
$ docker version
[TITOLO]Extra 2: installare Docker-Compose su Ubuntu Server[/TITOLO]
La procedura di installazione di Docker Compose è molto semplice. Per prima cosa scarichiamo il pacchetto:
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
quindi assegniamo i permessi di esecuzione:
$ sudo chmod +x /usr/local/bin/docker-compose
infine, eseguiamo lo script:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Puoi verificarne l’esecuzione lanciando:
$ docker-compose --version