Cara instal Jans Gateway di Ubuntu Server 18.04 - CRUDPRO

Cara instal Jans Gateway di Ubuntu Server 18.04

Saat saya dipekerjakan sebagai pekerja lepas untuk mengonfigurasi server WebRTC yang dihosting sendiri dan memutuskan untuk beralih ke proyek Gerbang Janus di antara Jitsi, Janus, dan Kurento. Janus adalah server WebRTC tujuan umum open source yang dirancang dan dikembangkan oleh Meetecho. Versi server ini disetel untuk sistem Linux, tetapi juga dapat dikompilasi dan diinstal untuk mesin MacOS.

Artikel ini menjelaskan cara menginstal Janus Gateway dengan benar dengan semua kemungkinan ekstensi pada server Ubuntu 18.04 (hanya instalasi, konfigurasi akan dibahas dalam artikel mendatang).

Sebelum kamu memulai pastikan untuk memperbarui repositori apt menggunakan perintah berikut sebelum menjalankan tutorial.

sudo apt-get update

Ini karena banyak orang lupa melakukan ini setiap kali mereka menginstal perangkat lunak baru dan melaporkan kesalahan dasar seperti git tidak diinstal.

1. Instal dependensi

Untuk mengkompilasi Janus dari sumber dan menginstalnya pada distribusi Ubuntu 18.04 Anda, Anda perlu menginstal dependensi berikut pada sistem Anda (Anda dapat menginstalnya satu per satu menggunakan Sudo apt-get install <nama paket>: ).

  • git
  • libmicrohttpd-dev
  • libjansson-dev
  • libssl-dev
  • libsrtp-dev
  • libsofia-sip-ua-dev
  • libglib2.0-dev
  • libopus-dev
  • libogg-dev
  • libcurl4-openssl-dev
  • liblua5.3-dev
  • libconfig-dev
  • pkg-config
  • gengetopt
  • libtool
  • automake
  • gtk-doc-tools
  • cmake

Tentu saja, perlu beberapa waktu untuk membaca, jadi Anda juga dapat membuat file install_dependencies.sh dan menempelkan konten berikut:

#!/bin/bash

# List of packages to install before building Janus
packagelist=(
    git
    libmicrohttpd-dev
    libjansson-dev
    libssl-dev
    libsrtp-dev
    libsofia-sip-ua-dev
    libglib2.0-dev
    libopus-dev
    libogg-dev
    libcurl4-openssl-dev
    liblua5.3-dev
    libconfig-dev
    pkg-config
    gengetopt
    libtool
    automake
    gtk-doc-tools
    cmake
)
sudo apt-get install ${packagelist[@]}

Jalankan penginstal dengan menjalankan perintah berikut di terminal:

bash install_dependencies.sh

Setelah menginstal dependensi, Janus sangat bermasalah dengan versi alat yang dibutuhkannya, sehingga dependensi lain perlu dikompilasi secara manual dengan cepat. Jika Anda menggunakan versi Janus terbaru, ini adalah cara untuk melanjutkan.

2. Unduh dan kompilasi libnice

Ketergantungan berikutnya yang perlu Anda instal adalah libnice. Terlepas dari nama librarynya, libnice mengimplementasikan standar Interactive Connectivity Establishment (ICE) (RFC5245 dan RFC8445). Ini menyediakan library berbasis GLib, libnice, dan elemen GStreamer untuk menggunakannya.

Libnice biasanya tersedia sebagai paket di sebagian besar distribusi, tetapi versi standar di Ubuntu telah ditemukan menyebabkan masalah, jadi kami sarankan untuk menginstal dari branch master. Buat file install_libnice.sh dan rekatkan konten berikut ke dalam file itu:

#!/bin/bash

# install_libnice.sh
git clone https://gitlab.freedesktop.org/libnice/libnice
cd libnice
./autogen.sh
./configure --prefix=/usr
make && sudo make install

Ini akan menduplikasi kode sumber libnice dan secara otomatis memulai konfigurasi dan instalasi. Jalankan penginstal dengan menjalankan perintah berikut di terminal:

bash install_libnice.sh

Anda juga dapat melakukan langkah-langkah secara manual jika diinginkan.

3. Instal libsrtp

Janus juga membutuhkan pustaka libsrtp untuk diinstal pada sistem Anda. Libsrtp adalah library SRTP (Secure Realtime Transport Protocol) yang tersedia dari repositori resmi Cisco di Github. Paket ini menyediakan implementasi Secure Real-time Transport Protocol (SRTP), Universal Security Transform (UST), dan kernel kriptografi yang didukung.

