I know you can run a Jitsi server on a Raspberry Pi 4. But is it any good? That’s something I wanted to find out.

Have questions about your setup? Ask in our forums.


Parts List

  • Broadband internet connection with no blocked ports. 
  • A router capable of port forwarding. 
  • Fully qualified domain name 
  • Raspberry Pi 4 2/4/8 GB. 
  • SD card.

Ports

You’ll need to forward the following ports to the IP address of your Raspberry Pi. 

  • 80/tcp
  • 443/tcp
  • 5349/tcp
  • 3478/udp
  • 10000/udp

0. DNS and port forwarding

Your ANAME and CNAME records should look a little something like this. ANAME pointed at your public IP address and CNAME mapped to the meet subdomain.


1. Download and install Raspberry Pi OS (Legacy, 64-bit) Lite.


2. Mount the Raspberry Pi rootfs partition, head over to /etc, and open a terminal.


3. Edit dhcpcd.conf and give the Pi a static IP address.


4. SSH into the Pi and set a root password.

sudo passwd root

5. Configure the Pi to require a password when using sudo.

sudo nano /etc/sudoers.d/010_pi-nopasswd

6. Install and configure UFW.

sudo apt install ufw
sudo ufw allow 80/tcp ; sudo ufw allow 443/tcp ; sudo ufw allow 5349/tcp ; sudo ufw allow 3478/udp ; sudo ufw allow 10000/udp ; sudo ufw allow OpenSSH
sudo ufw enable

7. Set your hostname

sudo hostnamectl set-hostname jitsi.your_domain

8. Map the server’s hostname to your public IP address.

sudo nano /etc/hosts

9. Add the Jitsi APT repository.

curl https://download.jitsi.org/jitsi-key.gpg.key -o jitsi-key.gpg.key 
sudo gpg --output /usr/share/keyrings/jitsi-key.gpg --dearmor jitsi-key.gpg.key 
rm *.key
sudo nano /etc/apt/sources.list.d/jitsi-stable.list

Add the following to jitsi-stable.list and save.

deb [signed-by=/usr/share/keyrings/jitsi-key.gpg] https://download.jitsi.org stable/

10. Update apt and install Jitsi.

sudo apt update
sudo apt install jitsi-meet=2.0.8719-1 jicofo=1.0-1038-1 jitsi-meet-web=1.0.7322-1 jitsi-meet-web-config=1.0.7322-1 jitsi-meet-prosody=1.0.7322-1 jitsi-videobridge2=2.3-25-g1da507fa-1 jitsi-meet-turnserver=1.0.7322-1

11. During the installation, you will be prompted for your domain name.


12. When prompted, select Let’s Encrypt for your SSL certificate.


13. Tell the TURN server to wait for the network interface.

sudo systemctl edit coturn.service
 [Unit]
 After=network-online.target
 Wants=network-online.target

14. Configure SIP

sudo nano /etc/jitsi/jicofo/sip-communicator.properties

Add the following and save

org.jitsi.jicofo.auth.URL=XMPP:meet.yourdomain.com

15. Locking room creation

Open /etc/prosody/conf.avail/jitsi.your_domain.cfg.lua and change authentication = “jitsi-anonymous” to authentication = “internal_hashed”

sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua

16. Create user accounts.

You will need a username and password for each user.

sudo prosodyctl register user your_domain password

17. Prevent Jitsi from updating.

sudo apt-mark hold jitsi-meet=2.0.8719-1 jicofo=1.0-1038-1 jitsi-meet-web=1.0.7322-1 jitsi-meet-web-config=1.0.7322-1 jitsi-meet-prosody=1.0.7322-1 jitsi-videobridge2=2.3-25-g1da507fa-1 jitsi-meet-turnserver=1.0.7322-1

18. Reboot the system and you should be good to go.

sudo reboot now

Final Thoughts

The RasPi 4 makes a solid Jitsi server for 2 to 6 people if all you need to do is host a video conference.

I’ve been using it for the past couple of weeks, and it’s been perfectly stable.

Have questions about your setup? Ask in our forums.

VennStone

View all posts

6 comments

  • Hi there!
    I really enjoyed this youtube video and I have followed the post as exactly as possible however, I’m stuck. Whenever I try to start a jitsi meet I have to authenticate. I do that then I have to say “I am the host". I click that and authenticate again and it just goes round and round in circles. 
    I have set jitsi up at meet.mydomain.com and I have tried these username combinations:myusernamemyusername@mydomain.commyusername@meet.mydomain.com
    I believe that the correct username should be myusername@meet.mydomain.com
    Any suggestions on how I can debug this issue?
    Thanks 😀

    • @deskimo The username will be the one chosen on step 16 of the guide.

      sudo prosodyctl register user your_domain password

       

      If my domain was meet.interface.com and my user was venn using 12345 as the password, it would look like this.

      sudo prosodyctl register venn meet.interface.com 12345

      When logging into a room, my username would be venn and the password would be 12345.

  • Thanks so much for the response. I realize now that authentication is actually working (I think). While logging in, I have a ssh window open and did: tail -f /var/log/prosody
    I can see that I am authenticating but whenever I click “I am the host" two lines are added to the prosody log and it ends with “session close". (I substituted my domain in the following lines.)May 27 20:10:04 bosh3fba0aa5-454c-4434-9e84-dfb284b53d6d info Authenticated as dan@meet.mydomain.comMay 27 20:10:06 bosh3fba0aa5-454c-4434-9e84-dfb284b53d6d info BOSH client disconnected: session closeMay 27 20:10:07 mod_bosh info New BOSH session, assigned it sid ‘79772bac-3c95-4e63-b6a4-53eb0691fe54’May 27 20:10:07 bosh79772bac-3c95-4e63-b6a4-53eb0691fe54 info BOSH client disconnected: session closeMay 27 20:10:10 mod_bosh info New BOSH session, assigned it sid ‘f05c36f5-bd80-49e2-bcec-40f689806de9’May 27 20:10:10 boshf05c36f5-bd80-49e2-bcec-40f689806de9 info Authenticated as dan@meet.mydomain.comMay 27 20:10:14 mod_bosh info New BOSH session, assigned it sid ‘3122e86b-64af-4731-8728-6acd7bc3979d’May 27 20:10:14 bosh3122e86b-64af-4731-8728-6acd7bc3979d info BOSH client disconnected: session close
    Any ideas as to what I need to do? 

  • Are you running the exact versions from the guide with a Raspberry Pi 4?

    jitsi-meet=2.0.8719-1 jicofo=1.0-1038-1 jitsi-meet-web=1.0.7322-1 jitsi-meet-web-config=1.0.7322-1 jitsi-meet-prosody=1.0.7322-1 jitsi-videobridge2=2.3-25-g1da507fa-1 jitsi-meet-turnserver=1.0.7322-1

     

    I pinned those specific versions because they were the only ones that functioned correctly on my Raspberry Pi 4.

  • This is command I did to install (copied from my history):
    sudo apt install jitsi-meet=2.0.8719-1 jicofo=1.0-1038-1 jitsi-meet-web=1.0.7322-1 jitsi-meet-web-config=1.0.7322-1 jitsi-meet-prosody=1.0.7322-1 jitsi-videobridge2=2.3-25-g1da507fa-1 jitsi-meet-turnserver=1.0.7322-1
    I must have messed up along the way, I’m thinking of wiping and trying it all again 😉

  • Nuke and pave, while not optimal, is a completely valid option with jitsi.

    It’s been seven months since the original guide, and the latest version of jitsi may work out of the box.

    If you want to give that a try.

    sudo apt-get -y install jitsi-meet

Recent Posts