云崽部署-TRSS

KaedeharaLu 发布于 2024-09-28 773 次阅读


观前必看

该文过分基础的内容如vim的使用等不做说明,若有不懂,自行百度解决。

环境介绍

本文是在x86_64平台,Ubuntu Server 24.04下编写,其它系统根据实际情况修改命令等。

准备工作

云崽运行介绍

云崽主要需要三个部分:应用端,客户端以及协议。

应用端

应用端主要处理指令、数据等。
本文采用 TRSS 作为应用端。不过我个人不喜欢使用官网提供的一键脚本。
云崽的应用端都需要使用redis做持久化存储。

客户端

客户端就是模拟用户操作,发送信息、图片等等。
本文采用开源项目 NapCat 搭配NTQQ,我个人使用这个方法账号还没有经历过风控、封号等等。
除了NapCat也有其他方式,如icqq等,个人不推荐使用,易封号。

协议

在本文中,协议为OneBotv11,具体内容不详细介绍(因为我也不知道),应该就是统一了数据传输模式、格式等。

环境准备

安装好任一Linux发行版,本文的一切内容是在 x86_64平台,Ubuntu Server 24.04 下进行。

下载内容

  1. Redis: https://github.com/redis/redis/archive/refs/tags/7.4.0.tar.gz
    如果Github文件下载不下来自行百度Github加速下载,把上面这个链接复制进去下载
  2. Google Chrome: https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
  3. NodJS: https://nodejs.org/dist/v23.3.0/node-v23.3.0-linux-x64.tar.xz

部署云崽

系统安装

这个就不用我教了吧。

远程登录

本人在Windows下,使用ssh连接机器进行部署。
推荐工具:

Xterminal: Xterminal - 更好用的开发工具,但不止于(SSH/控制台/More)

用于替代用CMD使用ssh和scp,并且可以记忆命令、设备。

注意:

  1. 以上工具都非必须,都只是为了简化繁琐的命令敲击过程。
  2. ssh连接可以使用Windows自带的终端使用ssh 账户@地址登录
  3. SCP可以通过下面两个指令完成文件传输:
    从本地复制到远程:scp [本地文件路径] [用户名]@[远程主机地址]:[远程文件路径]
    从远程复制到本地:scp [用户名]@[远程主机地址]:[远程文件路径] [本地文件路径]
  4. FinalShell工具自带文件传输功能,如果用FinalShell则不需要使用WinSCP。

系统设置

镜像源

安装的时候如果没有设置镜像源记得设置一下,方式自行百度。个人喜欢用 中科大 的镜像。

允许root登录 --非必须

使用sudo passwd root设置root账户密码。
先输入当前登录账号密码,然后输入两遍root账户密码,不会显示,但是实际已经输入进去了。

接着,使用下面的命令编辑ssh设置文件。

sudo vim /etc/ssh/sshd_config

然后往下翻,找到#PermitRootLogin prohibit-password,应该在第33行。
删掉前面的"#",将"prohibit-password"修改为"yes",然后保存退出。
当然,直接新建一行,写PermitRootLogin yes也是可以的。

然后使用sudo systemctl restart ssh重启ssh服务,退出ssh连接并重新使用root账号连接Ubuntu主机。

注意: 使用root账号并非必须,只是为了方便,根据个人情况选择。

命令执行示例:

kaedeharalu@yunzai:~$ sudo passwd root
[sudo] password for kaedeharalu:
New password:
Retype new password:
passwd: password updated successfully
kaedeharalu@yunzai:~$ vim /etc/ssh/sshd_config
kaedeharalu@yunzai:~$ sudo vim /etc/ssh/sshd_config
kaedeharalu@yunzai:~$ sudo systemctl restart ssh
kaedeharalu@yunzai:~$ exit
logout
Connection to 192.168.0.109 closed.
PS C:\Users\KaedeharaLu> ssh [email protected]
[email protected]'s password:
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.0-45-generic x86_64)
root@edu-yunzai:~#

更新

使用下面的指令更新记录和软件。

apt update
apt upgrade

环境及依赖

tmux

这是终端复用程序。

Linux发行版不安装图形化界面就只有1个窗口,其实会不太方便,所以就有了tmux。

我使用的这个版本似乎已经预装了tmux,如果没有,则使用sudo apt-get install tmux安装。

不过tmux也有一个问题,不能滚动屏幕,所以输出内容滚动到屏幕之外后就看不到了,所以按需使用。

使用方式:

命令 作用 示例
tmux ls 列出已经打开的会话
tmux new -s name 新建一个名称为"name"的会话 tmux new -s nc
tmux attach -t name 连接到名称为"name"的会话 tmux attach -t nc
tmux detach
使用快捷键Ctrl+B,然后按下D
退出当前会话
tmux kill-session -t name 终止名称为"name"的会话,包括其中正在运行的程序 tmux kill-session -t nc

NodeJS

下载地址:https://nodejs.org/dist/v23.3.0/node-v23.3.0-linux-x64.tar.xz

