Setting up WebRTC Service

12/8/20231 min read

With the emergence of the open source WebRTC technology, a huge number of products for online conversations and conferences via the browser have been created. Almost all free products and many paid ones are built on its basis. These include self-hosted services BigBlueButton and Jitsi, and many others.

A very simple WebRTC-based service that can be deployed in just a few steps is MiroTalk P2P. It can be used without any configuration at all. By default, everything will work. You can see how it works on the public service:

https://p2p.mirotalk.com

Locally it will look identical.

Main features:

▪️ Full open source, no restrictions.

▪️ User authentication, conference password protection.

▪️ Optimization for smartphones.

▪️ Screen sharing, application sharing, browser tab sharing, including live video stream.

▪️ Quality up to 4K and 60 FPS.

▪️ Conference recording.

▪️ REST API support.

To run Mirotalk locally, just follow the instructions (https://docs.mirotalk.com/mirotalk-p2p/self-hosting/).

The instructions also show how to run the service behind a proxy using Nginx or Apache. If you are going to do that, then double check the configs from the manual. They are made carelessly with some very non-optimal settings. For example, for HTTP to HTTPS redirect in Nginx the if statement is used. This should not be done.

For those who are going to actually install and try it, I'll give a tip. Modern browsers prohibit access to the microphone and camera for sites without HTTPS. MiroTalk can be run without encryption by setting HTTPS=false in .env. Everything will start without any errors. But in the browser there will be no prompt for microphone access. Accordingly, the service will not work. It is enough to set HTTPS=true and everything will be set up on a self-signed certificate. Browsers will work with it.

By default, the free STUN server from Google and some Canadian metered_ca TURN tied to the account of the program's author are used. If you want a completely independent server with P2P between Internet clients, then you can deploy your own STUN and TURN servers using Coturn (https://github.com/coturn/coturn).