janus 安装部署

本文使用docker进行安装,还没有安装docker和docker-compose的,请自行安装,这里就不介绍了

环境

janus-gateway镜像版本:anyan/janus-gateway:0.10.7
linux版本: Ubuntu 18.04.6 LTS
coturn/coturn 镜像版本: coturn/coturn:latest 镜像ID 8403619f32d4

拉取镜像

docker pull anyan/janus-gateway:0.10.7
docker pull coturn/coturn

获取配置文件

启动coturn

 docker run --net=host -d -p 3478:3478 -p 3478:3478/udp -p 5349:5349 -p 5349:5349/udp -p 40000-40100:40000-40100/udp coturn/coturn

启动janus

docker run -it anyan/janus-gateway:0.10.7 bash

拷贝到指定目录,本示例使用/root/janus作为根目录
使用 docker ps获取到容器的id

$ mkdir -p  /root/janus/etc/janus
$ docker ps | grep janus
794d00df4a2d   canyan/janus-gateway:0.10.7                    "/usr/local/bin/janu…"   41 hours ago   Up 41 hours                                                                                                                                                                                                                                                                                                                                                                     janus_gateway

docker cp 794d00df4a2d:/usr/local/etc/janus/janus.jcfg /root/janus/etc/janus
docker cp 794d00df4a2d:/usr/local/etc/janus/janus.transport.http.jcfg /root/janus/etc/janus
docker cp 794d00df4a2d:/usr/local/etc/janus/janus.websockets.http.jcfg /root/janus/etc/janus
docker cp 794d00df4a2d:/usr/local/share/janus/demos /root/janus

/root/janus/etc/janus/janus.jcfg nat 配置文件内容如下:

nat: {
       stun_server = "10.250.63.74"
       stun_port = 3478
       nice_debug = false
       turn_server = "IP地址"
       turn_port = 3478
       turn_type = "udp"
       turn_user = "admin"
       turn_pwd = "xxx"
       ice_ignore_list = "vmnet"
}

制作证书可以通过openssl进行生成

mkdir -p /root/janus/ssl
cd /root/janus/ssl
openssl rsa -in domain.com.key -text > key.pem
openssl x509 -inform PEM -in domain.com.crt > cert.pem

创建docker-compose.yaml文件

version: '2.1'
services:
  janus-gateway:
    container_name: janus_gateway
    image: 'canyan/janus-gateway:0.10.7'
    command: ["/usr/local/bin/janus", "-F", "/usr/local/etc/janus","--debug-level=7"]
    ports:
      - "9918:9918"
      - "9928:9928"
      - "9938:9938"
      - "8889:8889"
      - "8000:8000"
      - "7088:7088"
      - "7089:7089"
    volumes:
      - "./etc/janus/janus.jcfg:/usr/local/etc/janus/janus.jcfg"
      - "./etc/janus/ssl/cert.csr:/usr/local/etc/ssl/cert.csr"
      - "./etc/janus/ssl/key.pem:/usr/local/etc/ssl/key.pem"
      - "./etc/janus/ssl/cert.pem:/usr/local/etc/ssl/cert.pem"
      - "./etc/janus/janus.transport.http.jcfg:/usr/local/etc/janus/janus.transport.http.jcfg"
      - "./etc/janus/janus.transport.websockets.jcfg:/usr/local/etc/janus/janus.websockets.http.jcfg"
        #- "./etc/janus/janus.eventhandler.sampleevh.jcfg:/usr/local/etc/janus/janus.eventhandler.sampleevh.jcfg"
    restart: always
    network_mode: 'host'

启动服务

cd /root/janus;
docker-compose up -d

安装nginx

apt-get install nginx -y

配置nginx

 cat /etc/nginx/nginx.conf
user  root;
events {
    worker_connections  4096;  ## Default: 1024
}

http {
server {
        listen       80;
        server_name  web_dist;

        location / {
            root   /root/janus/demos;
            index  index.html index.htm;
        }
}

server {
    ssl on;
    listen       443 ssl;
    server_name  localhost;
    root         /root/janus/demos;

    underscores_in_headers on;

    ssl_certificate "/root/janus/ssl/cert.pem";
    ssl_certificate_key "/root/janus/ssl/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;
    }

    location /ws {
        proxy_pass http://websocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

# api server
upstream api_server{
  server 0.0.0.0:8088;
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}
upstream websocket {
        server 127.0.0.1:8188;
}

}

需改/root/janus/demos目录下 echotest.js videoroomtest.js文件,文件内容如下

var server = null;
if(window.location.protocol === 'http:')
        server = "http://" + window.location.hostname + "/janus/";
else
        server = "https://" + window.location.hostname + "/janus/";

访问 https://部署IP/videoroomtest.html
sss
点击Start
效果如下
sd
end

代码: https://github.com/meetecho/janus-gateway
docker镜像: https://hub.docker.com/r/canyan/janus-gateway

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/143250.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

觉非科技发布【轻地图高速NOA智驾方案】|地平线,觉非科技,MobileDrive超捷生态协作实现技术落地

11月10日,2023世界新汽车技术合作生态展期间,觉非科技正式发布了基于地平线征程系列以及MobileDrive超捷规控系统的【轻地图高速NOA智驾解决方案】。该方案首次实现了从芯片能力输出、到数据闭环建设、再到规控部署的产业生态链协作与打通,为…

员工电脑监控的方法有哪些

有人在后台问,员工电脑监控的方法有哪些? 其实主要包括以下几方面:1)安装监控软件 2)使用操作系统自带的工具 3)部署网络监控设备 4)定期检查电脑 5)制定严格的规章制度 因为内容比…

