Skip to content

Instantly share code, notes, and snippets.

@vitali2y
Created July 30, 2021 12:57
Show Gist options
  • Save vitali2y/eb9ad87f8fa3d7222ff044d84373a727 to your computer and use it in GitHub Desktop.
Save vitali2y/eb9ad87f8fa3d7222ff044d84373a727 to your computer and use it in GitHub Desktop.
Videoconferencing: installation and starting up of Janus WebRTC Server @ elastic101 (CentOS 7)

Videoconferencing: installation and starting up of Janus WebRTC Server @ elastic101 (CentOS 7)

General

Janus WebRTC Server

Installation

[root@elastic101 janus]# yum --skip-broken install jansson-devel openssl-devel libsrtp-devel glib2-devel opus-devel libogg-devel libcurl-devel pkgconfig gengetopt  libconfig-devel libtool autoconf automake libsrtp-devel.x86_64 libwebsockets-devel.x86_64 git
[root@elastic101 janus]# yum install libmicrohttpd-devel jansson-devel    openssl-devel libsrtp-devel sofia-sip-devel glib2-devel    opus-devel libogg-devel libcurl-devel pkgconfig gengetopt libconfig-devel libtool autoconf automake
[root@elastic101 janus]#
[vy@elastic101 janus]$ wget https://libnice.freedesktop.org/releases/libnice-0.1.17.tar.gz && tar xvf libnice-0.1.17.tar.gz && rm -f libnice-0.1.17.tar.gz && cd libnice-0.1.17
[vy@elastic101 janus]$ mkdir -p ~/.local/bin; ln -s /usr/bin/automake-1.13 ~/.local/bin/automake-1.16
[vy@elastic101 libnice-0.1.17]$ ./configure --prefix=/home/vy/build/libnice-0.1.17 && make && make install
[vy@elastic101 janus]$ F=0.9.3.0.tar.gz; wget https://github.com/sctplab/usrsctp/archive/$F && tar xvf $F && rm -f $F && cd usrsctp-0.9.3.0
[vy@elastic101 usrsctp-0.9.3.0]$ ./bootstrap && ./configure && make && sudo make install # failed to be used with: "--prefix=/home/vy/build/usrsctp-0.9.3.0" - so, therefore global install
[vy@elastic101 janus]$ wget https://github.com/meetecho/janus-gateway/archive/master.zip && unzip master.zip && rm -f master.zip && cd janus-gateway-master
[vy@elastic101 janus]$ cd /home/vy/janus && wget https://github.com/cisco/libsrtp/archive/v2.3.0.tar.gz && tar xvf v2.3.0.tar.gz  && rm -f v2.3.0.tar.gz && cd libsrtp-2.3.0/
[vy@elastic101 libsrtp-2.3.0]$ ./configure --prefix=/home/vy/build/libsrtp-2.3.0 --enable-openssl && make shared_library && make && make install
[vy@elastic101 janus]$ wget https://libnice.freedesktop.org/releases/libnice-0.1.17.tar.gz && tar xvf libnice-0.1.17.tar.gz && rm -f libnice-0.1.17.tar.gz && cd libnice-0.1.17
[vy@elastic101 libnice-0.1.17]$ ./configure --prefix=/home/vy/build/libnice-0.1.17 && make && make install
[vy@elastic101 janus]$ cd /home/vy/janus/ && wget https://ftp-gnu-org.ip-connect.vn.ua/libmicrohttpd/libmicrohttpd-0.9.71.tar.gz && tar xvf libmicrohttpd-0.9.71.tar.gz && rm -f libmicrohttpd-0.9.71.tar.gz && cd libmicrohttpd-0.9.71/
[vy@elastic101 libmicrohttpd-0.9.71]$ ./configure --prefix=/home/vy/build/libmicrohttpd-0.9.71 && make && make install
[root@elastic101 vy]# # see https://linoxide.com/linux-how-to/install-ffmpeg-centos-7/
[root@elastic101 vy]# yum -y install epel-release
[root@elastic101 vy]# rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
[root@elastic101 vy]# rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
[root@elastic101 vy]# yum -y install ffmpeg ffmpeg-devel libvdpau1.x86_64
[vy@elastic101 janus-gateway-master]$ export PKG_CONFIG_PATH=/home/vy/build/libnice-0.1.17/lib/pkgconfig/:/home/vy/build/libsrtp-2.3.0/lib/pkgconfig/:/home/vy/build/libmicrohttpd-0.9.71/lib/pkgconfig/
[vy@elastic101 janus-gateway-master]$ ./autogen.sh
[vy@elastic101 janus-gateway-master]$ cd /home/vy/janus/janus-gateway-master && ./configure --prefix=/home/vy/janus/videoconf-janus --enable-post-processing --enable-all-js-modules --disable-all-plugins --enable-plugin-textroom --enable-plugin-videoroom --enable-plugin-echotest --enable-plugin-recordplay --enable-plugin-streaming --disable-all-transports --enable-rest --enable-websockets --enable-all-handlers --enable-data-channels
~...~
Compiler:                  gcc
libsrtp version:           2.x
SSL/crypto library:        OpenSSL
DTLS set-timeout:          not available
Mutex implementation:      GMutex (native futex on Linux)
DataChannels support:      yes
Recordings post-processor: yes
TURN REST API client:      yes
Doxygen documentation:     no
Transports:
    REST (HTTP/HTTPS):     yes
    WebSockets:            yes
    RabbitMQ:              no
    MQTT:                  no
    Unix Sockets:          no
    Nanomsg:               no
