前言

本文章转载自B站再制祁珞

准备步骤

  1. 准备一台具有公网IP的云服务器,IP在国内并且至少8M上行带宽

  2. 安装Ubuntu 20.04 LTS 或 24.04 LTS 系统(以下演示均使用Ubuntu系统

  3. 远程登录服务器

配置防火墙

打开平台防火墙 9736,3478,49152-65535端口

如果系统装有防火墙不要忘记开启

搭建

搭建Coturn服务器

Coturn服务器负责P2P之间的转发,是稳定静距离语音体验的关键。

  1. 安装各类依赖和软件,遇到选项根据提示 “y” 确认

sudo apt install git
sudo apt install gcc
sudo apt install g++
sudo apt install openssl
sudo apt install libssl-dev
  1. 安装 LibEvent 组件(若下载失败请换用GitHub加速链接)

sudo wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
sudo tar -xvzf libevent-2.1.12-stable.tar.gz
cd libevent-2.1.12-stable
sudo ./configure
sudo make
sudo make install
cd
  1. 安装 Coturn 服务(若下载失败请换用GitHub加速链接)

sudo wget https://github.com/coturn/coturn/archive/4.5.1.1.tar.gz
sudo tar -zxvf 4.5.1.1.tar.gz
cd coturn-4.5.1.1
sudo ./configure
sudo make
sudo make install
  1. 配置turn文件

cd /usr/local/etc/
sudo cp turnserver.conf.default turnserver.conf
sudo cp turnserver.conf.default turnuserdb.conf
  1. 生成签名证书

sudo openssl req -x509 -newkey rsa:2048 -keyout /usr/local/etc/turn_server_pkey.pem -out /usr/local/etc/turn_server_cert.pem -days 99999 -nodes

生成证书的时候会让填写国家地区等信息,可以随便填写,这里本人服务器在宿迁,所以country name 填写 cn state or province 填写 jiangxi Locality name 填写 suqian 剩下的填XX即可。

完成后在命令行内输入 “ll” 此时文件夹内的构成如下

  1. 编辑turn文件

首先用命令生成账号密码的md5码,-u 用户名 -r 地区 -p 密码 可以自行修改

turnadmin -u demo -r chengdu -p demo123 -k

命令执行完成后会出现一段md5码,复制下来留着。

然后使用Vim编辑turnuserdb.conf文件。先将文件内所有代码清空。然后在英文键盘下输入小写 “i”,以 “用户名:md5码” 的格式填入刚刚记录下来的内容(示例见下图)。然后在英文键盘按下 “ESC” ,输入 “:” 输入小写 “w” 和小写 “q”保存文件。

cd /usr/local/etc/
sudo vi turnuserdb.conf

保存退出后在命令行输入 “ifconfig” 查看网卡信息,在 “etc0” 网卡下的 “inet” 后方的IP就是云服务器的内网IP。复制下来备用。

ifconfig

接下来使用Vim编辑turnserver.conf文件。先将文件内所有代码清空。在命令行中输入 sudo vi turnserver.conf 在英文键盘下输入小写 “i”,然后将下方命令块中所有代码替换进去,然后根据注释自行修改配置文件。然后在英文键盘按下 “ESC” ,输入 “:” 输入小写 “w” 和小写 “q”保存文件。

cd /usr/local/etc/
sudo vi turnserver.conf
#中继服务器监听的IP地址,NAT环境下直接写私网IP地址,可以指定多个IP(若屡次失败可以删除即为全部监听)
listening-ip=127.0.0.1
#中继服务器转发地址(本地IP地址将用于传递数据包的给每个端),和监听地址一样
#relay-ip=127.0.0.1
#外部IP,NAT环境下直接写:公网IP/私网IP
external-ip=127.0.0.10/127.0.0.1
cli-password=123456
#打开fingerprint的注释,使用长期证书机制。
fingerprint
#打开密码验证,使用短期证书机制。
lt-cred-mech
#服务器名称,用于OAuth认证,默认和realm相同,直接填公网ip.部分浏览器本段不设可能会引发cors错误。
server-name=127.0.0.10
# TURN REST API的长期凭证机制范围,同样设为ip,同server-name.
realm=127.0.0.10
#移动的ICE(MICE)的规范支持。
mobility
#快捷的添加用户是使用user=XXX:XXXX的方式,可以添加多个。/var/db/turndb也工作,可以使用turnadmin来管理其中用户,可以添加多个。
user=demo:demo123

  1. 开启turn服务

cd /usr/local/bin
turnserver -v -r 你的公网IP:3478 -a -o -c /usr/local/etc/turnserver.conf

“ps -ef|grep turnserver” 查看turn服务进程 “killall turnserver” 关闭turn服务

  1. 测试turn服务

接下来我们要测试turn服务器是否可用,点击下方测试网址进行测试:

https://docs.wildfirechat.cn/webrtc/trickle-ice/

根据网站内提示填入turn服务器

TURN URI: turn:你的公网IP:3478

TURN用户名: 配置文件中设置的用户名

TURN密码: 配置文件中设置的密码

填写完成后点击 “添加服务” 然后点击下方 “收集候选” 如图所示就是部署成功

搭建BetterCrewLink近距离语音服务器

  1. 安装Docker服务

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
#官方一键安装
curl -sSL https://get.daocloud.io/docker | sh
#国内daocloud一键安装
#手动安装方法请自行搜索
  1. 拉取BCL-Server镜像

sudo docker pull ohmyguus/bettercrewlink-server:latest
  1. 配置 peerConfig.yml 文件

cd /home
sudo touch peerConfig.yml
sudo vi peerConfig.yml

创建完 peerConfig.yml 文件后使用Vim编辑 peerConfig.yml 文件。先将文件内所有代码清空。在命令行中输入 sudo vi peerConfig.yml 在英文键盘下输入小写 “i”,然后将下方命令块中所有代码替换进去,然后根据注释自行修改配置文件(仅需要修改 “iceServers:” 以下的内容)。然后在英文键盘按下 “ESC” ,输入 “:” 输入小写 “w” 和小写 “q”保存文件。

forceRelayOnly: false
integratedRelay:
  enabled: false # Use the-built in relay server if you run a small-scale server for private use.
  #relayIps: ['192.0.2.1']
  #listeningIps: ['192.0.2.1']
  externalIps: { 'default': '192.0.2.1' }
  minPort: 49152
  maxPort: 65535
  listeningPort: 3478
  # Can be one of: OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, ALL
  debugLevel: 'INFO'
  defaultUsername: 'M9DRVaByiujoXeuYAAAG'
  defaultPassword: 'TpHR9HQNZ8taxjb3'
# If you run into performance issues, you may want to look into offloading relay duties to a native TURN/STUN
# implementation. You can configure them below.

# Custom TURN/STUN servers
iceServers:
  - urls: 'turn:你的公网IP:3478'
    username: 'turn配置文件中设置的用户名'
    credential: 'turn配置文件中设置的密码'

  1. 启动 BCL-Server

docker run -d --network=host --name=BCL-Server --restart=always -v /home/peerConfig.yml/:/app/config/peerConfig.yml ohmyguus/bettercrewlink-server

命令执行成功后会生成一串代码,如果有就是部署成功了

此时打开浏览器,输入 云服务器IP:9736 。即可打开一个可以查看BCL-Server在线人数的网址,如图。

  1. 修改客户端地址

打开BCL客户端,点击 “更改语音服务器” ,将服务器地址改为 “http://云服务器公网IP:9736” 。此外,必须关闭 “NAT修复” 选项以保证正常使用Coturn服务器。

总结

以上就是搭建BCL私服的全部过程,如有什么问题,欢迎在评论区留言。