将前面下载的NodeJS的.tar.gz的文件上传到Linux,并cd到存放的目录。这将会是NodeJS的安装位置,这里上传到了/opt/内,因为解压后还会有一个文件夹。

如果使用的是Xterminal,直接将文件拖入左侧的文件列表就能上传了。

像下面这样解压文件,然后删掉压缩文件,将文件夹重命名为nodejs。

root@yunzai:~# cd /opt/
root@yunzai:/opt# tar -xf node-v23.3.0-linux-x64.tar.xz

注意:重命名、删除这些操作在Xterminal下很简单,像Windows删除一样简单动动鼠标就可以完成,不需要敲命令。

然后cd进入nodejs/bin/执行下面的命令并配置全局变量才可以正常使用NodeJS。

  • 建立软链接
root@yunzai:~# ln -s /opt/nodejs/bin/node /usr/local/bin/node
root@yunzai:~# ln -s /opt/nodejs/bin/npm /usr/local/bin/npm
root@yunzai:~# ln -s /opt/nodejs/bin/npx /usr/local/bin/npx
  • 修改全局变量
root@yunzai:~# vim /etc/profile

然后在文件最后换行添加下面内容保存并退出。

export NODE_HOME=/opt/nodejs/bin/
export PATH=$PATH:$NODE_HOME:/usr/local/bin/

然后执行source /etc/profile 刷新配置。

最后,执行 node -vnpm -v 验证安装。

另外,要更新NodeJS也很简单,将原来的nodejs文件夹改个名字,把新版本上传上去解压改名为nodejs就可以了,有问题也容易恢复。

Redis

下载地址:https://github.com/redis/redis/archive/refs/tags/7.4.0.tar.gz

将下载下来的.tar.gz文件上传到Linux。(我上传到了 /root/ 文件夹内)

输入 gcc -v ,如果显示命令未找到说明没有安装编译环境。通过下面的命令安装编译环境。

sudo apt-get install build-essential

然后解压文件。

tar -zxvf redis-7.4.0.tar.gz

然后cd进入目录后,使用输入命令 make && make install 编译并安装redis。

中间时间可能会有点久,会一直有日志输出,耐心等待。

结束后,输入 cd && redis-server 启动redis,查看是否安装成功。如果出现了下面的样子说明安装成功了,按住Ctrl+C关闭,然后进行下一步操作。

root@yunzai:~# cd && redis-server
26626:C 09 Dec 2024 15:00:03.450 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
26626:C 09 Dec 2024 15:00:03.450 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
26626:C 09 Dec 2024 15:00:03.450 * Redis version=7.4.0, bits=64, commit=00000000, modified=1, pid=26626, just started
26626:C 09 Dec 2024 15:00:03.450 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
26626:M 09 Dec 2024 15:00:03.451 * Increased maximum number of open files to 10032 (it was originally set to 1024).
26626:M 09 Dec 2024 15:00:03.451 * monotonic clock: POSIX clock_gettime
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis Community Edition      
  .-`` .-```.  ```\/    _.,_ ''-._     7.4.0 (00000000/1) 64 bit
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 26626
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           https://redis.io       
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

26626:M 09 Dec 2024 15:00:03.455 * Server initialized
26626:M 09 Dec 2024 15:00:03.455 * Loading RDB produced by version 7.4.0
26626:M 09 Dec 2024 15:00:03.455 * RDB age 6 seconds
26626:M 09 Dec 2024 15:00:03.455 * RDB memory usage when created 0.90 Mb
26626:M 09 Dec 2024 15:00:03.455 * Done loading RDB, keys loaded: 0, keys expired: 0.
26626:M 09 Dec 2024 15:00:03.455 * DB loaded from disk: 0.000 seconds
26626:M 09 Dec 2024 15:00:03.455 * Ready to accept connections tcp

Google Chrome

可选内容,要安装自行上传到Linux安装即可。

NapCat&NTQQ

GitHub仓库:NapNeko/NapCatQQ: 现代化的基于 NTQQ 的 Bot 协议端实现

文档:NapCatQQ | 现代化的基于 NTQQ 的 Bot 协议端实现

只是基础使用就不用看这些了,跟我走即可。

下载安装

