Docker安装WebRTC下TURN服务

 详细实现方式以及代码下载请前往 https://www.passerma.com/article/90

实现效果

博客图片

一、手动构建镜像

1.新建Dockerfile文件

文件用于编译镜像
以alpine为基础镜像
添加coturn需要的依赖库
获取coturn并进行编译
通过start.sh启动turnserver服务

Dockerfile

FROM alpine

RUN apk add make \
  gcc\
  g++ \
  wget \
  libevent-dev \
  openssl-dev \
  libffi-dev \
  curl

RUN wget https://github.com/coturn/coturn/archive/4.5.1.3.tar.gz \
  && tar -zxvf 4.5.1.3.tar.gz \
  && cd coturn-4.5.1.3 \
  && ./configure && make && make install && cd .. \
  && rm -rf coturn-4.5.1.3 4.5.1.3.tar.gz

COPY ./start.sh /start.sh

EXPOSE 3478 3478/udp

ENTRYPOINT ["/start.sh"]

2.新建start.sh文件

需要先给予start.sh文件可执行权限

chmod +x start.sh

start.sh

#!/bin/sh

createConf() {
  if [ -z "$EXTERNAL_IP" ]; then
    ip_tmp=$(curl http://icanhazip.com)
    if [ $? -eq 0 ]; then
      echo "获取 EXTERNAL_IP 成功: $ip_tmp"
      EXTERNAL_IP="$ip_tmp"
    else
      echo "获取 EXTERNAL_IP 失败,请手动修改"
      EXTERNAL_IP="0.0.0.0"
    fi
  else
    echo "EXTERNAL_IP 已经设置为: $EXTERNAL_IP"
  fi

  cat <<EOF >>/etc/turnserver.conf
listening-device=eth0
listening-port=3478
listening-ip=0.0.0.0
external-ip=$EXTERNAL_IP
fingerprint
lt-cred-mech
user=$user_tmp
realm=localhost
no-tlsv1
no-tlsv1_1
no-tlsv1_2
EOF
}

echo "====== 配置 turnserver ======"

user_tmp=${TURN_USERNAME:-"user"}:${TURN_PASSWORD:-"pass"}
if [ ! -f /etc/turnserver.conf ]; then
  echo "创建 /etc/turnserver.conf 配置文件"
  createConf
  echo "====== 启动 turnserver ======"
  echo "external-ip=$EXTERNAL_IP"
  echo "user=$user_tmp"
else
  echo "/etc/turnserver.conf 配置文件已存在"
  echo "====== 启动 turnserver ======"
fi

exec turnserver -v -c /etc/turnserver.conf

3.编译镜像

docker build -t passerma/turnserver:1.0.0 .

二、使用现有镜像

docker pull passerma/turnserver:1.0.0

三、镜像使用

1.直接运行

docker run -itd --name turnserver -p 3478:3478 -p 3478:3478/udp passerma/turnserver:1.0.0

2.带参数运行

支持修改公网 ip、用户名、密码

docker run -itd --name turnserver \
-e EXTERNAL_IP=1.2.3.4 -e TURN_USERNAME=myuser -e TURN_PASSWORD=mypass \
-p 3478:3478 -p 3478:3478/udp \
passerma/turnserver:1.0.0

3.配置修改

配置文件位置 /etc/turnserver.conf
配置文件默认如下

listening-device=eth0
listening-port=3478
listening-ip=0.0.0.0
external-ip=0.0.0.0
fingerprint
lt-cred-mech
user=user:pass
realm=localhost
no-tlsv1
no-tlsv1_1
no-tlsv1_2

默认用户名密码为user:pass

四、项目源码

 详细实现方式以及代码下载请前往 https://www.passerma.com/article/90

相关推荐

  1. WebRTC即时通讯核心协议-TRUN(RFC5766)

    2024-01-07 09:08:02       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-07 09:08:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-07 09:08:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-07 09:08:02       87 阅读
  4. Python语言-面向对象

    2024-01-07 09:08:02       96 阅读

热门阅读

  1. Linux内核--进程管理(十二)LinuxIO基础知识与概念

    2024-01-07 09:08:02       49 阅读
  2. 如何预防变种.halo勒索病毒感染您的计算机?

    2024-01-07 09:08:02       58 阅读
  3. 【MybatisPlus Docker】

    2024-01-07 09:08:02       70 阅读
  4. 1. Spring Boot 自动配置 Mybatis 流程

    2024-01-07 09:08:02       62 阅读
  5. 《微信小程序开发从入门到实战》学习七十四

    2024-01-07 09:08:02       61 阅读
  6. [设计模式 Go实现] 结构型~装饰模式

    2024-01-07 09:08:02       63 阅读