mediasoup: Cutting Edge WebRTC Video Conferencing
[root@devops4 mediasoup]# V=14.15.0 && mkdir /usr/local/nodejs-v${V} && cd /usr/local/nodejs-v${V} && wget https://nodejs.org/dist/v${V}/node-v${V}-linux-x64.tar.xz && tar xvf *.xz && rm -f node-v14.15.0-linux-x64.tar.xz && ln -s node-v14.15.0-linux-x64/ node
[root@devops4 local]# cd /usr/local/bin/ && ln -s ../node/bin/node && ln -s ../node/bin/npm && ln -s ../node/bin/npx
[root@devops4 mediasoup]# yum -y install pkgconfig gengetopt openssl-devel glib2-devel libconfig-devel libtool autoconf automake libsrtp-devel.x86_64 libwebsockets-devel.x86_64 gcc gcc-c++ make bzip2 git
[vy@devops4 ~]$ grep PRETTY_NAME /etc/os-release
PRETTY_NAME="CentOS Linux 7 (Core)"
[vy@devops4 ~]$ node -v
v14.15.0
[vy@devops4 ~]$ mkdir mediasoup && wget https://github.com/versatica/mediasoup/archive/v3.zip && unzip v3.zip && rm -f v3.zip && cd mediasoup-3/
[vy@devops4 mediasoup-3]$ npm install
[vy@devops4 mediasoup]$ npm install mediasoup@3 --save
~...~
RuntimeError: gcc <= 4.8 not supported, please upgrade your gcc
[vy@devops4 mediasoup]$
[vy@devops4 gcc-10.2.0]$ screen -r mediasoup_mediasoup
[vy@devops4 ~]$ wget http://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz && tar -xvf gcc-10.2.0.tar.gz && rm -f gcc-10.2.0.tar.gz && cd gcc-10.2.0/ && ./contrib/download_prerequisites
[vy@devops4 ~]$ ./configure --prefix=/home/vy/build/gcc-10.2.0 --disable-multilib --enable-bootstrap && make && make install
[vy@devops4 ~]$ export LD_LIBRARY_PATH=/home/vy/build/gcc-10.2.0/lib64/:$LD_LIBRARY_PATH
[vy@devops4 ~]$ export PATH=/home/vy/build/gcc-10.2.0/bin/:$PATH
[vy@devops4 ~]$ cd /home/vy/build/gcc-10.2.0/bin && ln -s gcc cc && cd -
[vy@devops4 ~]$ gcc --version
gcc (GCC) 10.2.0
~...~
[vy@devops4 ~]$ mkdir mediasoup/ && cd ~/mediasoup/ && npm install mediasoup@3 --save
~...~
[vy@devops4 mediasoup]$ node
Welcome to Node.js v14.15.0.
~...~
> mediasoup = require("mediasoup")
{
types: {
Worker: [class Worker extends EnhancedEventEmitter],
~...~
[vy@devops4 mediasoup-demo-3]$ wget https://github.com/versatica/mediasoup-demo/archive/v3.zip && unzip v3.zip && rm -f v3.zip && cd mediasoup-demo-3 && cd server && npm install && cp config.example.js config.js
[vy@devops4 server]$ cd ../app/ && npm install && cd -
[vy@devops4 mediasoup-demo-3]$ mkdir certs/ && cd certs/ && ln -s /etc/ssl/certs/via--be.com.crt fullchain.pem && ln -s /etc/ssl/private/via--be.com.key privkey.pem && cd -
/home/vy/mediasoup/mediasoup-demo-3
[vy@devops4 mediasoup-demo-3]$ ls -lat certs/
total 8
drwxrwxr-x 2 vy vy 4096 Oct 30 12:38 .
lrwxrwxrwx 1 vy vy 32 Oct 30 12:38 privkey.pem -> /etc/ssl/private/via--be.com.key
lrwxrwxrwx 1 vy vy 30 Oct 30 12:38 fullchain.pem -> /etc/ssl/certs/via--be.com.crt
drwxrwxr-x 8 vy vy 4096 Oct 30 12:38 ..
[vy@devops4 mediasoup-demo-3]$ npm install typescript --save-dev
[vy@devops4 mediasoup-demo-3]$ cp server/node_modules/mediasoup/src/Worker.ts server/node_modules/mediasoup/src/Worker.ts-org
[vy@devops4 mediasoup-demo-3]$ vi server/node_modules/mediasoup/src/Worker.ts
[vy@devops4 mediasoup-demo-3]$ diff server/node_modules/mediasoup/src/Worker.ts server/node_modules/mediasoup/src/Worker.ts-org
272,273c272
< MEDIASOUP_VERSION : '__MEDIASOUP_VERSION__',
< LD_LIBRARY_PATH: process.env["LD_LIBRARY_PATH"]
---
> MEDIASOUP_VERSION : '__MEDIASOUP_VERSION__'
[vy@devops4 mediasoup-demo-3]$ cd mediasoup-demo-3/server/node_modules/mediasoup && npm install && npm run typescript:build && cd -
[vy@devops4 mediasoup-demo-3]$ npm install gulp-cli
[vy@devops4 mediasoup-demo-3]$ cd app/ && /home/vy/mediasoup/node_modules/.bin/gulp dist
[vy@devops4 ~]$ curl https://sh.rustup.rs -sSf | sh
[vy@devops4 ~]$ cargo install simple-http-server
[vy@devops4 ~]$ mkdir ~/.local/bin && cd ~/.local/bin && ln -s /home/vy/.cargo/bin/simple-http-server hs
[vy@devops4 mediasoup-demo-3]$ /home/vy/mediasoup/mediasoup-demo-3/server/ && export MEDIASOUP_LISTEN_IP=45.77.63.235 && export MEDIASOUP_ANNOUNCED_IP=45.77.63.235 && DEBUG=* node server.js
~...~
[vy@elastic101 server]$ export LD_LIBRARY_PATH=/home/vy/build/gcc-10.2.0/lib64/:$LD_LIBRARY_PATH
[vy@elastic101 server]$ cd /home/vy/mediasoup/mediasoup-demo-3/server/ && export MEDIASOUP_LISTEN_IP=45.76.63.179 && export MEDIASOUP_ANNOUNCED_IP=45.76.63.179 && DEBUG=* node server.js
~...~
Two screens to use:
- first:
[vy@devops4 mediasoup]$ screen -r mediasoup_web
$ cd /home/vy/mediasoup/mediasoup-demo-3/server/public/ && hs -i --cors --nocache --cert ~/via--be.com.cert.p12 --certpass 1qaz -p 61616
- second:
[vy@devops4 mediasoup]$ screen -r mediasoup_mediasoup
$ cd /home/vy/mediasoup/mediasoup-demo-3/server/ && export MEDIASOUP_LISTEN_IP=45.77.63.235 && export MEDIASOUP_ANNOUNCED_IP=45.77.63.235 && DEBUG=* node server.js
[vy@devops4 ~]$ date && screen -list
Wed Nov 25 17:37:54 CET 2020
There are screens on:
31124.janus_web (Detached)
30464.janus_janus (Detached)
6158.mediasoup_web (Detached)
1100.mediasoup_mediasoup (Detached)
4 Sockets in /var/run/screen/S-vy.
[vy@devops4 ~]