{"id":1456,"date":"2021-03-16T00:23:55","date_gmt":"2021-03-16T00:23:55","guid":{"rendered":"https:\/\/dft.wiki\/?p=1456"},"modified":"2026-06-09T09:19:31","modified_gmt":"2026-06-09T13:19:31","slug":"video-conferencing-platform-with-jitsi","status":"publish","type":"post","link":"https:\/\/dft.wiki\/?p=1456","title":{"rendered":"Video Conferencing Platform with Jitsi"},"content":{"rendered":"<p>Jitsi [<a href=\"https:\/\/jitsi.org\/\">Link<\/a>] is an open-source video conferencing solution for web and mobile.<\/p>\n<ul>\n<li>HD audio and video<\/li>\n<li>Unlimited meetings<\/li>\n<li>Up to 50 participants at a time<\/li>\n<li>End-to-end encryption<\/li>\n<li>Simultaneous screen sharing<\/li>\n<li>Remote control<\/li>\n<li>Integration with Google, Microsoft, and Slack<\/li>\n<li>And more<\/li>\n<\/ul>\n<p><strong>Initial Configuration<\/strong><\/p>\n<pre>sudo hostnamectl set-hostname <strong>example.com<\/strong>\r\nsudo nano \/etc\/hosts<\/pre>\n<p>Add the same domain as follows:<\/p>\n<pre>127.0.0.1 localhost <strong>example.com<\/strong><\/pre>\n<p><strong>Firewall<\/strong><\/p>\n<pre>sudo ufw limit 22\r\nsudo ufw allow 80\r\nsudo ufw allow 443\r\nsudo ufw allow 4443\r\nsudo ufw allow 10000\r\nsudo ufw enable\r\nsudo ufw status numbered<\/pre>\n<p><strong>Installing<\/strong><\/p>\n<pre>wget https:\/\/download.jitsi.org\/jitsi-key.gpg.key\r\nsudo apt-key add jitsi-key.gpg.key \r\nsudo echo \"deb https:\/\/download.jitsi.org stable\/\" &gt; \/etc\/apt\/sources.list.d\/jitsi-stable.list\r\nsudo apt update\r\nsudo apt install jitsi-meet -y<\/pre>\n<p>When prompted, enter your domain: <strong>example.com<\/strong><\/p>\n<p>Then select: <strong>Generate a new self-signed certificate<\/strong>.<\/p>\n<p>The certificate will be located at: <strong>\/etc\/jitsi\/meet\/<\/strong><\/p>\n<p>At this point the server is already secure and ready to use, but let&#8217;s go ahead and create a public certificate.<\/p>\n<p><strong>Install Let&#8217;s Encrypt and Certbot<\/strong><\/p>\n<pre>sudo apt install certbot -y\r\nsudo sed -i 's\/\\.\\\/certbot-auto\/certbot\/g' \/usr\/share\/jitsi-meet\/scripts\/install-letsencrypt-cert.sh\r\nsudo ln -s \/usr\/bin\/certbot \/usr\/sbin\/certbot\r\nsudo \/usr\/share\/jitsi-meet\/scripts\/install-letsencrypt-cert.sh<\/pre>\n<p>Enter your email address to receive reminders when the certificate is about to expire.<\/p>\n<p>Open your browser and navigate to: <strong>https:\/\/example.com<\/strong><\/p>\n<p>The server is now up and running. Any visitor can start a meeting by giving it a name:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1547\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-22-12-29-38.png\" alt=\"\" width=\"887\" height=\"778\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-22-12-29-38.png 887w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-22-12-29-38-300x263.png 300w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-22-12-29-38-768x674.png 768w\" sizes=\"auto, (max-width: 887px) 100vw, 887px\" \/><\/p>\n<p>Copy and share the link from the address bar: https:\/\/example.com\/<strong>firstmeeting<\/strong><\/p>\n<p>The meeting name is appended to the server address.<\/p>\n<p>Workload tests on the server:<\/p>\n<ul>\n<li>Hardware: the most basic Linode virtual machine (1 vCPU, 1 GB RAM).<\/li>\n<li>3 participants with audio and video (Linux, Windows 10, and Android): CPU usage around 20%.<\/li>\n<li>4 participants with one sharing their screen: CPU usage around 40%.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1548\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot_2021-03-22_12_39_40.png\" alt=\"\" width=\"1920\" height=\"1047\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot_2021-03-22_12_39_40.png 1920w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot_2021-03-22_12_39_40-300x164.png 300w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot_2021-03-22_12_39_40-1024x558.png 1024w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot_2021-03-22_12_39_40-768x419.png 768w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot_2021-03-22_12_39_40-1536x838.png 1536w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot_2021-03-22_12_39_40-1200x654.png 1200w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1549\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot_2021-03-22_12_43_10.png\" alt=\"\" width=\"1920\" height=\"1048\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot_2021-03-22_12_43_10.png 1920w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot_2021-03-22_12_43_10-300x164.png 300w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot_2021-03-22_12_43_10-1024x559.png 1024w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot_2021-03-22_12_43_10-768x419.png 768w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot_2021-03-22_12_43_10-1536x838.png 1536w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot_2021-03-22_12_43_10-1200x655.png 1200w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/p>\n<p><strong>Access Control<\/strong><\/p>\n<p>This prevents anyone on the internet from creating meetings and consuming your server&#8217;s resources.<\/p>\n<pre>sudo nano \/etc\/prosody\/conf.avail\/<strong>example.com<\/strong>.cfg.lua<\/pre>\n<p>Edit the authentication option:<\/p>\n<pre>...\r\nVirtualHost \"example.com\"\r\n    ...\r\n    authentication = \"<strong>internal_plain<\/strong>\"\r\n...<\/pre>\n<p>This setting allows only registered users to create and access meetings.<\/p>\n<p>If you want to invite external participants (non-registered users), add the following to the bottom of the file:<\/p>\n<pre>VirtualHost \"<strong>guest.example.com<\/strong>\"\r\n    authentication = \"<strong>anonymous<\/strong>\"\r\n    c2s_require_encryption = false<\/pre>\n<p>You do not need to create the guest subdomain; it is used internally by Jitsi only.<\/p>\n<pre>sudo nano \/etc\/jitsi\/meet\/<strong>example.com<\/strong>-config.js<\/pre>\n<p>Update the <code>anonymousdomain<\/code> option accordingly:<\/p>\n<pre>...\r\n    hosts: {\r\n        ...\r\n        domain: 'example.com',\r\n        ...\r\n        anonymousdomain: '<strong>guest.example.com<\/strong>',\r\n...<\/pre>\n<p>Next:<\/p>\n<pre>sudo nano \/etc\/jitsi\/jicofo\/sip-communicator.properties<\/pre>\n<p>Append:<\/p>\n<pre>org.jitsi.jicofo.auth.URL=XMPP:<strong>example.com<\/strong><\/pre>\n<p>Restart all services:<\/p>\n<pre>sudo systemctl restart prosody\r\nsudo systemctl restart jicofo\r\nsudo systemctl restart jitsi-videobridge2<\/pre>\n<p>Create users with the following command:<\/p>\n<pre>sudo prosodyctl register <span style=\"color: #ff0000;\"><strong>user1<\/strong><\/span> <strong>example.com<\/strong> <span style=\"color: #ff0000;\"><strong>password1<\/strong><\/span><\/pre>\n<p>Now, when someone tries to create or join a meeting, they will wait in a lobby until the host connects.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1551\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-22-13-51-11.png\" alt=\"\" width=\"648\" height=\"595\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-22-13-51-11.png 648w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-22-13-51-11-300x275.png 300w\" sizes=\"auto, (max-width: 648px) 100vw, 648px\" \/><\/p>\n<p>The host can click the button and enter their credentials to start the meeting:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1552\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-22-13-52-16.png\" alt=\"\" width=\"648\" height=\"595\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-22-13-52-16.png 648w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-22-13-52-16-300x275.png 300w\" sizes=\"auto, (max-width: 648px) 100vw, 648px\" \/><\/p>\n<p>Additional commands for managing your conference service:<\/p>\n<pre>sudo prosodyctl --help\r\nsudo prosodyctl adduser <strong>user@example.com<\/strong>\r\nsudo prosodyctl deluser <strong>user@example.com<\/strong>\r\nsudo prosodyctl passwd <strong>user@example.com<\/strong>\r\nsudo prosodyctl reload<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1599\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-24-14-26-59.png\" alt=\"\" width=\"960\" height=\"1049\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-24-14-26-59.png 960w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-24-14-26-59-275x300.png 275w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-24-14-26-59-937x1024.png 937w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-24-14-26-59-768x839.png 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1608\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-24-16-47-10.png\" alt=\"\" width=\"1280\" height=\"818\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-24-16-47-10.png 1280w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-24-16-47-10-300x192.png 300w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-24-16-47-10-1024x654.png 1024w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-24-16-47-10-768x491.png 768w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2021\/03\/Screenshot-from-2021-03-24-16-47-10-1200x767.png 1200w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p>Read more about how to monitor your server&#8217;s resources via CLI [<a href=\"https:\/\/dft.wiki\/?p=738\">Link<\/a>].<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jitsi [Link] is an open-source video conferencing solution for web and mobile. HD audio and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-1456","post","type-post","status-publish","format-standard","hentry","category-web"],"_links":{"self":[{"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/posts\/1456","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dft.wiki\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1456"}],"version-history":[{"count":12,"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/posts\/1456\/revisions"}],"predecessor-version":[{"id":5764,"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/posts\/1456\/revisions\/5764"}],"wp:attachment":[{"href":"https:\/\/dft.wiki\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dft.wiki\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1456"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dft.wiki\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}