bglug.it/content/posts/2020-03-14-jitsi-docker.md

130 lines
6.5 KiB
Markdown
Raw Normal View History

2024-04-09 20:10:09 +00:00
---
title: Videoconferenza con jitsi-meet e docker
author: paspo
type: post
date: 2020-03-13T23:41:14+00:00
excerpt: Come creare un servizio di videoconferenza con jitsi-meet e docker
url: /2020/03/14/jitsi-docker/
classic-editor-remember:
- classic-editor
categories:
- Documentazione
- In evidenza
- Software
---
In questo periodo in cui la pandemia globale di COVID-19 ci ricorda quanto siamo fragili, le Persone riescono comunque a sorprenderci per la loro solidarietà: si moltiplicano infatti iniziative come <a href="https://solidarietadigitale.agid.gov.it/" target="_blank" rel="noopener noreferrer">questa</a>, in cui grandi aziende offrono gratuitamente alcuni servizi per semplificare la vita a chi sia obbligato a restare a casa.
Possiamo cogliere quest&#8217;occasione per rispondere alla crescente domanda di servizi di video conferenza online: in questa lista, infatti, ci sono anche aziende che offrono virtual machines idonee allo scopo.
Vediamo come configurare una virtual machine appena creata per avere un servizio di videoconferenza personalizzato, gratuito e open-source, grazie a <a href="https://jitsi.org/" target="_blank" rel="noopener noreferrer">jitsi</a>.
## Requisiti
* Una virtual machine linux, raggiungibile da internet, con accesso di root. In questo caso verrà considerata una VM basata su debian/ubuntu.
* (opzionale ma fortemente raccomandato) un record DNS che punti all&#8217;indirizzo IP di questa virtual machine. Esempio: jitsi.miodominio.com
## Installazione
Prima di tutto bisogna accedere alla nostra virtual machine. A seconda del fornitore, potremmo avere accesso direttamente con l&#8217;utente root o con un utente diverso, ma con privilegi amministrativi.
Nel primo caso, accediamo con:
`ssh root@123.456.789.123<br />
`
Dove con &#8220;123.456.789.123&#8221; si intende l&#8217;indirizzo IP della virtual machine.
Nel secondo caso, dopo esserci loggati, apriamo una shell di root, in modo da semplificare il resto del tutorial:
`ssh utente@123.456.789.123<br />
$ sudo -i<br />
[sudo] password di utente:<br />
#<br />
`
Il comando &#8220;sudo -i&#8221; permette agli utenti abilitati di ottenere una shell di root, dopo aver inserito la propria password.
## Installare docker
Fare riferimento a <a href="https://docs.docker.com/install/" target="_blank" rel="noopener noreferrer">questo link</a> per istruzioni dettagliate su come installare docker. Qui di seguito sono riportate le istruzioni per l&#8217;installazione su Debian.
`# apt-get install \<br />
apt-transport-https \<br />
ca-certificates \<br />
curl \<br />
gnupg2 \<br />
software-properties-common<br />
# curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -<br />
# add-apt-repository \<br />
"deb [arch=amd64] https://download.docker.com/linux/debian \<br />
$(lsb_release -cs) \<br />
stable"<br />
# apt-get update<br />
# apt-get install docker-ce docker-ce-cli containerd.io<br />
`
## Installare docker-compose
Anche in questo caso, c&#8217;è una guida più esauriente sul <a href="https://docs.docker.com/compose/install/" rel="noopener noreferrer" target="_blank">sito ufficiale</a>.
`# curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose<br />
# chmod +x /usr/local/bin/docker-compose<br />
`
## Installazione
Prima di tutto, ci serve git:
`# apt install git<br />
`
Ora possiamo clonare il repository sul nostro server:
`# git clone https://github.com/jitsi/docker-jitsi-meet.git /srv/jitsi<br />
`
Otteniamo la configurazione di default:
`# cp /srv/jitzi/env.example /srv/jitsi/.env<br />
`
Prima di ritoccare la configurazione, se vogliamo utilizzare Let&#8217;sEncrypt, dobbiamo fare una verifica: controlliamo che il nostro record DNS punti effettivamente all&#8217;indirizzo IP della virtual machine.
`# host jitsi.miodominio.com<br />
jitsi.miodominio.com has address <strong>123.456.789.123</strong><br />
# ip a<br />
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000<br />
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />
inet 127.0.0.1/8 scope host lo<br />
valid_lft forever preferred_lft forever<br />
inet6 ::1/128 scope host<br />
valid_lft forever preferred_lft forever<br />
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000<br />
link/ether 08:00:27:bb:8b:fc brd ff:ff:ff:ff:ff:ff<br />
inet <strong>123.456.789.123</strong>/24 brd 123.456.789.255 scope global dynamic enp0s3<br />
valid_lft 85711sec preferred_lft 85711sec<br />
inet6 fe80::a00:27ff:febb:8bfc/64 scope link<br />
valid_lft forever preferred_lft forever<br />
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default<br />
link/ether 02:42:54:b7:8b:7a brd ff:ff:ff:ff:ff:ff<br />
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0<br />
valid_lft forever preferred_lft forever<br />
`
Ovviamente i dati qui sopra sono solo un esempio, ma dovrebbero bastare a rendere l&#8217;idea: il primo comando ci dice come &#8220;risolve&#8221; jitsi.miodominio.com, mentre il secondo elenca gli indirizzi IP di tutte le interfacce di rete. Gli indirizzi IP devono coincidere.
Ora passiamo a ritoccare il file di configurazione (potete usare l&#8217;editor che preferite, ovviamente):
`# nano /srv/jitsi/.env<br />
`
Modificate in questo modo se NON UTILIZZATE Let&#8217;s Encrypt:
`HTTP_PORT=80<br />
HTTPS_PORT=443<br />
TZ=Europe/Rome<br />
PUBLIC_URL="https://123.456.789.123"<br />
DOCKER_HOST_ADDRESS=123.456.789.123<br />
ENABLE_HTTP_REDIRECT=1<br />
`
Viceversa, se UTILIZZATE Let&#8217;s Encrypt:
`HTTP_PORT=80<br />
HTTPS_PORT=443<br />
TZ=Europe/Rome<br />
PUBLIC_URL="https://jitsi.miodominio.com"<br />
DOCKER_HOST_ADDRESS=123.456.789.123<br />
ENABLE_LETSENCRYPT=1<br />
LETSENCRYPT_DOMAIN=jitsi.miodominio.com<br />
LETSENCRYPT_EMAIL=email@miodominio.com<br />
ENABLE_HTTP_REDIRECT=1<br />
`
Chiaramente l&#8217;email indicata deve essere un&#8217;email valida.
Ora possiamo far partire il servizio:
`# cd /srv/jitsi ; docker-compose up -d`
Il servizio sarà raggiungibile all&#8217;URL &#8220;https://123.456.789.123&#8221; con un certificato autofirmato; se invece avete abilitato Let&#8217;s Encrypt, sarà raggiungibile all&#8217;URL &#8220;https://jitsi.miodominio.com&#8221;.
Da qui potete creare quante &#8220;stanze&#8221; volete, senza bisogno di nessun account: basta inoltrare il link ai destinatari.