summaryrefslogtreecommitdiff
path: root/content/jitsi.md
diff options
context:
space:
mode:
Diffstat (limited to 'content/jitsi.md')
-rw-r--r--content/jitsi.md199
1 files changed, 199 insertions, 0 deletions
diff --git a/content/jitsi.md b/content/jitsi.md
new file mode 100644
index 0000000..0df893b
--- /dev/null
+++ b/content/jitsi.md
@@ -0,0 +1,199 @@
+---
+title: "Jitsi"
+date: 2021-07-31
+icon: "jitsi.svg"
+tags: ['service']
+short_desc: "Video-chat software."
+---
+
+<dfn>Jitsi</dfn> is a set of open-source projects that allows you to easily
+build and deploy secure video conferencing solutions.
+
+Is really easy to install, and also a really good private, federated and
+libre alternative to Zoom or other video conferencing software. You can
+create calls just by typing the URL, and loging-in is not necessary.
+
+## Dependencies and Installation
+
+First, install some dependencies:
+
+```sh
+apt install gpg apt-transport-https nginx python3-certbot-nginx
+```
+
+Jitsi has its own package repository, so let\'s add it.
+
+```bash
+curl https://download.jitsi.org/jitsi-key.gpg.key | gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg
+echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list
+apt update -y
+```
+
+Ok. So now we can install Jitsi, but before we do that, let\'s setup the
+firewall `ufw`, in case you have it enabled, and the SSL certificate.
+
+## Enable Required Ports
+
+If you are using [ufw](/ufw) or another firewall, there are several
+ports we need to ensure are open:
+
+```sh
+ufw allow 80/tcp
+ufw allow 443/tcp
+ufw allow 10000/udp
+ufw allow 3478/udp
+ufw allow 5349/tcp
+ufw enable
+```
+
+For your information, these allow the following:
+
+- 80 TCP -- Certbot.
+- 443 TCP -- General access to Jitsi Meet.
+- 10000 UDP -- General network video/audio communications.
+- 3478 UDP -- Quering the stun server ([Coturn](/coturn), optional, needs config.js change to enable it).
+- 5349 TCP -- Fallback network video/audio communications over TCP (when UDP is blocked for example), served by [Coturn](/coturn).
+
+## SSL certificate
+
+I\'ll be using [certbot](/basic/certbot) and
+[Nginx](/basic/nginx) to generate a certificate for the
+Jitsi subdomain to allow encrypted connections.
+
+```sh
+certbot --nginx certonly -d {{<hl>}}meet.example.org{{</hl>}}
+```
+
+We will not create an Nginx config file for Jitsi because the Jitsi
+package we will be installing will do that automatically.
+
+## Installation
+
+To begin the installation process, just run:
+
+```sh
+apt install jitsi-meet
+```
+
+It will ask you for your `hostname`; there you\'ll need to input the
+subdomain you have just added to Nginx, like `{{<hl>}}meet.example.org{{</hl>}}`.
+
+For the SSL certificate, choose `I want to use my own certificate`.
+
+When it ask you for the certification key and cert files, input
+`/etc/letsencrypt/live/{{<hl>}}meet.example.org{{</hl>}}/privkey.pem` and
+`/etc/letsencrypt/live/{{<hl>}}meet.example.org{{</hl>}}/fullchain.pem` respectively.
+
+## Using Jitsi
+
+{{< img alt="Jitsi once installed" src="/pix/jitsi-01.webp" >}}
+
+Jitsi can be used in a browser by then just going to `{{<hl>}}meet.example.org{{</hl>}}`.
+
+Note that there are also Jitsi clients for all major platforms:
+
+- [Desktop](https://desktop.jitsi.org/Main/Download.html) (Windows,
+ MacOS, GNU/Linux)
+- Android ([F-Droid](https://f-droid.org/en/packages/org.jitsi.meet/)
+ and [Google
+ Play](https://play.google.com/store/apps/details?id=org.jitsi.meet))
+- [iPhone/iOS](https://apps.apple.com/us/app/jitsi-meet/id1165103905)
+
+**When using a Jitsi app for the first time, remember to go to the
+\"Settings\" menu and change your server name to the Jitsi site you just
+created.**
+
+When you create a video chatroom, its address will appear as
+`meet.example.org/yourvideochatname` and can be shared as such.
+
+## Security
+
+By default, anyone who has access to **meet.example.org** will be able
+to create a chatroom. You probably don\'t want that, so you\'ll need to
+set up some authentication. The simplest option is to handle
+authentication through the local [Prosody](/prosody) user
+database.
+
+### Prosody configuration
+
+First, we need to enable password authentication in
+[Prosody](/prosody). Edit
+`/etc/prosody/conf.avail/{{<hl>}}meet.example.org{{</hl>}}.cfg.lua`, and locate this
+block:
+
+```lua
+VirtualHost "{{<hl>}}meet.example.org{{</hl>}}"
+ authentication = "anonymous"
+```
+
+And change the authentication mode from `"anonymous"` to
+`"internal_hashed"`.
+
+Then, to enable guests to login and join your chatrooms, add the
+following block **after** the one you just edited:
+
+```lua
+VirtualHost "guest.{{<hl>}}meet.example.org{{</hl>}}"
+ authentication = "anonymous"
+ c2s_require_encryption = false
+```
+
+### Jitsi Meet configuration
+
+Next, in `/etc/jitsi/meet/{{<hl>}}meet.example.org{{</hl>}}-config.js`, uncomment the
+following line:
+
+```js
+var config = {
+ hosts: {
+ // anonymousdomain: 'guest.jitsi-meet.example.com',
+ },
+}
+```
+
+And change `'guest.jitsi-meet.example.com'` to
+`'{{<hl>}}guest.meet.example.org{{</hl>}}'` (your Jitsi domain preceded by `meet.`).
+
+### Jicofo configuration
+
+Finally, we configure Jicofo to only allow the creation of conferences
+when the request is coming from an authenticated user. To do so, add the
+following `authentication` section to `/etc/jitsi/jicofo/jicofo.conf`:
+
+```yaml
+jicofo {
+ authentication: {
+ enabled: true
+ type: XMPP
+ login-url: {{<hl>}}meet.example.org{{</hl>}}
+ }
+```
+
+### Create users in Prosody and restart the services
+
+You now need to register some users in [Prosody](/prosody), you
+can do so manually using `prosodyctl`:
+
+```sh
+prosodyctl register <username> meet.example.org <password>
+```
+
+Finally, restart `prosody`, `jicofo`, and `jitsi-videobridge2`:
+
+```sh
+systemctl restart prosody
+systemctl restart jicofo
+systemctl restart jitsi-videobridge2
+```
+
+## More info
+
+This article is based on [the original
+documentation](https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart).
+There you can find more details and configurations.
+
+- Written by [Jose Fabio.](https://josefabio.com)
+ Donate Monero:
+ `484RLdsXQCDGSthNatGApRPTyqcCbM3PkM97axXezEuPZppimXmwWegiF3Et4BHBgjWR7sVXuEUoAeVNpBiVznhoDLqLV7j`
+ [\[QR\]](https://josefabio.com/figures/monero.jpg)
+- Edited and revised by [Luke](https://lukesmith.xyz).