如果系统是Ubuntu 20+/Debian 10+/Centos9 则可以使用一键脚本,否则自行前往官方仓库列表寻找合适的方式(列表:Shell | NapCatQQ

注:过程会自动安装NTQQ,不需要自己安装。

Ubuntu 20+/Debian 10+/Centos9 一键脚本:

curl -o napcat.sh https://nclatest.znin.net/NapNeko/NapCat-Installer/main/script/install.sh && sudo bash napcat.sh

安装时注意,会有两次选择的地方,为了后续方便,请均输入 y 并回车(两次的默认选项不同,最好自己确认为y)

  • 是否使用shell安装, 10s超时使用shell安装(y/n) 这是输入命令后完成脚本下载后马上就会询问的,请输入y并回车。
  • 是否安装cli, 10s超时跳过安装(y/n) 这是在安装的最后一步会用金黄色的字询问的,请输入y并回车。因为NapCatQQ-cli真的很方便。

NapCatQQ-cli使用

输入napcat help 查看帮助。

  • napcat start {QQ} 启动对应QQ号的NAPCAT
  • napcat stop {QQ}[可选] 停止所有[对应QQ号]的NAPCAT及DLC
  • napcat restart {QQ} 重启对应QQ号的NAPCAT
  • napcat status {QQ}[可选] 查看所有[对应QQ号]的NAPCAT
  • napcat log {QQ} 查看对应QQ号的NAPCAT日志
  • napcat startup {QQ} 添加开机自启动对应QQ号的NAPCAT及DLC
  • napcat startdown {QQ} 取消开机自启动对应QQ号的NAPCAT及DLC
  • napcat update 更新 NAPCAT及QQ
  • napcat rebuild 重建 NAPCAT及QQ
  • napcat remove 卸载 NAPCAT及QQ
  • napcat help 查看此帮助
  • napcat oldhelp 查看旧方法(若此脚本不生效)

注意:

  • napcat start {QQ} 为后台启动,第一次启动或启动失败使用 napcat log {QQ} 指令切换到前台。
  • 命令帮助中的 {QQ} 代表这是QQ号,实际使用时,不需要花括号。例如我需要挂云崽的QQ号为123456,那么启动命令就是 napcat start 123456

TRSS

这一个大标题下,TRSS=云崽。

几个仓库

云崽资源集合:Yunzai-Bot-plugins-index: Yunzai-Bot相关内容收集库

TRSS框架:

下载

云崽的所以内容都采用git的方式,所以如果系统没有git自行安装。(Ubuntu Server自带)

云崽依赖于Redis,所以先将Redis通过tmux启动。

tmux new -s redis

这时,会进入一个新的界面,最底下有一个绿条,显示的是[redis] 0:bash* 。中括号内就是新建的窗口的名字。在这个界面使用命令redis-server 启动Redis并在前台运行。Redis可以通过配置文件默认在后台运行,但是我觉得通过tmux运行也挺方便的。

然后键盘按下Ctrl+B松开,再按下D退出当前窗口,回到系统的窗口。

云崽的基本部署非常简单。(此处我进入了tmux进入操作,如果暂时不需要不执行就行)

tmux new -s trss
git clone --depth 1 https://gitee.com/TimeRainStarSky/Yunzai
mv Yunzai TRSS
cd TRSS
npm config set registry https://registry.npmmirror.com
npm i -g pnpm
pnpm i
node app

解释一下每一行:

  1. 进入tmux窗口
  2. 克隆云崽项目
  3. 重命名文件夹名称为TRSS
  4. 进入云崽文件夹
  5. 设置npm(以及后面安装的pnpm)下载镜像为淘宝镜像源
  6. 安装pnpm
  7. 安装云崽所需依赖 => 这一步可能会比较久,一定要耐心等待,等待重新出现输入提示(类似root@yunzai:/TRSS#)。
  8. 启动TRSS!!!

启动过后啥都不用管,第一次启动只需要云崽日志的这一行:[23:41:18.580][INFO][WebSocket ] 连接地址:ws://localhost:2536/[ComWeChat,GSUIDCore,OPQBot,OneBotv11,go-cqhttp]

如果进入了tmux,退出tmux窗口。

运行云崽

TRSS

务必先启动Redis再在TRSS目录内执行node app

NapCat

第一次请在系统窗口启动,不要在tmux内启动

注意:

  1. 下文的123456请替换为自己需要作为云崽的QQ号。
  2. 建议使用小号,因为作为云崽后该账号不能在电脑登录,否则会顶号。
napcat start 123456
napcat log 123456 

然后别急,先把后台管理地址复制下来,就是我用红笔框起来的位置,复制到浏览器打开。

注意一个点,如果显示的是127.0.0.1 或者 localhost 这种回环ip,修改为设备对应的ip再访问。

接着扫描显示的二维码确认登录。

然后回到浏览器,完成一点点设置才能让NapCat和TRSS连接。

NapCat设置

打开配置后台网址后,依次点击 网络配置=>添加配置(如图)。

然后添加类似这样的新配置(红框内为需要调整或填写的)。

解释一下每个条目:

  • 名称:顾名思义,就是这个配置文件的名称,随意。
  • 类型:选择WebSocket客户端,选择后会变成图中的websocketClients,一样的,没关系。
  • 启用:顾名思义。一定要启用哦。
  • URL:前面云崽日志输出过的连接地址,但是只保留OneBotv11的部分,即: ws://localhost:2536/OneBotv11
  • 消息格式:保持默认为Array即可。
  • 报告自身消息:默认不会讲云崽自己发送的消息推送到应用端,勾选启用后就会将云崽自己发送的消息推送。
  • 其他的都不用管。

然后确认保存。现在查看云崽日志会发现提示“建立连接”。如图。

现在给云崽发个信息之类的,就会看到有对应的日志输出了。


至此,云崽的安装就结束了,关于进一步的使用请看后续文章。