搭建自己的视频通话服务器Janus(WebRTC)

  1. 安装janus

apt install janus

高版本的Ubuntu已经可以直接安装了,不要编译那么麻烦了

  1. 安装nginx

janus 是后端,需要nginx或者其他等提供前端页面的服务器,此外因为这里并没有正式的证书,只能用自签名的证书用于https。

前端必须是https

  1. janus的源码

apt install janus的源码安装了之后,要么自己写demo,要么直接用源码里面的前端页面。html,jquery写的,花点时间应该也能修修改改。这里是直接复用源码里面的例子

  1. coturn

穿透用来着,如果是局域网部署的,没有影响,如果部署到阿里云这样的,需要这个来做NAT穿透。实际测试来看,有些网络穿透不了。

5.配置

ngnix的配置文件

user www-data;

worker_processes auto;

pid /run/nginx.pid;

include /etc/nginx/modules-enabled/*.conf;

user root;

events {

worker_connections 4096;

multi_accept on;

}

http {

server{

listen 80;

server_name web_dist;

location /{

root /opt/janus/share/janus/html;

index index.html index.htm;

}

}

server {

ssl on;

listen 443 ssl;

server_name localhost;

root /opt/janus/share/janus/html;

underscores_in_headers on;

ssl_certificate "/root/cert.pem";

ssl_certificate_key "/root/key.pem";

location / {

}

location /janus/ {

proxy_pass http://api_server/janus/;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-Server $host;

proxy_set_header X-Forwarded-Proto https;

}

location /ws {

proxy_pass http://websocket;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection $connection_upgrade;

}

}

upstream api_server{

server 0.0.0.0:8088;

}

map http_upgrade connection_upgrade {

default upgrade;

'' close;

}

upstream websocket {

server 0.0.0.0:8188;

}

}

注意这里的pem文件,以及代理。主要是把https的请求反射到https上。否则的话证书问题会报错。localtion的路径选择源码下载后的html目录。

到这里应该能看到janus的demo首页了。但是因为后端其实apt 安装过也在监听了。

janus的配置

填写自己的sturn地址,这里没打算跑服务器的流量,所以turn没开。默认janus安装后,https好像没打开,需要自己修改配置文件在janus.transport.http.cfg文件中(/etc/janus)

到这里重启janus (service janus restart),然后通过netstat -tuln查看8088,8089端口是否在监听状态。如果再监听,到这里基本都ready了。后面就是把前端和后端挂上即可。

前端页面修改

目前下载的代码,导航条会把start按钮给覆盖住,导致无法点击start按钮。先修改下前端页面。我这里只打算搞个videocall。所以直接改对应的页面

注意这里的navbar.html和上层目录是两个。选择合适的文件修改。

到这里start按钮出来了,但是点击默认会报错,有可能是证书ssl,等错误。因为默认的代码,https是会请求8089的https请求的。可以在videocall.js里面把server变量打出来看看。

我们到settings.js文件中,把server给修改下

注意这里没了端口,这里会用到nginx的反向代理。最后会把请求给8088。(这里为什么不直接给http发请求呢? 因为我们的页面是https,这里用http会报错,所以要用反向代理)

最后

这里选择高级,访问

随便注册个名字,然后用手机打开手机网络,这里看能不能穿透,不用和测试机一样的网络环境。

然后手机端注册一个888

然后call就可以了

成功,这样就部署了一个自己的私人视频电话服务了。

最终的测试地址

https://47.103.66.95/demos/videocall.html

注意证书警告,选择继续

相关推荐
阳区欠27 分钟前
【Linux】进程通信
linux·运维·服务器·共享内存·进程通信·system v·管道文件
may_一一42 分钟前
终端SSH连接工具SecureCRT安装和连接Linux
运维·服务器·ssh
姓刘的哦1 小时前
Ubuntu环境安装
linux·运维·ubuntu
厦门德仔2 小时前
【C#】C#字符串拼接的6种方式及其性能分析对比
服务器·windows·c#
春生黎至10052 小时前
GZ073网络系统管理赛项赛题第1套模块A:网络构建解题笔记
运维·网络
IT程序媛-桃子2 小时前
【网安面经合集】42 道高频 Web 安全面试题全解析(附原理+防御+思路)
运维·网络·安全·面试
❀͜͡傀儡师2 小时前
多台服务器上docker部署 Redis 集群
运维·服务器·redis
JCBP_2 小时前
数据结构4
运维·c语言·数据结构·vscode
AdrichPro2 小时前
10、Linux C 网络编程(完整版)
linux·服务器·c语言·网络
IT 小旋风3 小时前
Linux centos 7 常用服务器搭建
linux·服务器·centos