[mirotalk] - update readme

This commit is contained in:
Miroslav Pejic
2023-10-15 22:08:36 +02:00
parent 0224e5af61
commit 301d478d95
4 changed files with 91 additions and 416 deletions
+80 -75
View File
@@ -1,11 +1,11 @@
# <p align="center">MiroTalk P2P</p>
<p align="center">Free WebRTC - P2P - Simple, Secure, Fast Real-Time Video Conferences Up to 4k and 60fps, compatible with all browsers and platforms.</p>
<p align="center">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.</p>
<hr />
<p align="center">
<a href="https://p2p.mirotalk.com">p2p.mirotalk.com</a>
<a href="https://p2p.mirotalk.com">Explore MiroTalk P2P</a>
</p>
<hr />
@@ -17,7 +17,7 @@
<hr />
<p align="center">
For questions, discussions, help & support, join with us on <a href="https://discord.gg/rgGYfeYW3N">discord</a>
Join our community for questions, discussions, and support on <a href="https://discord.gg/rgGYfeYW3N">Discord</a>
</p>
<hr />
@@ -27,45 +27,47 @@
<br/>
- Is `100% Free` - `Open Source` - `Self Hosted` and [PWA](https://en.wikipedia.org/wiki/Progressive_web_application)!
- No download, plug-in, or login required, entirely browser-based
- Unlimited number of conference rooms without call time limitation
- Translated in 133 languages
- Host protection to ensure unauthorized access to your host
- Possibility to Password protect the Room for the meeting
- Desktop and Mobile compatible
- Optimized Room URL Sharing for mobile
- Webcam Streaming (Front - Rear for mobile)
- Audio Streaming crystal clear with detect speaking and volume indicator
- Screen Sharing to present documents, slides, and more...
- File Sharing (with drag-and-drop), share any files to your participants in the room
- Select Audio Input - Output and Video source
- Ability to set video quality up to 4K and 60 FPS
- Recording your Screen, Audio and Video
- Snapshot the video frame and save it as image png
- Chat with Emoji Picker to show you feeling, private messages, Markdown support, possibility to Save the conversations, and many more
- ChatGPT (openAI), designed to answer users' questions, provide relevant information, and connect them with relevant resources
- Speech recognition to send the speeches
- Push to talk, like a walkie-talkie.
- Advance collaborative whiteboard for the teachers
- Share any YT Embed video, video mp4, webm, ogg and audio mp3 in real-time
- Full-Screen Mode on mouse click on the Video element, Pin/Unpin, Zoom in-out video element
- Possibility to Change UI Themes
- Right-click on the Video elements for more options
- Direct `peer-to-peer` connection ensures the lowest latency thanks to `WebRTC`
- Supports [REST API](app/api/README.md) (Application Programming Interface)
- [Slack](https://api.slack.com/apps/) API integration
- [Sentry](https://sentry.io/) for error reporting
- ...
- Is `100% Free` - `Open Source (AGPLv3)` - `Self Hosted` and [PWA](https://en.wikipedia.org/wiki/Progressive_web_application)!
- No downloads, plugins, or logins required completely browser-based.
- Unlimited conference rooms with no time limitations.
- Translated into 133 languages.
- Host protection to prevent unauthorized access.
- Room password protection.
- Compatible with desktop and mobile devices.
- Optimized mobile room URL sharing.
- Webcam streaming with front and rear camera support for mobile devices.
- Crystal-clear audio streaming with speaking detection and volume indicators.
- Screen sharing for presentations.
- File sharing with drag-and-drop support.
- Choose your audio input, output, and video source.
- Supports video quality up to 4K and 60 FPS.
- Supports advance Picture-in-Picture (PiP) offering a more streamlined and flexible viewing experience.
- Record your screen, audio, and video.
- Snapshot video frames and save them as PNG images.
- Chat with an Emoji Picker for expressing feelings, private messages, Markdown support, and conversation saving.
- ChatGPT (powered by OpenAI) for answering questions, providing information, and connecting users to relevant resources.
- Speech recognition for sending spoken messages.
- Push-to-talk functionality, similar to a walkie-talkie.
- Advanced collaborative whiteboard for teachers.
- Real-time sharing of YouTube embed videos, video files (MP4, WebM, OGG), and audio files (MP3).
- Full-screen mode with one-click video element zooming and pin/unpin.
- Customizable UI themes.
- Right-click options on video elements for additional controls.
- Direct peer-to-peer connections for low-latency communication through WebRTC.
- Supports [REST API](app/api/README.md) (Application Programming Interface).
- Integration with [Slack](https://api.slack.com/apps/) for enhanced communication.
- Utilizes [Sentry](https://sentry.io/) for error reporting.
- And much more...
</details>
<details>
<summary>About</summary>
- [Presentation](https://www.canva.com/design/DAE693uLOIU/view)
<br>
- [Video](https://www.youtube.com/watch?v=_IVn2aINYww)
- [Presentation](https://www.canva.com/design/DAE693uLOIU/view)
- [Video Overview](https://www.youtube.com/watch?v=_IVn2aINYww)
</details>
@@ -74,11 +76,10 @@
<br/>
- `Open` https://p2p.mirotalk.com/newcall or
- https://mirotalk.up.railway.app/newcall
- `Pick` your Room name and Join
- `Allow` using the camera and microphone
- `Share` the Room URL and Wait for someone to join for the video conference
1. `Open` [MiroTalk P2P](https://p2p.mirotalk.com/newcall) or [alternative link](https://mirotalk.up.railway.app/newcall).
2. `Choose` a room name and click **Join Room**.
3. `Grant` camera and microphone access.
4. `Share` the room URL and wait for participants to join the video conference.
</details>
@@ -87,18 +88,18 @@
<br/>
- You can `join` directly to `room` by going to:
- 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&notify=0
- https://mirotalk.up.railway.app/join?room=test&name=mirotalk&audio=0&video=0&screen=0&notify=0
| Params | Type | Description |
| ------ | ------- | --------------- |
| room | string | room Id |
| name | string | user name |
| audio | boolean | audio stream |
| video | boolean | video stream |
| screen | boolean | screen stream |
| notify | boolean | welcome message |
| room | string | Room Id |
| name | string | User name |
| audio | boolean | Audio stream |
| video | boolean | Video stream |
| screen | boolean | Screen stream |
| notify | boolean | Welcome message |
> **Note**
>
@@ -116,7 +117,7 @@
<br/>
Embedding a meeting into a service or app using an iframe.
To embed a meeting in `your service or app` using an iframe, use the following code:
```html
<iframe
@@ -133,7 +134,7 @@ Embedding a meeting into a service or app using an iframe.
<br/>
- You will need to have `Node.js` installed, this project has been tested with Node versions [12.X](https://nodejs.org/en/blog/release/v12.22.1/), [14.X](https://nodejs.org/en/blog/release/v14.17.5/), [16.X](https://nodejs.org/en/blog/release/v16.15.1/) and [18.x](https://nodejs.org/en/blog/release/v18.16.0).
- Before running MiroTalk P2P, ensure you have `Node.js` installed. This project has been tested with Node versions [12.X](https://nodejs.org/en/blog/release/v12.22.1/), [14.X](https://nodejs.org/en/blog/release/v14.17.5/), [16.X](https://nodejs.org/en/blog/release/v16.15.1/) and [18.x](https://nodejs.org/en/download).
```bash
# clone this repo
@@ -148,7 +149,7 @@ $ npm install
$ npm start
```
- Open http://localhost:3000 in browser
- Open [http://localhost:3000](http://localhost:3000) in your browser.
</details>
@@ -159,8 +160,8 @@ $ npm start
![docker](public/images/docker.png)
- Install [docker engine](https://docs.docker.com/engine/install/)
- Install [docker compose](https://docs.docker.com/compose/install/)
- Repository [docker hub](https://hub.docker.com/r/mirotalk/p2p)
- Install [docker engine](https://docs.docker.com/engine/install/) and [docker compose](https://docs.docker.com/compose/install/)
```bash
# copy .env.template to .env (edit it according to your needs)
@@ -175,8 +176,7 @@ $ docker-compose up # -d
$ docker-compose down
```
- Open http://localhost:3000 in browser
- Repository [docker hub](https://hub.docker.com/r/mirotalk/p2p)
- Open [http://localhost:3000](http://localhost:3000) in your browser.
</details>
@@ -185,7 +185,7 @@ $ docker-compose down
<br/>
You can start videoconferencing directly from your Local PC, and be reachable from any device outside your network, simply by reading [these documentation](docs/ngrok.md), or expose it directly on [HTTPS](app/ssl/README.md)
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](docs/ngrok.md), or expose it directly on [HTTPS](app/ssl/README.md).
</details>
@@ -194,7 +194,16 @@ You can start videoconferencing directly from your Local PC, and be reachable fr
<br/>
Install your own [Stun](https://en.wikipedia.org/wiki/STUN) & [Turn](https://en.wikipedia.org/wiki/TURN) by following [this steps](./docs/coturn.md).
Install your own [Stun & Turn](https://docs.mirotalk.com/coturn/stun-turn/) by following [this instructions](./docs/coturn.md).
</details>
<details>
<summary>Self Hosting</summary>
<br/>
For `self-hosting MiroTalk P2P` on your own dedicated server, please refer to [this comprehensive guide](docs/self-hosting.md). It will provide you with all the necessary instructions to get your MiroTalk P2P instance up and running smoothly.
</details>
@@ -203,6 +212,8 @@ Install your own [Stun](https://en.wikipedia.org/wiki/STUN) & [Turn](https://en.
<br/>
- The [API documentation](https://docs.mirotalk.com/mirotalk-p2p/api/) uses [swagger](https://swagger.io/) at http://localhost:3000/api/v1/docs. Or check it out on [live](https://p2p.mirotalk.com/api/v1/docs).
```bash
# The response will give you a entrypoint / Room URL for your meeting, where authorization: API_KEY_SECRET.
$ curl -X POST "http://localhost:3000/api/v1/meeting" -H "authorization: mirotalk_default_secret" -H "Content-Type: application/json"
@@ -210,10 +221,6 @@ $ curl -X POST "https://p2p.mirotalk.com/api/v1/meeting" -H "authorization: miro
$ curl -X POST "https://mirotalk.up.railway.app/api/v1/meeting" -H "authorization: mirotalk_default_secret" -H "Content-Type: application/json"
```
## API Documentation
The API documentation uses [swagger](https://swagger.io/) at http://localhost:3000/api/v1/docs. Or check it out on [live](https://p2p.mirotalk.com/api/v1/docs).
</details>
<details open>
@@ -231,7 +238,7 @@ Use [my personal link](https://hetzner.cloud/?ref=XdRifCzCK3bn) to receive `€
---
If you need help to deploy `MiroTalk P2P` instance on `your dedicated cloud server`, or for other needs, don't hesitate to contact us at p2p.mirotalk@gmail.com
To set up your own instance of `MiroTalk P2P` on a dedicated cloud server, please refer to our comprehensive [self-hosting documentation](https://docs.mirotalk.com/mirotalk-p2p/self-hosting/). This guide will walk you through the process step by step, ensuring a smooth and successful deployment.
</details>
@@ -256,15 +263,6 @@ https://mirotalk.up.railway.app
</details>
<details>
<summary>Self Hosting</summary>
<br/>
To `Self-Host MiroTalk P2P` on `Your` dedicated `Server`, read [this documentation](docs/self-hosting.md).
</details>
<details>
<summary>Security</summary>
@@ -302,9 +300,9 @@ For `Security` concerning, please follow [this documentation](./SECURITY.md).
[![AGPLv3](public/images/AGPLv3.png)](LICENSE)
MiroTalk is free and can be modified and forked. But the conditions of the AGPLv3 (GNU Affero General Public License v3.0) need to be respected. 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](https://choosealicense.com/licenses/agpl-3.0/).
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](https://choosealicense.com/licenses/agpl-3.0/).
For a MiroTalk license under conditions other than AGPLv3, please contact us at license.mirotalk@gmail.com or [purchase directly from CodeCanyon](https://codecanyon.net/item/mirotalk-p2p-webrtc-realtime-video-conferences/38376661).
To obtain a [MiroTalk P2P license](https://docs.mirotalk.com/license/licensing-options/) with terms different from the AGPLv3, you can conveniently make your [purchase on CodeCanyon](https://codecanyon.net/item/mirotalk-p2p-webrtc-realtime-video-conferences/38376661). This allows you to tailor the licensing conditions to better suit your specific requirements.
</details>
@@ -313,9 +311,7 @@ For a MiroTalk license under conditions other than AGPLv3, please contact us at
<br/>
Do you find MiroTalk useful?
Support the project by [becoming a backer or sponsor](https://github.com/sponsors/miroslavpejic85). Your logo will show up here with a link to your website.
Do you find MiroTalk P2P indispensable for your needs? Join us in supporting this transformative project by [becoming a backer or sponsor](https://github.com/sponsors/miroslavpejic85). 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!
| | |
| --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
@@ -345,6 +341,15 @@ Try also [MiroTalk C2C](https://github.com/miroslavpejic85/mirotalkc2c) cam 2 ca
</details>
<details>
<summary>MiroTalk BRO</summary>
<br>
Try also [MiroTalk BRO](https://github.com/miroslavpejic85/mirotalkbro) live broadcasting.
</details>
<details>
<summary>MiroTalk WEB</summary>
+5 -85
View File
@@ -1,91 +1,11 @@
# Install Coturn STUN/TURN server
![stunTurn](../public/images/stun-turn.png)
#### What are STUN and TURN in the context of network communication?
## Requirements
https://docs.mirotalk.com/coturn/stun-turn/
- Recommended: [Hetzner](https://www.hetzner.com/cloud) (`CPX11` it's enough, OS: `Ubuntu 20.04 LTS / 22.04.1 LTS`).
- Use [my personal link](https://hetzner.cloud/?ref=XdRifCzCK3bn) to receive `€⁠20 in cloud credits`.
- Your domain name, example: `your.domain.name`
- Set a DNS A record for that domain that point to Your Server public IPv4
> DNS A Record: The Address Mapping record (or DNS host record) stores a hostname and its corresponding IPv4 address. When users search for your website, the A record redirects this traffic from the web address (xxxxx.com human-readable domain) to the IPv4 address.
- `your.username` and `your.password` to set in the `/etc/turnserver.conf`.
- [Certbot](https://certbot.eff.org/) to generate `cert` & `pkey`.
#### How can I set up and configure my own STUN and TURN servers?
## Quick start
https://docs.mirotalk.com/coturn/installation/
1. Download [coturn](https://github.com/coturn/coturn)
```bash
$ sudo apt-get -y update
$ sudo apt-get -y install coturn
```
2. Uncomment the following line to run Coturn as an automatic system service daemon in `/etc/default/coturn`
```ini
TURNSERVER_ENABLED=1
```
3. Set `/etc/turnserver.conf` to the following:
```ini
listening-port=3478
tls-listening-port=5349
min-port=10000
max-port=20000
fingerprint
lt-cred-mech
user=your.username:your.password
server-name=your.domain.name
realm=your.domain.name
total-quota=100
stale-nonce=600
cert=/etc/letsencrypt/live/your.domain.name/fullchain.pem
pkey=/etc/letsencrypt/live/your.domain.name/privkey.pem
cipher-list="ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384"
no-stdout-log
```
4. If you can't reach coturn on `tls-listening-port`, try to edit `/etc/systemd/system/multi-user.target.wants/coturn.service`
```ini
[Service]
User=root
Group=root
```
5. Reload daemon:
```bash
$ sudo systemctl daemon-reload
```
## Coturn commands
```bash
$ sudo service coturn status
$ sudo service coturn stop
$ sudo service coturn start
$ sudo service coturn restart
```
# Test
Test if it's working:
- https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
- https://icetest.info/
Or use the built in MiroTalk P2P service, just change `your.domain.name`, `your.username` and `your.password` with your own, in the following urls:
- https://p2p.mirotalk.com/test?iceServers=[{"urls":"stun:your.domain.name:3478"},{"urls":"turn:your.domain.name:3478","username":"your.username","credential":"your.password"}]
- https://p2p.mirotalk.com/test?iceServers=[{"urls":"stun:your.domain.name:5349"},{"urls":"turn:your.domain.name:5349","username":"your.username","credential":"your.password"}]
---
+4 -25
View File
@@ -1,32 +1,11 @@
# MiroTalk P2P - Ngrok
![ngrok](../public/images/ngrok.png)
#### What is the purpose and functionality of Ngrok?
If you want to expose MiroTalk P2P from your `Local PC` to outside in `HTTPS`, you need to do 1 thing
https://docs.mirotalk.com/ngrok/ngrok/
Edit the Ngrok part on `.env` file
#### How to exposing MiroTalk P2P with Ngrok?
```bash
# 1. Goto https://ngrok.com
# 2. Get started for free
# 3. Copy YourNgrokAuthToken: https://dashboard.ngrok.com/get-started/your-authtoken
NGROK_ENABLED=true
NGROK_AUTH_TOKEN=YourNgrokAuthToken
```
https://docs.mirotalk.com/mirotalk-p2p/ngrok/
---
Then, when you run it with `npm start`, you should see in the console log this line:
```bash
server_tunnel: 'https://xxxxxxxxxxxxxxxxxx.ngrok.io'
```
So open it in your browser, join in the room, share it to whom you want and wait participants to join.
---
## Support
[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/mirotalk/mirotalk-free-secure-video-calls-chat-screen-sharing)
+2 -231
View File
@@ -1,236 +1,7 @@
# MiroTalk P2P - Self Hosting
## Requirements
#### How can I self-host MiroTalk P2P on my own server?
- Recommended: [Hetzner](https://www.hetzner.com/cloud) (`CPX11` it's enough, OS: `Ubuntu 20.04 LTS / 22.04.1 LTS`).
- Use [my personal link](https://hetzner.cloud/?ref=XdRifCzCK3bn) to receive `€⁠20 in cloud credits`.
- [Node.js](https://nodejs.org/en/) at least 12x, better `16.15.1 LTS` & npm
- Setup your own TURN server like [coturn](https://github.com/coturn/coturn) (recommended) or use third party STUN/TURN servers (configurable on `.env` file)
- Your domain name, example: `your.domain.name`
- Set a DNS A record for that domain that point to Your Server public IPv4
> DNS A Record: The Address Mapping record (or DNS host record) stores a hostname and its corresponding IPv4 address. When users search for your website, the A record redirects this traffic from the web address (xxxxx.com human-readable domain) to the IPv4 address.
https://docs.mirotalk.com/mirotalk-p2p/self-hosting/
---
Install the requirements (Note: Many of the installation steps require `root` or `sudo` access)
```bash
# Install NodeJS 18.X and npm
$ sudo apt update
$ sudo apt -y install curl dirmngr apt-transport-https lsb-release ca-certificates
$ curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
$ sudo apt-get install -y nodejs
$ npm install -g npm@latest
```
---
## Quick start
```bash
# Clone MiroTalk P2P repo
$ git clone https://github.com/miroslavpejic85/mirotalk.git
# Go to mirotalk dir
$ cd mirotalk
# Copy .env.template to .env and edit it if needed
$ cp .env.template .env
# Install dependencies
$ npm install
# Start the server
$ npm start
```
Check if is correctly installed: https://your.domain.name:3000
---
## PM2
![pm2](../public/images/pm2.png)
Using [PM2](https://pm2.keymetrics.io) to run it as daemon
```bash
$ npm install -g pm2
$ pm2 start app/src/server.js
$ pm2 save
$ pm2 startup
```
---
## Docker
![docker](../public/images/docker.png)
If you want to use `Docker`
```bash
# Install docker and docker-compose
$ sudo apt install docker.io
$ sudo apt install docker-compose
# Copy .env.template to .env and edit it if needed
$ 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
```
Check if is correctly installed: https://your.domain.name:3000
---
## Nginx & Certbot
![nginx](../public/images/nginx.png)
In order to use it without the port number at the end, and to have encrypted communications, we going to install [nginx](https://www.nginx.com) and [certbot](https://certbot.eff.org)
```bash
# Install Nginx
$ sudo apt-get install nginx
# Install Certbot (SSL certificates) : https://certbot.eff.org
$ sudo apt install snapd
$ sudo snap install core; sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
# Setup Nginx sites
$ sudo vim /etc/nginx/sites-enabled/default
```
Paste this:
```bash
# HTTP — redirect all traffic to HTTPS
server {
if ($host = your.domain.name) {
return 301 https://$host$request_uri;
}
listen 80;
listen [::]:80 ;
server_name your.domain.name;
return 404;
}
```
```bash
# Check if all configured correctly
$ sudo nginx -t
# Active https for your domain name (follow the instruction)
$ sudo certbot certonly --nginx
# Add let's encrypt part on nginx config
$ sudo vim /etc/nginx/sites-enabled/default
```
Paste this:
```bash
# MiroTalk P2P - HTTPS — proxy all requests to the Node app
server {
# Enable HTTP/2
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name your.domain.name;
# Use the Lets Encrypt certificates
ssl_certificate /etc/letsencrypt/live/your.domain.name/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your.domain.name/privkey.pem;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://localhost:3000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
```
```bash
# Check if all configured correctly
$ sudo nginx -t
# Restart nginx
$ service nginx restart
$ service nginx status
# Auto renew SSL certificate
$ sudo certbot renew --dry-run
# Show certificates
$ sudo certbot certificates
```
Check Your MiroTalk P2P instance: https://your.domain.name
---
## Update script
In order to have always Your MiroTalk P2P updated to latest, we going to create a script
```bash
cd
# Create a file p2pUpdate.sh
$ vim p2pUpdate.sh
```
---
If you use `PM2`, paste this:
```bash
#!/bin/bash
cd mirotalk
git pull
pm2 stop app/src/server.js
sudo npm install
pm2 start app/src/server.js
```
---
If you use `Docker`, paste this:
```bash
#!/bin/bash
cd mirotalk
git pull
docker-compose down
docker pull mirotalk/p2p:latest
docker images |grep '<none>' |awk '{print $3}' |xargs docker rmi
docker-compose up -d
```
---
Make the script executable
```bash
$ chmod +x p2pUpdate.sh
```
Follow the commits of the MiroTalk P2P project [here](https://github.com/miroslavpejic85/mirotalk/commits/master)
To update Your MiroTalk P2P instance at latest commit, execute:
```bash
./p2pUpdate.sh
```
---
## Support
[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/mirotalk/mirotalk-free-secure-video-calls-chat-screen-sharing)