Buat file install_libsrtp.sh dan tempel konten berikut ke dalam file itu:

#!/bin/bash

# install_libsrtp.sh
wget https://github.com/cisco/libsrtp/archive/v2.2.0.tar.gz
tar xfv v2.2.0.tar.gz
cd libsrtp-2.2.0
./configure --prefix=/usr --enable-openssl
make shared_library && sudo make install

Jalankan penginstal dengan menjalankan perintah berikut di terminal:

bash install_libsrtp.sh

Ini akan mengunduh rilis libsrtp v2.2, membuka zip file, mengonfigurasinya untuk menggunakan openssl, dan menginstalnya nanti. Anda juga dapat melakukan langkah-langkah secara manual jika diinginkan.

4. Instal usrsctp

SCTP adalah protokol transport yang berorientasi pesan dan andal yang secara langsung mendukung multihoming yang dilakukan melalui IP atau UDP, mendukung versi v4 dan v6. Janus membutuhkan library ini untuk bekerja dengan baik, jadi kompilasi library dari sumber seperti sebelumnya.

Buat file install_usrsctp.sh dan tempel konten berikut ke dalam file itu:

#!/bin/bash

# install_usrsctp.sh
git clone https://github.com/sctplab/usrsctp
cd usrsctp
./bootstrap
./configure --prefix=/usr && make && sudo make install

Jalankan penginstal dengan menjalankan perintah berikut di terminal:

bash install_usrsctp.sh

Ini akan mengunduh source code untuk rilis terbaru USRSCTP dan membangun dan menginstalnya di sistem Anda. Anda juga dapat melakukan langkah-langkah secara manual jika diinginkan.

5. Instal libwebsockets

Sebagai rekomendasi pribadi, Anda tidak perlu menginstal library ini, tetapi menggunakan WebSockets dengan Janus sangat nyaman untuk front end.

Untuk menginstal library ini dan dapat memberikan dukungan WebSocket, buat file install_libwebsockets.sh dan tempel konten berikut ke dalam file itu:

#!/bin/bash

# install_libwebsockets.sh
git clone https://github.com/warmcat/libwebsockets.git
cd libwebsockets
# If you want to use the latest master version of libwebsockets, comment the next line
git checkout v2.4-stable
mkdir build
cd build
# See https://github.com/meetecho/janus-gateway/issues/732 re: LWS_MAX_SMP
cmake -DLWS_MAX_SMP=1 -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS="-fpic" ..
make && sudo make install

Jalankan penginstal dengan menjalankan perintah berikut di terminal:

bash install_libwebsockets.sh

Ini akan mengunduh versi terbaru libwebsockets dan menginstal file build. Anda juga dapat melakukan langkah-langkah secara manual jika diinginkan.

6. Instal MQTT (opsional)

MQTT adalah protokol koneksi mesin-ke-mesin (M2M)/"Internet of Things". Itu dirancang sebagai transportasi pesan terbitkan/berlangganan yang sangat ringan. Ini berguna untuk koneksi ke lokasi terpencil yang memerlukan jejak kode kecil dan/atau di mana bandwidth jaringan sangat berharga.

Jika Anda ingin memberikan dukungan MQTT dengan Janus, pastikan untuk menginstalnya juga. Buat file install_mqtt.sh berikut dan rekatkan kode berikut ke dalamnya.

#!/bin/bash

# install_mqtt.sh
git clone https://github.com/eclipse/paho.mqtt.c.git
cd paho.mqtt.c
sudo prefix=/usr make install

Kemudian jalankan file di terminal Anda menggunakan perintah berikut:

bash install_mqtt.sh

Ini akan menduplikasi source code MQTT, membangunnya, dan menginstalnya di sistem Anda. Anda dapat melakukan langkah-langkah secara manual jika diinginkan.

7. Instal NanoMSG (opsional)

nanomsg adalah pustaka soket yang menyediakan beberapa pola komunikasi umum. Ini bertujuan untuk membuat lapisan jaringan cepat, terukur dan mudah digunakan. Ini diimplementasikan dalam C dan bekerja pada berbagai sistem operasi tanpa ketergantungan lebih lanjut.

Paket ini dapat dengan mudah diinstal pada sistem Anda dari repositori apt-get. Harap perbarui terlebih dahulu.

sudo apt-get update

Kemudian instal library.

sudo apt-get install libnanomsg-dev

