Janus版本:janus-gateway-0.11.5,注册版本与各组件版本的对应关系,注意组件间依赖的版本匹配问题。

1.安装依赖库:

下载最新的源代码需要git,若没有安装git可以使用下面命令进行安装:

sudo apt-get install git -y

安装lua库

sudo apt-get install liblua5.3-dev

编译运行 Janus Server 需要依赖较多的一些第三方库,而这些依赖库在 Ubuntu 下主要通过 aptitude 进行安装,首先通过安装 aptitude:

sudo apt-get install aptitude

还有一些编译的aptitude依赖库,相关安装命令如下:

sudo aptitude install libmicrohttpd-dev libjansson-dev libnice-dev

sudo aptitude install libssl-dev libsofia-sip-ua-dev libglib2.0-dev

sudo aptitude install libopus-dev libogg-dev libcurl4-openssl-dev pkg-config f

sudo aptitude install gengetopt libtool automake libconfig-dev doxygen graphviz

sudo apt-get install cmake openssl libssl-dev -y

sudo apt-get install -y

2.安装libsrtp2.2.0:

下载源码:https://github.com/cisco/libsrtp/releases/tag/v2.2.0

#tar -xvf v2.2.0.tar.gz

#cd libsrtp-2.2.0

#./configure --prefix=/usr --libdir=/usr/lib64 --enable-openssl

#make shared_library

#sudo make install

这里带上“--enable-openssl”参数,一般都需要开启https。

3.安装libwebsockets:

下载源码:https://github.com/warmcat/libwebsockets/tags,这里下载3.2.2

#tar -xvf libwebsockets-3.2.2.tar.gz

#cd libwebsockets-3.2.2

#make build

#cd build

#cmake ..

#cmake -DLWS_MAX_SMP=1 -DLWS_WITHOUT_EXTENSIONS=0 -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS="-fpic" ..

#make

#sudo make install

3.安装Janus:

下载源码:https://github.com/meetecho/janus-gateway 这里下载0.11.5版本

#tar -xvf janus-gateway-0.11.5.tar.gz

#cd janus-gateway-0.11.5

#./autogen.sh

#./configure --prefix=/opt/janus --enable-websockets --disable-plugin-lua --enable-rest --enable-docs

#make

#sudo make install

#sudo make configs      //只需要执行一次,后面执行会覆盖前面的。

4.启动

Sudo /opt/janus/bin/janus --stun-server=1.1.1.1:3478 &

5.配置安装nginx

安装

apt-get install nginx

nginx -v                                            // 查看版本

systemctl start nginx                             // 启动服务

systemctl enable nginx                            // 开机自启动

systemctl stop nginx                               // 停止服务

配置

#sudo vi /etc/nginx/sites-available/default

//把工程根路径指向janus的demos目录

root /opt/janus/share/janus/demos;

保存退出,刷新配置

#sudo nginx -s reload

6.配置开启Https访问

6.1生成自签发SSL证书

#sudo mkdir /etc/nginx/cert

#sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/cert/app.key -out /etc/nginx/cert/app.crt

// 按自己的实际情况输入Common Name是使用证书的主机IP不能输错

Country Name (2 letter code) [AU]:CN

State or Province Name (full name) [Some-State]:JiangSu

Locality Name (eg, city) []:NanJing

Organization Name (eg, company) [Internet Widgits Pty Ltd]:MicroSoftt Ltd

Organizational Unit Name (eg, section) []:Dept

Common Name (e.g. server FQDN or YOUR name) []:192.168.1.113

Email Address []:test@126.com

增加前向保密

#sudo openssl dhparam -out /etc/nginx/cert/dhparam.pem 2048

6.2配置nginx使用ssl证书

配置支持http和https都可以访问,http重定向到https

#sudo vi /etc/nginx/sites-available/default

server {

listen 80 default_server;

server_name 192.168.1.113; # 可替换成域名

return 301 https://$server_name$request_uri;

}

server {

listen 443 ssl default_server;

listen [::]:443 ssl default_server;

ssl_certificate /etc/nginx/cert/app.crt;

ssl_certificate_key /etc/nginx/cert/app.key;

ssl_dhparam /etc/nginx/cert/dhparam.pem;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers on;

ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";

...

}

保存后退出

刷新配置

#nginx -s reload

6.3配置Janus使用ssl证书

Chrome浏览要求开启摄像头的网站必须使用https,除非只是本机访问(localhost),所以一般都需要开启

janus配置修改

修改janus.transport.http.jcfg配置文件

# sudo /opt/janus/etc/janus/janus.transport.http.jcfg

general: {

#events = true

json = "indented"

base_path = "/janus"    # Base path to bind to in the web server (plain HTTP only)

http = true               # Whether to enable the plain HTTP interface

port = 8088               # Web server HTTP port

#interface = "eth0"

#ip = "192.168.0.1"

https = true              # Whether to enable HTTPS (default=false)

secure_port = 8089       # Web server HTTPS port, if enabled

#secure_interface = "eth0"

#secure_ip = "192.168.0.1"

#acl = "127.,192.168.0."

#mhd_connection_limit = 1020

mhd_debug = true

}

