Docker安装WebRTC下TURN服务

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

实现效果

博客图片

一、手动构建镜像

1.新建Dockerfile文件

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

Dockerfile

FROM alpineRUN apk add make \gcc\g++ \wget \libevent-dev \openssl-dev \libffi-dev \curlRUN 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.gzCOPY ./start.sh /start.shEXPOSE 3478 3478/udpENTRYPOINT ["/start.sh"]

2.新建start.sh文件

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

chmod +x start.sh

start.sh

#!/bin/shcreateConf() {if [ -z "$EXTERNAL_IP" ]; thenip_tmp=$(curl http://icanhazip.com)if [ $? -eq 0 ]; thenecho "获取 EXTERNAL_IP 成功: $ip_tmp"EXTERNAL_IP="$ip_tmp"elseecho "获取 EXTERNAL_IP 失败,请手动修改"EXTERNAL_IP="0.0.0.0"fielseecho "EXTERNAL_IP 已经设置为: $EXTERNAL_IP"ficat <<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 ]; thenecho "创建 /etc/turnserver.conf 配置文件"createConfecho "====== 启动 turnserver ======"echo "external-ip=$EXTERNAL_IP"echo "user=$user_tmp"
elseecho "/etc/turnserver.conf 配置文件已存在"echo "====== 启动 turnserver ======"
fiexec turnserver -v -c /etc/turnserver.conf

3.编译镜像

docker build -t passerma/turnserver .

二、使用现有镜像

docker pull passerma/turnserver

三、镜像使用

1.直接运行

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java学习苦旅(二十七)——Java中的集合框架

本篇博客将初略讲解Java中的集合框架及背后的数据结构。 集合框架介绍 Java 集合框架 Java Collection Framework&#xff0c;又被称为容器 &#xff08;container&#xff09;&#xff0c;是定义在java.util包下的一组接口 interfaces 和其实现类 classes 。其主要表现为将多…

OpenHarmony南向之LCD显示屏

OpenHarmony南向之LCD显示屏 概述 LCD&#xff08;Liquid Crystal Display&#xff09;驱动&#xff0c;通过对显示器上下电、初始化显示器驱动IC&#xff08;Integrated Circuit&#xff09;内部寄存器等操作&#xff0c;使其可以正常工作。 HDF Display驱动模型 LCD器件驱…

大数据时代的WEB运维高级架构师,Web系统运维工程师的实战成长之路

一、教程描述 本套WEB架构师教程&#xff0c;大小30.61G&#xff0c;共有183个文件。 二、教程目录 01-Web架构之单机时代&#xff08;共7课时&#xff09; 02-Web架构之集群时代&#xff08;共9课时&#xff09; 03-Web架构之DNS&#xff08;共6课时&#xff09; 04-Web…

【攻防世界】Reverse——secret-galaxy-300 writeup

由main函数查看相关代码&#xff0c;但是代码中并没有直接的关于flag的信息&#xff1a; int __cdecl main(int argc, const char **argv, const char **envp) {__main();fill_starbase(&starbase);print_starbase((int)&starbase);return 0; } void __cdecl fill_sta…

MYSQL InnoDB引擎

逻辑存储结构 架构 内存架构 磁盘结构 后台线程 事务原理 redolog undo log MVCC 基本概念 实现原理 隐藏字段 undo log readview

程序语言相关知识——偏向Eigen矩阵

1 查看 Eigen库表示的矩阵 方法 1.1 列矩阵x在监视中&#xff0c;这样查看&#xff0c;数值右侧的圈圈 可用于更新数值 随程序 1.2 比较全的方法&#xff1a;来自于知乎&#xff1a;https://zhuanlan.zhihu.com/p/625334009?utm_id0 1.3 eigen的用法&#xff1a;https://ww…

听GPT 讲Rust源代码--compiler(33)

File: rust/compiler/rustc_middle/src/macros.rs 在Rust源代码中&#xff0c;rust/compiler/rustc_middle/src/macros.rs文件的作用是定义了一些用于宏展开的辅助宏和宏规则。 首先&#xff0c;这个文件导入了许多其他相关的模块&#xff0c;这些模块定义了编译器内部所需要的…

如何使用 CMake 生成一个静态库

文章目录 tutorial_3/CMakeLists.txttutorial_3/src/CMakeLists.txtcmake_tutorial/tutorial_3/src/hello.cpptutorial_3/src/hello.h根目录的 CMakeLists.txtsrc 目录的 CMakeLists.txthello.cpp 和 hello.h构建过程总结 tutorial_3/CMakeLists.txt cmake_minimum_required(V…

关于对象存储的若干事

引言 最近在阅读鸣嵩的一篇文章&#xff0c;数据库的下一场革命&#xff1a;S3 延迟已降至原先的 10%&#xff0c;云数据库架构该进化了 收获很多&#xff0c;过去时间也基于对象存储做过一些功能实现&#xff0c;特记录下。关于鸣嵩&#xff1a; 曹伟&#xff0c;花名鸣嵩&am…

Redis入门-安装和启动

​ 大家好我是苏麟 , 今天开始聊聊Redis . 大纲 Redis简介官网 Redis下载Redis服务启动与停止Redis客户端图形工具 Redis简介 Redis是一个基于内存的 key-value 结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。 Redis是一个开源&#xff08;BSD许可&#xff0…

GA算法简介

GA算法简介 前言一、GA是什么二、GA简介1.思想2.流程3.过程 前言 今天学习一下优化中非常出名的遗传(GA)算法 &#xff0c;它的起源可是来自达尔文的生物进化论。 一、GA是什么 百科定义&#xff1a;遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;最早是…

【教3妹学编程-算法题】赎金信

3妹&#xff1a;“太阳当空照&#xff0c;花儿对我笑&#xff0c;小鸟说早早早&#xff0c;你为什么背上炸药包” 2哥 :3妹&#xff0c;什么事呀这么开森。 3妹&#xff1a;2哥你看今天的天气多好啊&#xff0c;最近一周都是大晴天&#xff0c;艳阳高照 2哥&#xff1a;是啊&am…