È 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:
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:
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:
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!
[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.
[TITOLO]Installare Jitsi Server[/TITOLO]
[SOTTOTITOLO]Metodo automatico (Docker/IRAC)[/SOTTOTITOLO]
Installare Jitsi da condividere con IRAC è molto simile alla procedura di MM.
[SOTTOTITOLO]Metodo manuale (Vanilla)[/SOTTOTITOLO]
Inoltre, vorresti poter installare Jigasi, il gateway server. Per farlo ti basterà lanciare:
oppure
[TITOLO]Extra: installare Docker su Ubuntu Server[/TITOLO]
La procedura per installare i due pacchetti è abbastanza semplice. Vediamo come fare, step-by-step.
La procedura di installazione di Docker Compose è molto semplice. Per prima cosa scarichiamo il pacchetto:
quindi assegniamo i permessi di esecuzione:
infine, eseguiamo lo script:
Puoi verificarne l’esecuzione lanciando:
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.
- 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
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
[TITOLO]Cosa e come installare[/TITOLO]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!
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.
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
[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
$ 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
[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
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
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