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.
![Cloudfalre DNS setup](https://interfacinglinux.com/wp-content/uploads/2024/01/10-1024x575-1.webp)
1. Download and install Raspberry Pi OS (Legacy, 64-bit) Lite.
![Raspberry Pi imager](https://interfacinglinux.com/wp-content/uploads/2024/01/1-1-1024x653-1.webp)
2. Mount the Raspberry Pi rootfs partition, head over to /etc, and open a terminal.
![Mounting rootfs](https://interfacinglinux.com/wp-content/uploads/2024/01/2-1-1024x607-1.webp)
3. Edit dhcpcd.conf and give the Pi a static IP address.
![Setting static IP](https://interfacinglinux.com/wp-content/uploads/2024/01/3-2-1024x543-1.webp)
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
![Configure Raspberry Pi password](https://interfacinglinux.com/wp-content/uploads/2024/01/4-1-1024x515-1.webp)
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
![Setting server hostname and IP](https://interfacinglinux.com/wp-content/uploads/2024/01/5-1-1024x515-1.webp)
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.
![Setting Jitsi domain name](https://interfacinglinux.com/wp-content/uploads/2024/01/6-1024x514-1.webp)
12. When prompted, select Let’s Encrypt for your SSL certificate.
![Jisti SSL setup](https://interfacinglinux.com/wp-content/uploads/2024/01/7-1-1024x515-1.webp)
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
![TURN server jitsi config](https://interfacinglinux.com/wp-content/uploads/2024/01/8-1-1024x515-1.webp)
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
![jitsi lua config](https://interfacinglinux.com/wp-content/uploads/2024/01/9-1-1024x516-1.webp)
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.
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.
If my domain was meet.interface.com and my user was venn using 12345 as the password, it would look like this.
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?
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.