[mirotalksfu] - add docs

هذا الالتزام موجود في:
Miroslav Pejic
2022-06-19 11:49:13 +02:00
الأصل cb9037b7ac
التزام 08b6191e72
5 ملفات معدلة مع 284 إضافات و23 حذوفات

عرض الملف

@@ -130,35 +130,20 @@ $ docker-compose down
</details>
<details>
<summary>Https</summary>
<summary>Ngrok - Https</summary>
<br/>
You can start videoconferencing directly from your Local PC, and be reachable from any device outside your network, simply by following [these steps](https://github.com/miroslavpejic85/mirotalksfu/issues/26#issuecomment-986309051).
You can start videoconferencing directly from your Local PC, and be reachable from any device outside your network, simply by following [these documentation](docs/ngrok.md).
</details>
<details>
<summary>Self Host</summary>
<summary>Self Hosting</summary>
<br/>
Change the `announcedIp` with your `Server public IPv4` on `app/src/config.js`:
```js
{
ip: '0.0.0.0',
announcedIp: 'Server Public IPv4', // 'xx.xxx.xxx.xx'
}
```
Set the inbound rules:
| Port range | Protocol | Source | Description |
| ----------- | -------- | --------- | ------------------- |
| 3010 | TCP | 0.0.0.0/0 | App listen on tcp |
| 40000-40100 | TCP | 0.0.0.0/0 | RTC port ranges tcp |
| 40000-40100 | UDP | 0.0.0.0/0 | RTC port ranges udp |
Follow [this documentation](docs/self-hosting.md).
</details>
@@ -308,11 +293,13 @@ For a MiroTalk license under conditions other than AGPLv3, please contact us at
</details>
<details open>
<summary>Sponsors</summary>
<summary>Support the project</summary>
<br/>
Support this project by [becoming a sponsor](https://github.com/sponsors/miroslavpejic85). Your logo will show up here with a link to your website.
Do you find MiroTalk useful?
Support the project by [becoming a sponsor](https://github.com/sponsors/miroslavpejic85). Your logo will show up here with a link to your website.
[![BroadcastX](public/sponsors/BroadcastX.png)](https://broadcastx.de/)

عرض الملف

@@ -282,7 +282,7 @@ async function ngrokStart() {
hostConfig: hostCfg,
announced_ip: announcedIP,
server: host,
tunnel: tunnel,
server_tunnel: tunnel,
api_docs: api_docs,
mediasoup_server_version: mediasoup.version,
mediasoup_client_version: mediasoupClient.version,

46
docs/ngrok.md Normal file
عرض الملف

@@ -0,0 +1,46 @@
## MiroTalk SFU - Ngrok
If you want to expose MiroTalk SFU from your `Local PC` to outside in `HTTPS`, you need to do 2 things:
1. Add the [Ngrok](https://ngrok.com) `authToken` and change the `announcedIp`
In `app/src/` copy config.template.js to `config.js` then edit it
```js
/*
Ngrok
1. Goto https://ngrok.com
2. Get started for free
3. Copy YourNgrokAuthToken: https://dashboard.ngrok.com/get-started/your-authtoken
*/
ngrokAuthToken: 'YourNgrokAuthToken', <--- put it here
announcedIp: 'Your-Public-Static-IP-here' <--- take it from https://api.ipify.org
```
2. You need to do a `port forwarding` on your router, something like this:
| Name | Protocol | Port Wan | Port Lan | IP Destination |
| ------------- | --------- | ----------- | ----------- | --------------- |
| `MiroTalkSfu` | `TCP/UDP` | 40000:40100 | 40000:40100 | `Your Local IP` |
| `MiroTalkSfu` | `TCP` | 3010 | 3010 | `Your Local IP` |
Make sure your firewall not blocking rtcPorts `range: 40000:40100`
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.
<br/>
## Do you find MiroTalk useful?
Show your appreciation by becoming a [backer or sponsor](https://github.com/sponsors/miroslavpejic85)
Thank you for your support! ❤️
---

228
docs/self-hosting.md Normal file
عرض الملف

@@ -0,0 +1,228 @@
## MiroTalk SFU - Self Hosting
Requirments:
- Recommended: [Hetzner](https://www.hetzner.com/cloud) (`CPX11` it's enough, OS: `Ubuntu 20.04`)
- [Node.js](https://nodejs.org/en/) at least 12x, better `16.15.1 LTS`
- Your domain example: `your.domain.name` (Set a DNS A record for that domain that point to Your Server public IPv4)
Install the requirements (Note: Many of the installation steps require `root` or `sudo` access)
```bash
# Gcc g++ make
$ apt-get update
$ apt-get install -y build-essential
# Python 3.8 and pip
$ DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
$ apt install -y software-properties-common
$ add-apt-repository ppa:deadsnakes/ppa
$ apt update
$ apt install -y python3.8 python3-pip
# NodeJS 16.X and npm
$ apt install -y curl dirmngr apt-transport-https lsb-release ca-certificates
$ curl -sL https://deb.nodesource.com/setup_16.x | bash -
$ apt-get install -y nodejs
$ npm install -g npm@latest
```
Quick start
```bash
# Clone this repo
$ git clone https://github.com/miroslavpejic85/mirotalksfu.git
# Go to to dir mirotalksfu
$ cd mirotalksfu
# Copy app/src/config.template.js in app/src/config.js
$ cp app/src/config.template.js app/src/config.js
```
Change the `announcedIp` with your `Server public IPv4` on `app/src/config.js`
```js
{
ip: '0.0.0.0',
announcedIp: 'Server Public IPv4', // 'xx.xxx.xxx.xx'
}
```
Set the `inbound rules` if you have the Firewall enalbled
| Port range | Protocol | Source | Description |
| ----------- | -------- | --------- | ------------------- |
| 3010 | TCP | 0.0.0.0/0 | App listen on tcp |
| 40000-40100 | TCP | 0.0.0.0/0 | RTC port ranges tcp |
| 40000-40100 | UDP | 0.0.0.0/0 | RTC port ranges udp |
```bash
# Install dependencies - be patient, the first time will take a few minutes, in the meantime have a good coffee ;)
$ npm install
# Start the server
$ npm start
```
Check if is correctly installed: https://your.domain.name:3010
Using [PM2](https://pm2.keymetrics.io) to run it as deamon
```bash
$ npm install -g pm2
$ pm2 start app/src/Server.js
```
If you want to use Docker
```bash
# Install docker and docker-compose
$ sudo apt install docker.io
$ sudo apt install docker-compose
# Copy app/src/config.template.js in app/src/config.js and edit it if needed
$ cp app/src/config.template.js app/src/config.js
# Copy docker-compose.template.yml in docker-compose.yml and edit it if needed
$ cp docker-compose.template.yml docker-compose.yml
# Build or rebuild services - be patient, the first time will take a few minutes, in the meantime have a good coffee ;)
$ docker-compose build
# Create and start containers as deamon
$ docker-compose up -d
```
Check if is correctly installed: https://your.domain.name:3010
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)
$ 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
#---
# 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;
}
#---
# 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
#---
# MiroTalk SFU - 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:3010/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
#---
# 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 SFU instance: https://your.domain.name/
## Update script
In order to have always Your MiroTalk SFU updated to latest, we going to create a script
```bash
# Create a file sfuUpdate.sh
$ vim sfuUpdate.sh
```
If you use `PM2`, paste this:
```bash
#!/bin/bash
cd mirotalksfu
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 mirotalksfu
git pull
docker-compose down
docker-compose build
docker images |grep '<none>' |awk '{print $3}' |xargs docker rmi
docker-compose up -d
```
Make the script executable
```bash
$ chmod +x ./sfuUpdate.sh
```
Follow the commits of the MiroTalk SFU project [here](https://github.com/miroslavpejic85/mirotalksfu/commits/master)
To update your instance of MiroTalk SFU at latest commit, execute:
```bash
./sfuUpdate.sh
```
<br/>
## Do you find MiroTalk useful?
Show your appreciation by becoming a [backer or sponsor](https://github.com/sponsors/miroslavpejic85)
Thank you for your support! ❤️
---

عرض الملف

@@ -365,7 +365,7 @@ access to use this app.
<i class="fas fa-smile"></i>
</button>
<button id="chatShareFileButton" class="hidden">
<i class="fas fa-file"></i>
<i class="fas fa-paperclip"></i>
</button>
<button id="chatSpeechStartButton" class="hidden">
<i class="fas fa-microphone-slash"></i>