………………………

admin: {

admin_base_path = "/admin"

admin_http = true                        # Whether to enable the plain HTTP interface

admin_port = 7088                        # Admin/monitor web server HTTP port

#admin_interface = "eth0"

#admin_ip = "192.168.0.1"

admin_https = true

admin_secure_port = 7889         # Admin/monitor web server HTTPS port, if enabled

#admin_secure_interface = "eth0"

#admin_secure_ip = "192.168.0.1

#admin_acl = "127.,192.168.0."

}

………………

certificates: {

cert_pem = "/etc/nginx/cert/app.crt"

cert_key = "/etc/nginx/cert/app.key"

#cert_pwd = "secretpassphrase"

#ciphers = "PFS:-VERS-TLS1.0:-VERS-TLS1.1:-3DES-CBC:-ARCFOUR-128"

}

修改janus.jcfg

#sudo vi /opt/janus/etc/janus/janus.jcfg

certificates: {

cert_pem = "/etc/nginx/cert/app.crt"

cert_key = "/etc/nginx/cert/app.key"

#cert_pwd = "secretpassphrase"

#dtls_accept_selfsigned = false

#dtls_ciphers = "your-desired-openssl-ciphers"

#rsa_private_key = false

}

修改janus.transport.websockets.jcfg配置文件

# sudo /opt/janus/etc/janus/janus.transport.websockets.jcfg

general: {

#events = true

json = "indented"

base_path = "/janus"    # Base path to bind to in the web server (plain HTTP only)

http = true               # Whether to enable the plain HTTP interface

port = 8088               # Web server HTTP port

#interface = "eth0"

#ip = "192.168.0.1"

https = true              # Whether to enable HTTPS (default=false)

secure_port = 8089       # Web server HTTPS port, if enabled

#secure_interface = "eth0"

#secure_ip = "192.168.0.1"

#acl = "127.,192.168.0."

#mhd_connection_limit = 1020

mhd_debug = true

}

………………………

admin: {

admin_base_path = "/admin"

admin_http = true                        # Whether to enable the plain HTTP interface

admin_port = 7088                        # Admin/monitor web server HTTP port

#admin_interface = "eth0"

#admin_ip = "192.168.0.1"

admin_https = true

admin_secure_port = 7889         # Admin/monitor web server HTTPS port, if enabled

#admin_secure_interface = "eth0"

#admin_secure_ip = "192.168.0.1

#admin_acl = "127.,192.168.0."

}

………………

certificates: {

cert_pem = "/etc/nginx/cert/app.crt"

cert_key = "/etc/nginx/cert/app.key"

#cert_pwd = "secretpassphrase"

#ciphers = "PFS:-VERS-TLS1.0:-VERS-TLS1.1:-3DES-CBC:-ARCFOUR-128"

}

修改完后重新启动就可

5.部署ICE服务器(Coturn)

概述:

WEBRTC在建立连接是一般有三个步骤:

1. 尝试直连.

2. 通过stun服务器进行穿透

3. 无法穿透则通过turn服务器中转.

只有连接的两个设备在同一NAT网络内部时,第一步直连才能成功,否则要借助穿越服务器(stun或turn)使用第2步或第3步进行连接。

网上有一些免费的stun服务可以测试使用,如stun.ideasip.com。但建立连接时会比较慢

所以最好的办法是自己搭建一台。

coturn 是一套支持stun和turn两种功能的软件,支持tcp, udp, tls, dtls 连接,支持linux bsd solaris mac os. 暂不支持windows。

coturn 依赖组件:

coturn网络通讯使用的是libevent,所以需要安装livevent2.

安装

安装基础组件:

#sudo apt-get install libssl-dev libevent-dev libpq-dev

安装coturn

# git clone https://github.com/coturn/coturn

# cd coturn

# ./configure --prefix=/usr/local/coturn

# make -j 4                                         // 多线程编译

# make install

配置

#vi /etc/profile

export PATH=/usr/lodal/coturn/bin:$PATH

#source /etc/profile

#cd /usr/local/coturn/etc

#sudo cp ./turnserver.conf.default ./turnserver.conf

#vi ./turnserver.conf

cli-password=qwerty

relay-device=eth33

listening-ip=192.168.1.113

listening-port=3478

tls-listening-port=5349

external-ip=39.105.44.xx                   // 外网(公网)IP

relay-ip=192.168.1.113

relay-threads=50

lt-cred-mech

cert=/etc/nginx/cert/app.pem              // 测试安装,用上面生成的证书

pkey=/etc/nginx/cert/app.key

user=test:keytest1

启动

