Ubuntu搭建turn服务器(webrtc ice服务器)

阅读别人博客的笔记,测试了好多人的方法,最后这个成功了

原理图

image

安装gcc环境

1
which gcc

安全签名

  1. ssl
    1
    sudo apt install openssl-devel
  2. 生成签名
    1
    openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
    一直回车

安装libevent

1
wget --no-check-certificate https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz

libevent-2.1.12-stable.tar.gz

1
2
3
4
5
tar -zxvf libevent-2.1.12-stable.tar.gz
cd libevent-2.1.12-stable/
./configure
make
make install

安装coturn

  1. 下载安装包

    1
    wget --no-check-certificate https://github.com/coturn/coturn/archive/4.5.1.1.tar.gz
  2. 执行安装命令

    1
    2
    3
    4
    5
    tar -zxvf 4.5.1.1.tar.gz
    cd coturn-4.5.1.1
    ./configure
    make
    make install
  3. 生成用户

    1
    turnadmin -a -u chr -p 11111 -r xxx.com
  4. 修改配置文件

    1
    2
    cd /usr/local/etc
    cp turnserver.conf.default turnserver.conf
  5. 查看ip地址
    image

  6. 更改配置文件

    1
    vim turnserver.conf
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #与前ifconfig查到的网卡名称一致
    relay-device=eth0
    #内网IP
    listening-ip=10.0.16.7
    #公网IP
    external-ip=159.75.239.36
    #用户名密码,创建IceServer时用
    user=chr:123456
    #一般与turnadmin创建用户时指定的realm一致
    realm=chr.com
    #端口号
    listening-port=3478
    #不开启会报CONFIG ERROR: Empty cli-password, and so telnet cli interface is disabled! Please set a non empty cli-password!错误
    cli-password=qwerty

    cert=/etc/turn_server_cert.pem
    pkey=/etc/turn_server_pkey.pem
  7. 开启3478的tcp和udp端口
    记得服务器一定要开启udp对应的端口!!!
    ubuntu中开启:

    1
    2
    sudo ufw allow 3478/tcp
    sudo ufw allow 3478/udp
  8. 开启cotrun服务

    1
    turnserver -a -f -r xxx.com

    image
    然后ctrl+C退出,使用 -o 参数后台启动

    1
    turnserver -a -o -f -r xxx.com
  9. 测试turn服务器
    webrtc-samples官网提供了一个测试用的地址
    https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

image
image