23款奔驰C260L升级原厂360全景影像 超广角的视野

本次星骏汇小许介绍的是23款奔驰C260L升级原厂360全景影像,上帝视角看清车辆周围环境,更轻松驾驶 升级360全景影像系统共有前后左右4个摄像头,分别在车头,车尾,以及两边反光镜下各一个,分别用来采集车头&am…

在ant构建脚本中调用maven的命令

有时候想用maven管理依赖,用ant构建。 在ant的build.xml文件中可以使用exec这个task来调用系统命令,也就可以调用maven的命令。 例如,执行maven的命令mvn dependency:copy-dependencies,可以将项目的依赖提取出来,放…

【ARL灯塔搭建详细教程】

文章目录 前言一、前期准备二、安装docker及docker-compose三、安装ARL灯塔四、登录ARL灯塔 前言 ARL(Asset Reconnaissance Lighthouse)资产侦查灯塔旨在快速发现并整理企业外网资产并为资产构建基础数据库,无需登录凭证或特殊访问即可主动…

低代码平台加持后紧急交付项目如何突破极限

导读: 传统开发低代码开发,两种开发模式的深度融合,基于已有的业务沉淀,快速实现项目中大量的定制需求,高速、高能使得传统项目最为宝贵的工期变得充裕。 项目管理的十大知识域中,其实并没有专门的时间&…

人工智能基础_机器学习027_L2正则化_岭回归_非稀疏性_原理解读_公式推导---人工智能工作笔记0067

然后我们再来看一下岭回归,也就是第二范数对吧, 他的公式,平方以后,加和然后开平方.L2的公式是 可以看到L2公式,也是有个阿尔法,惩罚项对吧. 可以看到因为L2带有平方,所以他的图形是个圆形 我们可以把L2范数,进行画出来看看 这里我们先看L2的公式,这里我们让 这个公式写成1 …

提升自动化测试:Apifox 产品更新全解析!

Apifox 新版本上线啦! 看看本次版本更新主要涵盖的重点内容,有没有你所关注的功能特性: 自动化测试 新增 ForEach 循环组件数据库连接支持 MongoDB前/后置操作模块能力升级 支持使用 pm.executeAsync 异步执行外部程序支持自定义外部程序的…

linux 系统下文本编辑常用的命令

一、是什么 Vim是从 vi 发展出来的一个文本编辑器,代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方 而…

小黑子—springMVC:第二章 拦截器、全注解开发和异常处理机制

springMVC入门2.0 4、小黑子的springMVC拦截器4.1 Interceptor简介4.2 拦截器快速入门4.3 拦截器执行顺序4.4 拦截器执行原理 5、小黑子的springMVC全注解开发5.1 spring-mvc.xml中组件转化为注解形式5.1.1 消除spring-mvc.xml一二三 5.1.2 消除web.xml 6、小黑子的springMVC组…

内衣洗衣机怎么选?小型洗衣机质量排名

现在大部分的家庭都拥有高质量、大品牌、大容量的洗烘套装来满足一家人的日常洗烘需要,像内衣这种贴身的衣物,需要手洗或者用专用的内衣洗衣机,这样才可以最大程度地减少细菌的交叉感染,提高我们贴身衣物的卫生,那么怎…

Android WebView专题

WebView 专题 第一个WebView程序&#xff1a;加载远程网址 Layout添加WebView组件&#xff1b; <WebViewandroid:id"id/webView_first"android:layout_width"match_parent"android:layout_height"match_parent"/>初始化组件&#xff0c;加…

YOLOv8-Seg改进:卷积变体系列篇 | SCConv(空间和通道重建卷积) | CVPR2023

🚀🚀🚀本文改进:SCConv(空间和通道重建卷积),引入到YOLOv8,与C2f结合实现二次创新; 🚀🚀🚀SCConv亲测在多个数据集能够实现涨点 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把…

项目管理:如何利用有限的时间完成无限的任务

时间管理&#xff0c;实质上就是利用有限的时间完成无限的任务。它要求我们通过对任务的安排&#xff0c;实现在有限的时间内&#xff0c;使任务变得更有条理。 时间管理就像整理房间。如果你长期不进行整理&#xff0c;房间的杂物就会越积越多。如果将各类物品进行分类&…

Java智慧工地大数据中心源码

智慧工地形成安全、质量、进度、人员、机械、绿色施工六大针对性解决方案。 智慧工地技术架构&#xff1a;微服务JavaSpring Cloud VueUniApp MySql 安全管理 围绕重大危险源提供管控&#xff0c;可视化跟踪消防、安防、基坑、高支模、临边防护、卸料平台等设施设备的安全状态…

mysql数据库时间

记录MySQL今天又一个新的问题&#xff1a; 场景&#xff1a;nodejs后台容器部署 问题原因&#xff1a;纯属好心办坏事&#xff0c;由于考虑了时区&#xff08;现在看来纯属多余&#xff09;&#xff0c;在写入时间时使用了time_str.toLocaleString("chinese", { ti…

绩效管理系统有哪些?

绩效管理系统有哪些&#xff1f; 把绩效管理系统按照两大指标分类—— 按地域划分&#xff08;主要看兼容性和稳定性&#xff09;按照功能性质划分&#xff08;主要看实用性和拓展性&#xff09; 按照以上两个维度&#xff0c;我们可以简单把绩效管理系统分为4大不同类型——…

arcgis--浮点型栅格数据转整型

利用【Spatial Analyst工具】-【数学】-【转为整型】工具&#xff0c;将浮点型数据转为整型。如下&#xff1a; 【转为整型】对话框参数设计如下&#xff1a; 转换结果如下&#xff1a;
最新文章