turnserver -o -a -f -v --mobility -m 10 --max-bps=100000 --min-port=32355 --max-port=65535 --user= test:keytest1 -r test

参数说明:

-m 10 表示启动十个relay线程

–max-bps=100000 限制最大速度为100KB/s

当TURN Server用于WebRTC时,必须使用long-term credential mechanism, 即指定 -a 或者 --lt-cred-mech

添加了用户:test以及对应的密码

ubuntu20.04 Server安装部署Janus相关推荐

  1. Ubuntu20.04上安装部署Elasticsearch

    一.背景 在我们开发ElasticSearch相关功能的时候,想要本机部署一个ElasticSearch服务.想采用apt-get install 的方式来安装.本文在Ubuntu20.04上安装部署 ...

  2. Django生产环境部署—Ubuntu20.04 server安装(一)

    基于Django生产环境的搭建,本系统是基于Python3.8,Django3.2版本进行开发和部署.因此Ubuntu系统直接采用20.04版本,此系统Python默认版本为3.8.直接在此版本的基础 ...

  3. Ubuntu20.04 server 安装iSCSI

    文章目录 一.配置iSCSI服务器端--iSCSI Target 1. 安装 2. 配置 3. 测试结果 二.配置iSCSI客户端--iSCSI Initiator 1. 安装 2. 配置 3. 测试 ...

  4. ubuntu20.04 server 无图形命令行安装

    ubuntu20.04 server 安装 1.网络配置 1.1网络管理工具 netplan 在 Ubuntu20.04 版本中使用 netplan 管理网络 在安装好的 Ubuntu20.04 中没 ...

  5. VMware ubuntu20.04 server随win10自动启动与关闭

    一.背景简介: 在win10下安装虚拟机,此虚拟机作为服务器使用,但是wi10电脑经常开关机,有的情况下,关机前没有主动关闭虚拟机,到此服务器需要收到重启,且数据容易丢失,配置 win10开机时 虚拟 ...

  6. ubuntu20.04 noetic 安装 Astra Pro 驱动

    ubuntu20.04 noetic 安装 Astra Pro 驱动 拿到了一个 Orbbec Astro Pro 的摄像头,具体型号为: LeTMC301 在ubuntu中安装了相应的驱动 参考: ...

  7. 记录:Ubuntu20.04中安装和设置VScode

    记录:Ubuntu20.04中安装和设置VScode 一.VScode的安装 1 从VS官网中下载deb文件:https://code.visualstudio.com/Download 下载的deb ...

  8. ubuntu20.04上安装和使用frp内网穿透的方法

    ubuntu20.04上安装和使用frp内网穿透的方法 第一步:下载frp软件 frp_0.36.2_linux_amd64.tar.gz 下载地址:https://download.csdn.net ...

  9. 最新 Ubuntu20.04 配置安装 | 虚拟机配置及各类软件安装(wps,pycharm, mysql,docker等)

    * Ubuntu20.04配置安装 前言 一.使用VMware安装Ubuntu20.04 以及下载软件包 1. 下载镜像 与各类软件包 2. 创建虚拟机 1. 创建新的空白虚拟机 2. 安装Ubunt ...

最新文章

  1. 没有学不会的C++:用户自定义的隐式类型转换
  2. 对未来计算机的设想1000字,未来的世界作文1000字
  3. python3精要(84)-字节码原理及分析(2)
  4. wine: Unhandled page fault on read access to 0x00000000 at address 0x10b1fb8
  5. Linux环境中配置环境变量无效
  6. VBA GetOpenFilename 方法
  7. python处理shp和栅格文件的相关库shapefile、gdal等
  8. 十六进制转换成字符串——CRC
  9. 2.2 logistic 回归
  10. docker构建dpdk运行环境镜像
  11. oracle增量和全量的区别,ORACLE全备份和0级增量备份的区别
  12. MySQL中的备份和恢复
  13. sqlplus连接Oracle的正确语法
  14. win7安装android驱动,Windows7:安卓智能手机刷机驱动安装教程(图文详解)
  15. 异步日志方案log4cpp
  16. ubuntu安装rubyOnRails
  17. PS如何做文字扫描效果(用于较清晰的扫描件)
  18. Windowns11并未完全抛弃IE内核,可向下兼容至IE7
  19. 为啥女性洗澡都很慢,究竟在干啥?
  20. 计算机网络实习内容,计算机网络工程实习目的与内容

热门文章

  1. C中字符串的几种定义方法及说明
  2. 地球系统模式CESM学习记录
  3. 马尔科夫不等式和坎泰利不等式的证明
  4. 枚举类型的理解和应用
  5. 致Emacs初学者+Emacs初学者必知必会
  6. AD报错 unknown pin
  7. MySQLSyntaxErrorException: Unknown database
  8. 运维脚本 内存管理统计(5)
  9. 启动weblogic 报错
  10. android 关机 流程_android系统关机流程分析