前言
本文章转载自B站再制祁珞
准备步骤
准备一台具有公网IP的云服务器,IP在国内并且至少8M上行带宽
安装Ubuntu 20.04 LTS 或 24.04 LTS 系统(以下演示均使用Ubuntu系统)
远程登录服务器
配置防火墙
打开平台防火墙 9736,3478,49152-65535端口
如果系统装有防火墙不要忘记开启
搭建
搭建Coturn服务器
Coturn服务器负责P2P之间的转发,是稳定静距离语音体验的关键。
安装各类依赖和软件,遇到选项根据提示 “y” 确认
sudo apt install git
sudo apt install gcc
sudo apt install g++
sudo apt install openssl
sudo apt install libssl-dev
安装 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
安装 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
配置turn文件
cd /usr/local/etc/
sudo cp turnserver.conf.default turnserver.conf
sudo cp turnserver.conf.default turnuserdb.conf
生成签名证书
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” 此时文件夹内的构成如下
编辑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
开启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服务
测试turn服务
接下来我们要测试turn服务器是否可用,点击下方测试网址进行测试:
https://docs.wildfirechat.cn/webrtc/trickle-ice/
根据网站内提示填入turn服务器
TURN URI: turn:你的公网IP:3478
TURN用户名: 配置文件中设置的用户名
TURN密码: 配置文件中设置的密码
填写完成后点击 “添加服务” 然后点击下方 “收集候选” 如图所示就是部署成功
搭建BetterCrewLink近距离语音服务器
安装Docker服务
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
#官方一键安装
curl -sSL https://get.daocloud.io/docker | sh
#国内daocloud一键安装
#手动安装方法请自行搜索
拉取BCL-Server镜像
sudo docker pull ohmyguus/bettercrewlink-server:latest
配置 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配置文件中设置的密码'
启动 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在线人数的网址,如图。
修改客户端地址
打开BCL客户端,点击 “更改语音服务器” ,将服务器地址改为 “http://云服务器公网IP:9736” 。此外,必须关闭 “NAT修复” 选项以保证正常使用Coturn服务器。
总结
以上就是搭建BCL私服的全部过程,如有什么问题,欢迎在评论区留言。
评论