搭建自己的视频通话服务器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

注意证书警告,选择继续

相关推荐
霸道流氓气质4 分钟前
ApiPost 中配置自动获取 Token 并调用业务接口完整指南
java·服务器·数据库
D2aZXN3FhrDa7e2121 小时前
佛山乐从低预算实体店如何选择?看美诚AI自动化获客方案
运维·人工智能·自动化·佛山美诚科技有限公司
无足鸟ICT1 小时前
【RHCA+】查看变量
linux·运维·服务器
Kina_C2 小时前
Linux DNS 服务器-从高速缓存到辅助 DNS 部署指南
linux·运维·服务器·dns
EasyGBS2 小时前
ONVIF设备接入国标GB28181视频平台EasyGBS:不用国标也能一键拉流!
服务器·php·音视频
suaizai_2 小时前
TypeScript 7 正式发布!Vue 暂被 “拒之门外“ !!!
linux·运维·ubuntu
小小代码狗3 小时前
SQLi-Labs 基础注入实战教程(Less-1 ~ Less-5and Less-9)
服务器·python·php
慕伏白3 小时前
【慕伏白】Linux 系统如何根据端口号关闭进程
linux·运维·服务器
letisgo53 小时前
VMware Workstation + Ubuntu 26.04 LTS 小白运维部署手册
linux·运维·ubuntu
蓝创工坊Blue Foundry3 小时前
图片文字提取到 Excel:批量任务如何先定义要交付的字段
运维·服务器·开发语言·数据库·自动化·ocr·excel