Ubuntu22.04
配置 Teamspeak
准备阶段
创建一个 teamspeak 用户(不建议使用 root 用户直接操作)
# 切换root用户
su -
# 新建一个用户
useradd -s /bin/bash -m teamspeak
# 加到sudo组
usermod -aG sudo teamspeak
# 设置密码
passwd teamspeak
# 切换teamspeak用户
su - teamspeak
安装服务端
前往下载官方 linux 服务端,最新版本为 SERVER 64-BIT 3.13.7
。
或者使用命令直接下载
wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2
解压
tar -xvf teamspeak3-server_linux_amd64-3.13.7.tar.bz2
重命名解压后的目录
mv teamspeak3-server_linux_amd64 teamspeak
进入 teamspeak 目录
cd teamspeak
同意许可协议
touch .ts3server_license_accepted
启动服务端
./ts3server_startscript.sh start
随后显示如下
------------------------------------------------------------------
------------------------------------------------------------------
I M P O R T A N T
------------------------------------------------------------------
Server Query Admin Account created
loginname= "serveradmin", password= "xxxxxxxx"
apikey= "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
------------------------------------------------------------------
------------------------------------------------------------------
I M P O R T A N T
------------------------------------------------------------------
ServerAdmin privilege key created, please use it to gain
serveradmin rights for your virtualserver. please
also check the doc/privilegekey_guide.txt for details.
token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
------------------------------------------------------------------
记录 token 值,现在就可以从客户端连接 TS 服务器了,记得开放端口和防火墙
从 TS 客户端连接你的域名/IP,第一次进入会要求你输入管理员密钥,就是上面的 token 代码,输入之后你就是频道的所有者了。
ctrl+c 退出
配置规则
开放端口和防火墙
端口 | 协议 | 说明 |
---|---|---|
9987 | UDP | TeamSpeak 默认语音服务 |
10011 | TCP | TeamSpeak ServerQuery raw |
10022 | TCP | TeamSpeak ServerQuery SSH |
30033 | TCP | TeamSpeak 文件传输 |
41144 | TCP | TSDND |
设置开机自启
新建 teamspeak.service
sudo vim /etc/systemd/system/teamspeak.service
注意,配置文本中 /home/teamspeak/teamspeak
为服务端文件目录路径。若自定义文件目录请自行改动。
[Unit]
Description=Teamspeak Service
Wants=network.target
[Service]
WorkingDirectory=/home/teamspeak/teamspeak
ExecStart=/home/teamspeak/teamspeak/ts3server_minimal_runscript.sh
ExecStop=/home/teamspeak/teamspeak/ts3server_startscript.sh stop
ExecReload=/home/teamspeak/teamspeak/ts3server_startscript.sh restart
Restart=always
RestartSec=15
[Install]
WantedBy=multi-user.target
系统服务操作
# 更新配置
sudo systemctl daemon-reload
# 设置开机启动
sudo systemctl enable teamspeak.service
# 启动服务
sudo systemctl start teamspeak.service
# 停止服务
sudo systemctl stop teamspeak.service
# 重启服务
sudo systemctl restart teamspeak.service
# 查看状态
# Active: active (running) 即为运行成功,若不成功可以kill掉之前开启的服务端进程
sudo systemctl status teamspeak.service
至此 TS 服务端配置完毕。
配置机器人
安装 ffmpeg
sudo apt install libopus-dev ffmpeg
安装本体
- 这里使用了 ZHANGTIANYAO1 大佬构建的 linux 版 TS3AudioBot(官方版本存在编译问题,无法正常加载插件),需要下载最初 release 版本,版本号为 1.1.0 的 with.TS3Bot.linux-x64.zip。附上 github 项目 TS3AudioBot-NetEaseCloudmusic-plugin
- 插件使用 FiveHair 大佬修改后的版本 TS3AudioBot-NetEaseCloudmusic-plugin-UNM,版本号为 v1.0
建议自行下载,远程传输文件给服务器,不然下载很慢
# 本体with.TS3Bot.linux-x64.zip
wget https://github.com/ZHANGTIANYAO1/TS3AudioBot-NetEaseCloudmusic-plugin/releases/download/1.1.0/with.TS3Bot.linux-x64.zip
# 插件YunPlugin-UNM-v1.0.zip
wget https://github.com/FiveHair/TS3AudioBot-NetEaseCloudmusic-plugin-UNM/releases/download/v1.0/YunPlugin-UNM-v1.0.zip
解压 with.TS3Bot.linux-x64.zip 和 YunPlugin-UNM-v1.0.zip
unzip with.TS3Bot.linux-x64.zip
# 将解压后的linux-64目录改名
mv linux-x64 TS3AudioBot
# 解压后会得到两个文件YunPlugin-UNM.dll和YunSettings.ini
unzip YunPlugin-UNM-v1.0.zip
删除原来的插件,并拷贝最新版的 YunPlugin-UNM.dll 和 YunSettings.ini 进 plugins 目录
rm TS3AudioBot/plugins/*
mv YunPlugin-UNM.dll TS3AudioBot/plugins/ && mv YunSettings.ini TS3AudioBot/plugins/
进入 TS3AudioBot 启动服务
cd TS3AudioBot
./TS3AudioBot
这里可能会提示权限不够,这个文件默认是不可执行的,所以要给它权限
chmod a+x TS3AudioBot
./TS3AudioBot
No usable version of libssl was found
Aborted (core dumped)
接下来会有几步配置需要输入
1. Do you want to set up an admin in the default permission file template? [Y/n]
# 设置管理员id,在teamspeak -> 工具 -> 身份 -> UID
2. Please enter the ip, domain or nickname (with port; default: 9987) where to connect to:
# 设置服务器ip或别名
3. Please enter the server password (or leave empty for none):
# 设置服务器密码,没有直接回车
最后 ctrl+c 结束
设置开机自启
新建 ts3audiobot.service
sudo vim /etc/systemd/system/ts3audiobot.service
输入以下配置。同样的,/home/teamspeak/TS3AudioBot
取决于你安装 TS3AudioBot 的位置
[Unit]
Description=TS3AudioBot
After=teamspeak.service
[Service]
WorkingDirectory=/home/teamspeak/TS3AudioBot
ExecStart=/home/teamspeak/TS3AudioBot/TS3AudioBot
Restart=always
RestartSec=15
[Install]
WantedBy=multi-user.target
系统服务操作
# 更新配置
sudo systemctl daemon-reload
# 设置开机启动
sudo systemctl enable ts3audiobot.service
# 启动服务
sudo systemctl start ts3audiobot.service
# 停止服务
sudo systemctl stop ts3audiobot.service
# 重启服务
sudo systemctl restart ts3audiobot.service
# 查看状态
# Active: active (running) 即为启动成功
sudo systemctl status ts3audiobot.service
网页管理
想要实现页面管理,需访问原作者 Splamy/TS3AudioBot: Advanced Musicbot for Teamspeak 3 (github.com) 项目
下载原版 TS3AudioBot,将其中的 WebInterface 文件夹放入 TS3AudioBot 目录中即可
之前运行 bot 服务时看到的 ERROR 报错也和这个有关,但不影响最终效果
开放 58913 端口
端口 | 协议 | 说明 |
---|---|---|
58913 | TCP | ts3audiobot web |
在 teamspeak 服务器内双击私聊机器人,发送
!api token
访问 ip: 58913,输入 token 即可登录网页管理
主要功能有:上传本地音乐,开启多个机器人
本章结语
到此为止,音乐机器人以及可以正常使用,plugins 目录下 ini 配置文件是别人的网易云 API,不安全。想要登录听 vip 歌曲还要在本地部署网易云 API
部署网易云 API
开放 3000 端口
端口 | 协议 | 说明 |
---|---|---|
3000 | TCP | 网易云 API 后台网页 |
安装 git
安装 git
sudo apt-get install git
安装完成后进行 git 配置
# 设置用户名
git config --global user.name "你的名字"
# 设置邮箱
git config --global user.email "你的邮箱"
# 查看配置信息
git config --list
配置完成后,需要创建验证用的公钥,因为 git
是通过 ssh
的方式访问资源库的,所以需要在本地创建验证用的文件
ssh-keygen -t rsa -C "你的邮箱"
一路回车直到出现随机字符图为止
+---[RSA 3072]----+
|xxxxx |
|xxxxx |
|xxxxxxx |
|xxxxxxxx |
|xxxxxxxxx |
|xxxxxxxx |
|xxxxxxxxx |
|xxxxx |
|xxxx |
+----[SHA256]-----+
查看生成的密钥
cat ~/.ssh/id_rsa.pub
将 ssh-rsa 开头,邮箱结尾的整个字符串复制下来。进入 github,依次点击 Settings -> SSH Keys -> Add SSH Key
,新增一个密钥
回到终端,检测是否可以连接到 github
ssh -T git@github.com
成功信息
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
安装 node.js
安装 Node.js
sudo apt install nodejs
安装 npm
sudo apt install npm
利用 n 来管理版本
sudo npm install -g n
# 如果卡在这里,请更换国内镜像源,再重新安装
npm config set registry https://registry.npmmirror.com
需要 nodejs14 以上版本
# 升级长期支持版本
sudo n lts
# 有些系统版本老旧,缺失一些文件,可以直接指定安装版本
sudo n xx.x.x
切换最新版本
# 方向键上下选择即可
sudo n
# 查看nodejs版本,若是没有显示切换后版本,新建一个终端
node -v
搭建 API
获取项目文件 NeteaseCloudMusicApi
git clone git@github.com:Binaryify/NeteaseCloudMusicApi.git
用户家目录会多出一个 NeteaseCloudMusicApi 目录,进入
cd NeteaseCloudMusicApi
执行安装(有可能版本不够高,按照提示更新即可)
npm install
启动服务
node app.js
此时会显示
server running @ http://localhost:3000
访问 ip: 3000 能访问到网易云 API 页面即为配置成功
ctrl+c 退出
设置开机自启
新建 netease.service
sudo vim /etc/systemd/system/netease.service
复制下列内容到 netease.service 文件中
注意,这里是你的 home 用户目录下 git 到的网易云 API 地址,根据自身情况修改
[Unit]
Description=Netease Cloud Music API Service
After=network.target
[Service]
WorkingDirectory=/home/teamspeak/NeteaseCloudMusicApi/
ExecStart=node /home/teamspeak/NeteaseCloudMusicApi/app.js
Restart=always
RestartSec=15
[Install]
WantedBy=multi-user.target
系统服务操作
# 更新配置
sudo systemctl daemon-reload
# 设置开机启动
sudo systemctl enable netease.service
# 启动服务
sudo systemctl start netease.service
# 停止服务
sudo systemctl stop netease.service
# 重启服务
sudo systemctl restart netease.service
# 查看状态
# Active: active (running) &&
# server running @ http://localhost:3000 即为启动成功
sudo systemctl status netease.service
ctrl+c 退出
最终阶段
修改插件配置
编辑本地网易云 API 地址
vim TS3AudioBot/plugins/YunSettings.ini
修改 WangYiYunAPI_Address 地址为网易云 API 的链接
[YunBot]
playMode=3
WangYiYunAPI_Address=http://localhost:3000
cookies1=
UNM_Address=
重启服务器,确保三个服务都运行成功,机器人应该就已经在你的 TS 频道了
启动机器人
接下来都是 ts 客户端操作,不需要在服务器
双击机器人,输入
!plugin list
可以看到当前插件状态(RDY 就绪)
"TS3AudioBot": All available plugins:
#0|RDY|YunPlgun (BotPlugin)
需要手动把插件启用
!plugin load 0
查看当前插件状态(+ON 运行)
!plugin list
# bot消息
"TS3AudioBot": All available plugins:
#0|+ON|YunPlgun (BotPlugin)
运行成功
现在进行登录操作
首先给机器人最高权限,以便于加载二维码头像
!yun login
点击机器人,右侧显示出二维码头像,扫码登录即可
成功会提示
"Aster": !yun login
"TS3AudioBot": 登陆成功
常用指令
建议放入频道简介
正在播放的歌单的图片和名称可以点机器人看它的头像和描述
vip音乐想要先登陆才能播放完整版本:(输入指令后扫描机器人头像二维码登陆)
!yun login
双击机器人,目前有以下指令(把[xxx]替换成对应信息,包括中括号)
1.立即播放网易云音乐
!yun play [音乐名称]
2.添加音乐到下一首
!yun add [音乐名称]
3.播放网易云音乐歌单(如果提示Error: Nothing to play...重新输入指令解决)
!yun gedan [歌单名称]
4.播放网易云音乐歌单id
!yun gedanid [歌单名称]
5.立即播放网易云音乐id
!yun playid [歌单id]
6.添加指定音乐id到下一首
!yun add [音乐id]
7.播放列表中的下一首
!yun next
8.修改播放模式
!yun mode [模式选择数字0-3]
0 = 顺序播放 1 = 顺序循环 2 = 随机播放 3 = 随机循环
需要注意的是如果歌单歌曲过多需要时间加载,期间一定一定不要输入其他指令
解锁版权(未实现)
环境要求
node.js 18+
npm 10.2.4+
搭建 API
获取项目文件 Unblock Netease Music
git clone https://github.com/UnblockNeteaseMusic/server.git UnblockNeteaseMusic
用户家目录会多出一个 UnblockNeteaseMusic 目录,进入
cd UnblockNeteaseMusic
安装服务
npm install
启动服务
# 默认端口为8080,我在这里改为3001
node app.js -p 3001
显示以下信息即为成功
HTTP Server running @ http://0.0.0.0:3001
设置开机自启
新建 UnblockNeteaseMusic.service
sudo vim /etc/systemd/system/UnblockNeteaseMusic.service
复制下列内容到 UnblockNeteaseMusic.service 文件中
[Unit]
Description=netease proxy service
After=network-online.target
[Service]
WorkingDirectory=/home/teamspeak/UnblockNeteaseMusic
ExecStart=node /home/teamspeak/UnblockNeteaseMusic/app.js -p 3001 -e https://music.163.com -s
Restart=always
RestartSec=15
[Install]
WantedBy=multi-user.target
系统服务操作
# 更新配置
sudo systemctl daemon-reload
# 设置开机启动
sudo systemctl enable UnblockNeteaseMusic.service
# 启动服务
sudo systemctl start UnblockNeteaseMusic.service
# 停止服务
sudo systemctl stop UnblockNeteaseMusic.service
# 重启服务
sudo systemctl restart unm.service
# 查看状态
# Active: active (running) &&
# HTTP Server running @ http://0.0.0.0:3001 即为启动成功
sudo systemctl status UnblockNeteaseMusic.service
修改插件配置
编辑配置文件
vim TS3AudioBot/plugins/YunSettings.ini
修改 UNM_Address 地址为解锁网易云 API 的链接
[YunBot]
playMode=3
WangYiYunAPI_Address=http://localhost:3000
cookies1=
UNM_Address=http://0.0.0.0:3001
修改 NeteaseCloudMusicApi 运行环境
vim NeteaseCloudMusicApi/app.js
添加环境变量
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0
重新启动 netease.service
# 重启服务
sudo systemctl restart netease.service
# 查看状态
sudo systemctl status netease.service
# 显示如下
(node:852) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment>
(Use `node --trace-warnings ...` to show where the warning was created)
server running @ http://localhost:3000
重新启动服务器
常见问题
插件加载错误
"TS3AudioBot": Error: Plugin error: UnknownError
说明你使用了原版 TS3AudioBot,加载不了插件
无法启动 bot
No usable version of libssl was found
Aborted (core dumped)
libssl 版本不可用,去 Index of /ubuntu/pool/main/o/openssl1.0 安装一个 1.0 版本的 libssl
拒绝连接
"TS3AudioBot": An unexpected error occurred: Connection refused Connection refused
说明你的 YunSettings.ini 中的 WangYiYunAPI_Address 路径没配置好
缺失权限
"TS3AudioBot": Error: You cannot execute 'plugin load'. You are missing the 'cmd.plugin.load' right!
管理员UID没有配置,或配置错误,查看rights.toml
"TS3AudioBot": Error: You cannot execute 'yun play'. You are missing the 'cmd.yun.play' right!
普通用户的权限没有配置,编写 rights.toml,见附件
命令报错
"TS3AudioBot": Error: Requested command is ambiguous between: info, quit
没有加载插件,bot私聊!plugin load 0
登录报错
"TS3AudioBot": An unexpected error occurred: The remote server returned an error: (502) Bad Gateway.
扫描二维码后登陆失败,没有本地部署网易云 API
无法连接服务
查看你的端口是否开放,防火墙是否关闭
报错含 ssl
查看 YunSettings.ini 中的 Address 地址是否为 http 而不是 https
报错含 406
一般为网易云api问题,尝试重启
报错含 404,405
查看 YunSettings.ini 中的 Address 地址结尾是否多加了一个/
或者为登录失败导致,需清除 cookies,重新进行登录操作
附件
权限文件
配置bot权限,在bot根目录下,找到rights.toml文件
复制以下代码进行替换,并在管理员权限 -> useruid
处填充你的管理员UID
rights.toml
# 权限声明文件
# 有关语法和结构的更多信息,请参阅:
# https://github.com/Splamy/TS3AudioBot/wiki/Rights
"+" = [
# 基本命令
"cmd.help.*",
"cmd.pm",
"cmd.subscribe",
"cmd.unsubscribe",
"cmd.kickme.*",
"cmd.version",
# 获取歌曲信息
"cmd.song",
"cmd.repeat",
"cmd.random",
# 条件和基本脚本
"cmd.if",
"cmd.print",
"cmd.rng",
"cmd.eval",
"cmd.take",
"cmd.xecute",
"cmd.getmy.*",
"cmd.json.*",
"cmd.bot.use",
"cmd.rights.can",
]
# 管理员权限
[[rule]]
# 在此设置管理员组 ID,例如:[ 13, 42 ]
groupid = []
# 或在此设置管理员 UID
useruid = [ "" ]
# 默认情况下,将来自本地主机的请求视为管理员
ip = [ "127.0.0.1", "::1" ]
"+" = "*"
# 用户权限
[[rule]]
# 在此设置要允许的组 ID,例如:[ 13, 42 ]
# 以及/或在此设置客户端 UID,例如 [ "uA0U7t4PBxdJ5TLnarsOHQh4/tY=", "8CnUQzwT/d9nHNeUaed0RPsDxxk=" ]
# 或者删除 groupid 和 useruid 以允许所有人
"+" = [
# 播放控制
"cmd.play",
"cmd.pause",
"cmd.stop",
"cmd.seek",
"cmd.volume",
# 播放列表管理
"cmd.list.*",
"cmd.add",
"cmd.clear",
"cmd.previous",
"cmd.next",
"cmd.random.*",
"cmd.repeat.*",
# 历史记录功能
"cmd.history.add",
"cmd.history.from",
"cmd.history.id",
"cmd.history.last",
"cmd.history.play",
"cmd.history.till",
"cmd.history.title",
# 网易云插件全部命令
"cmd.plugin.list",
"cmd.plugin.load",
"cmd.plugin.unload",
"cmd.yun.login",
"cmd.yun.play",
"cmd.yun.playid",
"cmd.yun.gedan",
"cmd.yun.mode",
"cmd.yun.gedanid",
"cmd.yun.next",
"cmd.yun.add"
]
# 列出插件列表
"cmd.plugin.list"
# 加载插件
"cmd.plugin.load"
# 卸载插件
"cmd.plugin.unload"
# 登录网易云账户
"cmd.yun.login"