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

注意证书警告,选择继续

相关推荐
YuMiao21 小时前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
碳基沙盒2 天前
OpenClaw 多 Agent 配置实战指南
运维
Sinclair4 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
Rockbean5 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
蝎子莱莱爱打怪5 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
茶杯梦轩5 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
简离5 天前
前端调试实战:基于 chrome://webrtc-internals/ 高效排查WebRTC问题
前端·chrome·webrtc
海天鹰6 天前
【免费】PHP主机=域名+解析+主机
服务器
DianSan_ERP6 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅6 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