Plugins:
    Echo Test:             yes
    Streaming:             yes
    Video Call:            no
    SIP Gateway:           no
    NoSIP (RTP Bridge):    no
    Audio Bridge:          no
    Video Room:            yes
    Voice Mail:            no
    Record&Play:           yes
    Text Room:             yes
    Lua Interpreter:       no
    Duktape Interpreter:   no
Event handlers:
    Sample event handler:  no
    WebSocket ev. handler: no
    RabbitMQ event handler:no
    MQTT event handler:    no
    Nanomsg event handler: no
    GELF event handler:    no
External loggers:
    JSON file logger:      no
JavaScript modules:        yes
    Using npm:             /usr/local/bin/npm
    ES syntax:             yes
    IIFE syntax:           yes
    UMD syntax:            yes
    CommonJS syntax:       yes
~...~
[vy@elastic101 janus-gateway-master]$ make CPPFLAGS='-I/home/vy/build/libsrtp-2.3.0/include -L/home/vy/build/libsrtp-2.3.0/lib -lsrtp2 -lcrypto -ldl -lz -I/home/vy/build/libmicrohttpd-0.9.71/include  -L/home/vy/build/libmicrohttpd-0.9.71/lib -lmicrohttpd -pthread -I/home/vy/build/libnice-0.1.17/include/nice -I/home/vy/build/libnice-0.1.17/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include  -L/home/vy/build/libnice-0.1.17/lib -lnice -lgio-2.0 -lgobject-2.0 -lglib-2.0'
~...~
[vy@elastic101 janus-gateway-master]$ make install && make configs
[vy@elastic101 janus-gateway-master]$ export LD_LIBRARY_PATH=~/build/libsrtp-2.3.0/lib/:/usr/local/lib:$LD_LIBRARY_PATH
[vy@elastic101 videoconf-janus]$ cd ~/janus/videoconf-janus && ./bin/janus
[vy@elastic101 ~]$ curl https://sh.rustup.rs -sSf | sh
[vy@elastic101 ~]$ cargo install simple-http-server
[vy@elastic101 ~]$ cd ~/.local/bin/ && ln -s /home/vy/.cargo/bin/simple-http-server hs
[vy@elastic101 ~]$ openssl pkcs12 -inkey /etc/pki/tls/private/wildcard_via--be.com.key -in /etc/pki/tls/private/wildcard_via--be.com.crt -export -out ~/certificate.p12
Enter Export Password:
Verifying - Enter Export Password:
[vy@elastic101 ~]$ ls -la ~/certificate.p12 
-rw-rw-r-- 1 vy vy 4253 Nov 17 11:19 /home/vy/certificate.p12
[vy@elastic101 ~]$ 

Running

Two screens to use:

  • first:
[vy@devops4 ~]$ screen -r janus_janus
$ cd ~/janus/videoconf-janus/ && ./bin/janus --event-handlers
  • second:
[vy@devops4 ~]$ screen -r janus_web
[vy@devops4 server]$ which janus-helper.js
~/.local/bin/janus-helper.js
[vy@devops4 server]$ janus-helper.js
[vy@elastic101 ~]$ date && screen -list
Mon Nov 30 19:20:05 EST 2020
There are screens on:
	31241.mediasoup_web	(Detached)
	30155.mediasoup_mediasoup	(Detached)
	15384.janus_web	(Detached)
	27450.janus_janus	(Detached)
4 Sockets in /var/run/screen/S-vy.
[vy@elastic101 ~]$
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment