• ubuntu20.04搭建janus服务器


    目录

    一、安装依赖项

    二、编译janus v1.1.0

    三、生成ssl证书

    四、编译配置nginx

    五、编译turnserver

    六、配置janus文件

    七、编译janus报错记录

     参考资料:


    环境是ubuntu20.04

    使用最新的janus v1.1.0代码。

    一、安装依赖项

    1. sudo apt-get install aptitude
    2. sudo aptitude install libmicrohttpd-dev libjansson-dev libnice-dev libssl1.1 libsrtp2-dev libsofia-sip-ua-dev libglib2.0-dev libopus-dev libogg-dev libcurl4-openssl-dev pkg-config gengetopt libtool automake
    3. sudo apt install cmake
    4. sudo aptitude install libconfig-dev
    5. sudo aptitude install libssl-dev
    6. sudo aptitude install doxygen graphviz
    7. # ffmpeg库 支持--enable-post-processing
    8. sudo aptitude install libavcodec-dev libavformat-dev libswscale-dev libavutil-dev

    1. git clone https://github.com/warmcat/libwebsockets.git
    2. git branch -a
    3. #当前最新版本v4.3
    4. git checkout v4.3-stable
    5. mkdir build
    6. cd build
    7. cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS="-fpic" ..
    8. make && sudo make install

    1. wget https://github.com/cisco/libsrtp/archive/v2.2.0.tar.gz
    2. tar xfv v2.2.0.tar.gz
    3. cd libsrtp-2.2.0
    4. ./configure --prefix=/usr --enable-openssl
    5. make shared_library && sudo make install

    1. git clone https://github.com/Kurento/libusrsctp.git
    2. cd libusrsctp
    3. ./bootstrap
    4. ./configure
    5. make
    6. sudo make install

    1. wget https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.71.tar.gz
    2. tar zxf libmicrohttpd-0.9.71.tar.gz
    3. cd libmicrohttpd-0.9.71/
    4. ./configure
    5. make
    6. sudo make install

    二、编译janus v1.1.0

    1. git clone https://github.com/meetecho/janus-gateway.git
    2. git tag 查看当前的 tag,选择最新稳定的版本v1.1.0
    3. git checkout v1.1.0
    4. sh autogen.sh
    5. ./configure --prefix=/opt/janus --enable-websockets --enable-post-processing --enable-docs --enable-rest --enable-data-channels
    6. make
    7. sudo make install

    三、生成ssl证书

    1. mkdir -p ~/cert
    2. cd ~/cert
    3. # CA私钥
    4. openssl genrsa -out key.pem 2048
    5. # 自签名证书
    6. openssl req -new -x509 -key key.pem -out cert.pem -days 366

    四、编译配置nginx

    1. wget http://nginx.org/download/nginx-1.20.1.tar.gz
    2. tar xvzf nginx-1.20.1.tar.gz
    3. cd nginx-1.20.1/
    4. # 配置,一定要支持https
    5. ./configure --with-http_ssl_module
    6. # 编译
    7. make
    8. #安装
    9. sudo make install

    配置

    sudo vim /usr/local/nginx/conf/nginx.conf

    把最后一段的注释打开,修改证书地址(ssl_certificate、ssl_certificate_key)和janus页面地址(root):

    1. server {
    2. listen 443 ssl;
    3. server_name localhost;
    4. ssl_certificate /home/jiang/cert/cert.pem;
    5. ssl_certificate_key /home/jiang/cert/key.pem;
    6. ssl_session_cache shared:SSL:1m;
    7. ssl_session_timeout 5m;
    8. ssl_ciphers HIGH:!aNULL:!MD5;
    9. ssl_prefer_server_ciphers on;
    10. location / {
    11. root /opt/janus/share/janus/demos;
    12. index index.html index.htm;
    13. }
    14. }

    启动nginx

    sudo /usr/local/nginx/sbin/nginx

    可以访问了:https://ip

    五、编译turnserver

    turnserver是一个穿透服务。

    1. 依赖库
    2. sudo apt-get install libssl-dev
    3. sudo apt-get install libevent-dev

    编译

    1. wget http://coturn.net/turnserver/v4.5.0.7/turnserver-4.5.0.7.tar.gz
    2. tar xfz turnserver-4.5.0.7.tar.gz
    3. cd turnserver-4.5.0.7
    4. ./configure
    5. make
    6. sudo make install

    启动

    sudo nohup turnserver -L 0.0.0.0 --min-port 30000 --max-port 60000 -a -u abc:123456 -v -f -r nort.gov &
    1. 查看是否启动正常
    2. jiang@ubuntu:~/work/janus$ ps -ef | grep turnserver
    3. root 37220 29777 0 16:41 pts/1 00:00:00 sudo nohup turnserver -L 0.0.0.0 --min-port 30000 --max-port 60000 -a -u abc:123456 -v -f -r nort.gov
    4. root 37221 37220 0 16:41 pts/1 00:00:00 turnserver -L 0.0.0.0 --min-port 30000 --max-port 60000 -a -u abc:123456 -v -f -r nort.gov
    5. jiang 37253 29777 0 16:41 pts/1 00:00:00 grep --color=auto turnserver
    6. 关闭,直接kill
    7. sudo kill -9 pid

    可以通过以下链接测试

    https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

    STUN or TURN URI填写 stun:ip

    如果测试turn,则写turn:ip

     

    六、配置janus文件

    cd /opt/janus/etc/janus/

    首先将.sample后缀全部去掉

    1. cd /opt/janus/etc
    2. sudo cp -r janus janus_bak
    3. cd janus
    4. 批量重命名,去掉.sample文件后缀
    5. sudo rename 's/\.sample$//' *.sample

    修改/opt/janus/share/janus/demos/settings.js

    1. var server = null;
    2. if(window.location.protocol === 'http:')
    3. server = "http://" + window.location.hostname + ":8088/janus";
    4. else
    5. server = "https://" + window.location.hostname + ":8089/janus";
    6. //强制使用websocket,否则有可能点击start以后无响应
    7. server = "wss://" + window.location.hostname + ":8989";

    配置/opt/janus/etc/janus/janus.jcfg

    1. certificates: {
    2. cert_pem = "/home/jiang/cert/cert.pem"
    3. cert_key = "/home/jiang/cert/key.pem"
    4. #cert_pwd = "secretpassphrase"
    5. #dtls_accept_selfsigned = false
    6. #dtls_ciphers = "your-desired-openssl-ciphers"
    7. #rsa_private_key = false
    8. }
    9. nat: {
    10. stun_server = "192.168.101.175"
    11. stun_port = 3478
    12. nice_debug = false
    13. #full_trickle = true
    14. #ice_nomination = "regular"
    15. #ice_keepalive_conncheck = true
    16. #ice_lite = true
    17. #ice_tcp = true
    18. turn_server = "192.168.101.175"
    19. turn_port = 3478
    20. turn_type = "udp"
    21. #此处的user:pwd,对应着turnserver的abc:123456
    22. turn_user = "abc"
    23. turn_pwd = "123456"
    24. ......

    配置/opt/janus/etc/janus/janus.transport.http.jcfg

    1. general: {
    2. json = "indented" # Whether the JSON messages should be indented (default),
    3. # plain (no indentation) or compact (no indentation and no spaces)
    4. base_path = "/janus" # Base path to bind to in the web server (plain HTTP only)
    5. http = true # Whether to enable the plain HTTP interface
    6. port = 8088 # Web server HTTP port
    7. https = true # Whether to enable HTTPS (default=false)
    8. secure_port = 8089 # Web server HTTPS port, if enabled
    9. }
    10. certificates: {
    11. cert_pem = "/home/jiang/cert/cert.pem"
    12. cert_key = "/home/jiang/cert/key.pem"
    13. #cert_pwd = "secretpassphrase"
    14. #ciphers = "PFS:-VERS-TLS1.0:-VERS-TLS1.1:-3DES-CBC:-ARCFOUR-128"
    15. }

    配置/opt/janus/etc/janus/janus.transport.websockets.jcfg

    1. general: {
    2. json = "indented" # Whether the JSON messages should be indented (default),
    3. ws = true # Whether to enable the WebSockets API
    4. ws_port = 8188 # WebSockets server port
    5. wss = true # Whether to enable secure WebSockets
    6. wss_port = 8989 # WebSockets server secure port, if enabled
    7. }
    8. certificates: {
    9. cert_pem = "/home/jiang/cert/cert.pem"
    10. cert_key = "/home/jiang/cert/key.pem"
    11. }

    启动janus

    sudo /opt/janus/bin/janus --debug-level=7

    七、编译janus报错记录

    configure: error: Doxygen 1.8.13 not usable: versions between 1.8.12 and 1.8.14 are known to render poorly.

    1. 删除Doxygen
    2. sudo apt autoremove doxygen
    3. 下载新版本
    4. git clone https://github.com/doxygen/doxygen.git
    5. cd doxygen/
    6. git tag
    7. git checkout Release_1_8_19
    8. mkdir build
    9. cd build
    10. cmake -G "Unix Makefiles" ..
    11. make
    12. sudo make install
    13. 编译doxygen源码报错
    14. Could NOT find FLEX (missing: FLEX_EXECUTABLE)
    15. sudo apt-get install flex
    16. sudo apt-get install bison
    1. 编译janus报错
    2. /home/jf/workspace/janus/janus-gateway/src/dtls.c:877: undefined reference to `srtp_crypto_policy_set_aes_gcm_256_16_auth'
    3. /home/jf/workspace/janus/janus-gateway/src/dtls.c:878: undefined reference to `srtp_crypto_policy_set_aes_gcm_256_16_auth'
    4. /home/jf/workspace/janus/janus-gateway/src/dtls.c:912: undefined reference to `srtp_crypto_policy_set_aes_gcm_256_16_auth'
    5. /home/jf/workspace/janus/janus-gateway/src/dtls.c:913: undefined reference to `srtp_crypto_policy_set_aes_gcm_256_16_auth'
    6. /home/jf/workspace/janus/janus-gateway/src/dtls.c:916: undefined reference to `srtp_crypto_policy_set_aes_gcm_128_16_auth'
    7. /home/jf/workspace/janus/janus-gateway/src/dtls.c:917: undefined reference to `srtp_crypto_policy_set_aes_gcm_128_16_auth'
    8. /home/jf/workspace/janus/janus-gateway/src/dtls.c:881: undefined reference to `srtp_crypto_policy_set_aes_gcm_128_16_auth'
    9. /home/jf/workspace/janus/janus-gateway/src/dtls.c:882: undefined reference to `srtp_crypto_policy_set_aes_gcm_128_16_auth'
    1. 卸载掉老版本
    2. sudo apt autoremove libsrtp2-dev
    3. 安装新版本
    4. wget https://github.com/cisco/libsrtp/archive/v2.4.0.tar.gz
    5. tar xvf v2.4.0.tar.gz
    6. cd libsrtp-2.4.0/
    7. ./configure --prefix=/usr --enable-openssl
    8. make shared_library
    9. sudo make install

     参考资料:

    Ubuntu 下 Janus Server 搭建笔记 - 知乎

    Janus WebRTC Server (0.x): About Janus

  • 相关阅读:
    基于YOLOv8与DeepSORT实现多目标跟踪——算法与源码解析
    USART串口通讯
    springboot缓存技术--jetCache
    JVM 原理简介
    2021全球网站流量最高的网站,Python 带你看一看
    acwing 795前缀和
    Linux下手动修改服务器时间(没网环境下)
    ios16充电卡在80%充不上去了?可以试试这几种办法
    Bootstrap Blazor 组件库 Row 布局组件(栅格系统)
    Flink 环境对象
  • 原文地址:https://blog.csdn.net/zhuxian2009/article/details/127969785