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