🚀 WebRTC - P2P - Simple, Secure, Fast Real-Time Video Conferences Up to 4k and 60fps, compatible with all browsers and platforms.
Free WebRTC - P2P - Simple, Secure, Fast Real-Time Video Conferences with support for up to 4k resolution and 60fps. It's compatible with all major browsers and platforms.
Join our community for questions, discussions, and support on Discord
100% Free
- Open Source under (AGPLv3)
- Self Hosted
and PWA!Open
MiroTalk P2P or alternative link.Choose
a room name and click Join Room.Grant
camera and microphone access.Share
the room URL and wait for participants to join the video conference.You can directly join a room
by using links like:
https://p2p.mirotalk.com/join?room=test&name=mirotalk&audio=0&video=0&screen=0&hide=0¬ify=0
Params | Type | Description |
---|---|---|
room | string | Room Id |
name | string | User name |
audio | boolean | Audio stream |
video | boolean | Video stream |
screen | boolean | Screen stream |
hide | boolean | Hide myself |
notify | boolean | Welcome message |
token | string | jwt token |
Note
The
token
parameter are optional when eitherHOST_PROTECTED
orHOST_USER_AUTH
is set totrue
in the.env
file. The valid list of users is defined in theHOST_USERS
configuration.
When host protection or host user auth is enabled, the host/users must provide a valid username and password as specified in the .env
file.
Params | Value | Description |
---|---|---|
HOST_PROTECTED |
true if protection is enabled, false if not (default false) |
Requires the host to provide a valid username and password during room initialization. |
HOST_USER_AUTH |
true if user authentication is required, false if not (default false). |
Determines whether host authentication is required. |
HOST_USERS |
JSON array with user objects: {"username": "username", "password": "password"} |
List of valid host users with their credentials. |
To embed a meeting in your service or app
using an iframe, use the following code:
<iframe
allow="camera; microphone; display-capture; fullscreen; clipboard-read; clipboard-write; autoplay"
src="https://p2p.mirotalk.com/newcall"
style="height: 100vh; width: 100vw; border: 0px;"
></iframe>
Node.js
installed. This project has been tested with Node versions 12.X, 14.X, 16.X and 18.x.# clone this repo
$ git clone https://github.com/miroslavpejic85/mirotalk.git
# go to mirotalk dir
$ cd mirotalk
# copy .env.template to .env (edit it according to your needs)
$ cp .env.template .env
# install dependencies
$ npm install
# start the server
$ npm start
# copy .env.template to .env (edit it according to your needs)
$ cp .env.template .env
# Copy docker-compose.template.yml in docker-compose.yml (edit it according to your needs)
$ cp docker-compose.template.yml docker-compose.yml
# Get official image from Docker Hub
$ docker pull mirotalk/p2p:latest
# create and start containers
$ docker-compose up # -d
# to stop and remove resources
$ docker-compose down
Ngrok/HTTPS:
You can start a video conference directly from your local PC and make it accessible from any device outside your network by following these instructions, or expose it directly on HTTPS.
Stun/Turn:
Install your own Stun & Turn by following this instructions.
Self-hosting:
For self-hosting MiroTalk P2P
on your own dedicated server, please refer to this comprehensive guide. It will provide you with all the necessary instructions to get your MiroTalk P2P instance up and running smoothly.
Rest API:
The API documentation uses swagger at http://localhost:3000/api/v1/docs. Or check it out on live.
# The response will give you the active meetings (default disabled).
$ curl -X GET "http://localhost:3000/api/v1/meetings" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
$ curl -X GET "https://p2p.mirotalk.com/api/v1/meetings" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
$ curl -X GET "mirotalk.up.railway.app/api/v1/meetings" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
# The response will give you a entrypoint / Room URL for your meeting.
$ curl -X POST "http://localhost:3000/api/v1/meeting" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json"
$ curl -X POST "https://p2p.mirotalk.com/api/v1/meeting" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json"
$ curl -X POST "https://mirotalk.up.railway.app/api/v1/meeting" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json"
# The response will give you a entrypoint / URL for the direct join to the meeting.
$ curl -X POST "http://localhost:3000/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":"true","video":"true","screen":"false","hide":"false","notify":"true"}'
$ curl -X POST "https://p2p.mirotalk.com/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":"true","video":"true","screen":"false","hide":"false","notify":"true"}'
$ curl -X POST "https://mirotalk.up.railway.app/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":"true","video":"true","screen":"false","hide":"false","notify":"true"}'
# The response will give you an entry point/URL for direct joining to the meeting with a token.
$ curl -X POST "http://localhost:3000/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":"true","video":"true","screen":"false","hide":"false","notify":"true","token":{"username":"username","password":"password","presenter":"true", "expire":"1h"}}'
$ curl -X POST "https://p2p.mirotalk.com/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":"true","video":"true","screen":"false","hide":"false","notify":"true","token":{"username":"username","password":"password","presenter":"true", "expire":"1h"}}'
$ curl -X POST "https://mirotalk.up.railway.app/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":"true","video":"true","screen":"false","hide":"false","notify":"true","token":{"username":"username","password":"password","presenter":"true", "expire":"1h"}}'
# The response will give you a valid token for a meeting.
$ curl -X POST "http://localhost:3000/api/v1/token" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"username":"username","password":"password","presenter":"true", "expire":"1h"}'
$ curl -X POST "https://p2p.mirotalk.com/api/v1/token" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"username":"username","password":"password","presenter":"true", "expire":"1h"}'
$ curl -X POST "https://mirotalk.up.railway.app/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"username":"username","password":"password","presenter":"true", "expire":"1h"}'
This application is running for demonstration purposes
on Hetzner, one of the best
cloud providers and dedicated root servers.
Use my personal link to receive €20 IN CLOUD CREDITS
.
Experience also top-tier German web hosting – dedicated servers, VPS, and web hosting at unbeatable prices
. Reliable, secure, and backed by 24/7 support. Explore now here
To set up your own instance of MiroTalk P2P
on a dedicated cloud server, please refer to our comprehensive self-hosting documentation. This guide will walk you through the process step by step, ensuring a smooth and successful deployment.
npm run lint
MiroTalk P2P is free and open-source under the terms of AGPLv3 (GNU Affero General Public License v3.0). Please respect the license conditions
, In particular modifications need to be free as well and made available to the public
. Get a quick overview of the license at Choose an open source license.
To obtain a MiroTalk P2P license with terms different from the AGPLv3, you can conveniently make your purchase on CodeCanyon. This allows you to tailor the licensing conditions to better suit your specific requirements.
Do you find MiroTalk P2P indispensable for your needs? Join us in supporting this transformative project by becoming a backer or sponsor. By doing so, not only will your logo prominently feature here, but you'll also drive the growth and sustainability of MiroTalk P2P. Your support is vital in ensuring that this valuable platform continues to thrive and remain accessible for all. Make an impact – back MiroTalk P2P today and be part of this exciting journey!
Try also MiroTalk SFU selective forwarding unit
real-time video conferences, optimized for large groups. Unlimited time, unlimited concurrent rooms
each having 8+ participants, up to ~ 100 per single CPU.
Try also MiroTalk C2C peer to peer
real-time video conferences, optimized for cam 2 cam. Unlimited time, unlimited concurrent rooms
each having 2 participants.
Try also MiroTalk BRO Live broadcast
(peer to peer) live video, audio and screen stream to all connected users (viewers). Unlimited time, unlimited concurrent rooms
each having a broadcast and many viewers.
Try also MiroTalk WEB a platform that allows for the management of an unlimited number of users
. Each user must register with their email, username, and password, after which they gain access to their personal dashboard
. Within the dashboard, users can manage their rooms and schedule meetings
using the desired version of MiroTalk on a specified date and time. Invitations to these meetings can be sent via email, shared through the web browser, or sent via SMS.
This project is tested with BrowserStack.