Setelah instalasi, library akan tersedia di sistem Anda.

8. Instal RabbitMQ C AMQP (opsional)

Pustaka ini adalah pustaka klien C AMQP untuk digunakan dengan broker RabbitMQ v2.0 +. Untuk menginstal library ini, buat file install_rabbitmqc.sh dan tempel konten berikut ke dalam file itu:

#!/bin/bash

# install_rabbitmqc.sh
git clone https://github.com/alanxz/rabbitmq-c
cd rabbitmq-c
git submodule init
git submodule update
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make && sudo make install

Kemudian jalankan file berikut:

bash install_rabbitmqc.sh

Setelah instalasi, library akan tersedia di sistem Anda.

9. Kompilasi Janus Gateway

Setelah Anda menginstal semua library yang diperlukan agar Janus berfungsi dengan baik, Anda akhirnya akan dapat mengkompilasi Janus itu sendiri.

Hal pertama yang perlu Anda lakukan adalah menggunakan git untuk mengkloning kode sumber janus ke direktori menggunakan perintah berikut:

git clone https://github.com/meetecho/janus-gateway.git

Kemudian beralih ke direktori klon.

cd janus-gateway

Setelah menavigasi ke direktori ini, gunakan perintah berikut untuk menghasilkan file konfigurasi.

sh autogen.sh

Setelah menavigasi ke direktori ini, gunakan perintah berikut untuk menghasilkan file konfigurasi.

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: no
TURN REST API client:      yes
Doxygen documentation:     no
Transports:
    REST (HTTP/HTTPS):     yes
    WebSockets:            yes
    RabbitMQ:              yes
    MQTT:                  yes
    Unix Sockets:          yes
    Nanomsg:               yes
Plugins:
    Echo Test:             yes
    Streaming:             yes
    Video Call:            yes
    SIP Gateway:           yes
    NoSIP (RTP Bridge):    yes
    Audio Bridge:          yes
    Video Room:            yes
    Voice Mail:            yes
    Record&Play:           yes
    Text Room:             yes
    Lua Interpreter:       no
    Duktape Interpreter:   no
Event handlers:
    Sample event handler:  yes
    WebSocket ev. handler: yes
    RabbitMQ event handler:yes
    MQTT event handler:    yes
    Nanomsg event handler: yes
External loggers:
    JSON file logger:      no
JavaScript modules:        no

Jika Anda senang dengan konfigurasi ini, jalankan "make" untuk mulai membangun Janus. 'make install' menginstal Janus dan pluginnya pada awalan yang ditentukan. Terakhir, "make configs" juga menginstal beberapa contoh file konfigurasi (tetapi saya hanya ingin menjalankannya terlebih dahulu).

Daftar tersebut menunjukkan semua fitur, event handler, dan protokol transport dari server janus yang diaktifkan. Jika Anda ingin menonaktifkan beberapa fitur, silakan merujuk ke dokumentasi Janus di sini.

Kemudian jalankan file konfigurasi dengan konfigurasi yang diperlukan. Perintah berikut menginisialisasi instance Janus default dengan hampir semua yang Anda butuhkan untuk memulai (jika Anda perlu mengaktifkan/menonaktifkan ekstensi, Anda dapat mengulangi proses ini).

./configure --prefix=/opt/janus

Ini akan mengonfigurasi Janus untuk dibangun di direktori / opt / janus sistem. Setelah mengkonfigurasi build, jalankan perintah make.

make

Kemudian jalankan perintah make install.

make install

Ini akan menginstal Janus di jalur yang ditentukan dalam langkah konfigurasi. Juga, jangan lupa untuk menyalin file konfigurasi default ke jalur instalasi Anda menggunakan perintah berikut hanya ketika Anda membangun Janus untuk pertama kalinya.

make configs

Ini akan menggantikan konten semua file .jcfg. Oleh karena itu, Anda hanya perlu menjalankannya saat pertama kali membangun.

10. Tes Janus

Terakhir, yang harus Anda lakukan adalah memeriksa apakah biner berfungsi. Anda dapat dengan mudah melihat ini dengan perintah berikut (mengingat bahwa Anda menyimpan jalur instalasi default untuk Janus):

/opt/janus/bin/janus --help

Perintah ini mencetak teks berikut ke terminal:

Janus commit: 7fb695a861b474cc1ecfb30764d7f0f3bb97a48b
Compiled on:  Wed Apr 29 14:33:37 CDT 2020

janus 0.9.4

Usage: janus [OPTIONS]...

  -h, --help                    Print help and exit
  -V, --version                 Print version and exit
  -b, --daemon                  Launch Janus in background as a daemon
                                  (default=off)
  -p, --pid-file=path           Open the specified PID file when starting Janus
                                  (default=none)
  -N, --disable-stdout          Disable stdout based logging  (default=off)
  -L, --log-file=path           Log to the specified file (default=stdout only)
  -H, --cwd-path=path           Working directory for Janus daemon process
                                  (default=/)
  -i, --interface=ipaddress     Interface to use (will be the public IP)
  -P, --plugins-folder=path     Plugins folder (default=./plugins)
  -C, --config=filename         Configuration file to use
  -F, --configs-folder=path     Configuration files folder (default=./conf)
  -c, --cert-pem=filename       DTLS certificate
  -k, --cert-key=filename       DTLS certificate key
  -K, --cert-pwd=text           DTLS certificate key passphrase (if needed)
  -S, --stun-server=ip:port     STUN server(:port) to use, if needed (e.g.,
                                  Janus behind NAT, default=none)
  -1, --nat-1-1=ip              Public IP to put in all host candidates,
                                  assuming a 1:1 NAT is in place (e.g., Amazon
                                  EC2 instances, default=none)
  -E, --ice-enforce-list=list   Comma-separated list of the only interfaces to
                                  use for ICE gathering; partial strings are
                                  supported (e.g., eth0 or eno1,wlan0,
                                  default=none)
  -X, --ice-ignore-list=list    Comma-separated list of interfaces or IP
                                  addresses to ignore for ICE gathering;
                                  partial strings are supported (e.g.,
                                  vmnet8,192.168.0.1,10.0.0.1 or
                                  vmnet,192.168., default=vmnet)
  -6, --ipv6-candidates         Whether to enable IPv6 candidates or not
                                  (experimental)  (default=off)
  -l, --libnice-debug           Whether to enable libnice debugging or not
                                  (default=off)
  -f, --full-trickle            Do full-trickle instead of half-trickle
                                  (default=off)
  -I, --ice-lite                Whether to enable the ICE Lite mode or not
                                  (default=off)
  -T, --ice-tcp                 Whether to enable ICE-TCP or not (warning: only
                                  works with ICE Lite)  (default=off)
  -Q, --min-nack-queue=number   Minimum size of the NACK queue (in ms) per user
                                  for retransmissions, no matter the RTT
  -t, --no-media-timer=number   Time (in s) that should pass with no media
                                  (audio or video) being received before Janus
                                  notifies you about this
  -W, --slowlink-threshold=number
                                Number of lost packets (per s) that should
                                  trigger a 'slowlink' Janus API event to users
  -r, --rtp-port-range=min-max  Port range to use for RTP/RTCP
  -B, --twcc-period=number      How often (in ms) to send TWCC feedback back to
                                  senders, if negotiated (default=200ms)
  -n, --server-name=name        Public name of this Janus instance
                                  (default=MyJanusInstance)
  -s, --session-timeout=number  Session timeout value, in seconds (default=60)
  -m, --reclaim-session-timeout=number
                                Reclaim session timeout value, in seconds
                                  (default=0)
  -d, --debug-level=1-7         Debug/logging level (0=disable debugging,
                                  7=maximum debug level; default=4)
  -D, --debug-timestamps        Enable debug/logging timestamps  (default=off)
  -o, --disable-colors          Disable color in the logging  (default=off)
  -M, --debug-locks             Enable debugging of locks/mutexes (very
                                  verbose!)  (default=off)
  -a, --apisecret=randomstring  API secret all requests need to pass in order
                                  to be accepted by Janus (useful when wrapping
                                  Janus API requests in a server, none by
                                  default)
  -A, --token-auth              Enable token-based authentication for all
                                  requests  (default=off)
      --token-auth-secret=randomstring
                                Secret to verify HMAC-signed tokens with, to be
                                  used with -A
  -e, --event-handlers          Enable event handlers  (default=off)
  -w, --no-webrtc-encryption    Disable WebRTC encryption, so no DTLS or SRTP
                                  (only for debugging!)  (default=off)

                                  Di artikel mendatang, saya akan menunjukkan cara mengonfigurasi pustaka ini untuk menangani sertifikat SSL dan membuat obrolan video Anda sendiri.

Happy coding :)

sumber : https://ourcodeworld.com/articles/read/1197/how-to-install-janus-gateway-in-ubuntu-server-18-04