CentOS/Debian/Armbian系统安装Koishi

H96Max x3

设备:H96Max x3 原电视盒子 晶晨S905x3芯片4+64G
系统:CentOS 7.9.2009 (AltArch) aarch64(Py3.7.8)

Debian系统安装Koishi=> 本地设备Debian/Armbian环境下koishi的配置,以及安装ffmpeg。 - 技术分享 - Koishi Forum

如果你已经安装宝塔(www.bt.cn),请直接下拉到【宝塔安装步骤
小白有条件的话还是建议装一个宝塔,维护和使用上会简单很多。

//

SSH工具安装步骤

在此之前请确认你的centos已经安装了nodejs,未安装的前往=> Centos安装Nodejs简单方式

//

部署koishi:
直接按照官方文档步骤

//

执行到该指令时

yarn create koishi

意外发现有可能只创建一个空文件夹 /koishi-app
原因不明,重复尝试 yarn create koishi 后,创建成功:

默认创建路径为 /root/koishi-app/

//

创建完成后,修改配置文件:

vim /root/koishi-app/koishi.yml

在配置文件中添加以下内容:

host: 0.0.0.0

image
添加 host: 0.0.0.0 是开放外网访问,自己按需设置。
端口根据你个人需要自行更改,一般保持默认即可。
修改完后直接英文状态输入:

:wq

即保存退出。

//

如果开放了外网访问,还需要开放端口。
我的centos7.9防火墙是Firewalliptables自行网上找下教程。

查看防火墙状态命令:

firewall-cmd --state

running为正在运行,not running则防火墙关闭。

//

查看已开放端口:

firewall-cmd --zone=public --list-ports


如果已经开放koishi默认端口,上面命令结果会显示 5140-5149/tcp 的内容,你第一次安装 koishi 是需要手动开放端口的。

//

开放5140-5149端口:

firewall-cmd --zone=public --add-port=5140-5149/tcp --permanent

//

重载服务命令:
添加或移除端口设置后需要重启 firewall 服务才会生效

firewall-cmd --reload

//

最后,使用 firewall-cmd --zone=public --list-ports 查看已开放的端口:

上图中出现 5140-5149/tcp 则证明端口开放成功!

//

【额外补充】
如果需要移除端口:

firewall-cmd --zone=public --remove-port=5140-5149/tcp --permanent

完整的firewall使用教程,Linux/centos如何开放端口,firewall、iptables防火墙管理 - 硅云文档

//

现在你可以使用浏览器通过公网IP,xxx.xxx.xxx.xxx:5140 来访问你的kosihi了。
公网IP自行 百度 ip 查看

//

宝塔安装步骤

首先安装nodejs(不要使用软件商店里的PM2管理器!)
使用【网站>Node项目】这个集成度高,不容易出毛病,PM2管理器不知道为什么会掉版本,我是在重启盒子后遇到的。
image

然后选择 Koishi 官方建议的 LTS 版本,点击更新版本列表,这样就会显示最新版本的nodejs。

等待安装完成,需要几分钟的时间,然后注意,安装完成后一定要切换到命令行版本!!

//

查看有没有安装成功

node -v
npm -v
yarn -v

image

如果出现
image

使用宝塔自带【文件】管理器,打开 nodejs 的安装目录,宝塔是在 /www/server/nodejs/v16.19.1/etc/npmrc
编辑 npmrc 文件:
init.module 修改为 --init-module

v16.19.1 需要换成你实际安装使用的nodejs版本号

//

之后就是喜闻乐见的按照官方文档 创建模板项目 | Koishi
直接使用宝塔自带的【终端】功能即可。

//

创建完成后,修改配置文件:/root/koishi-app/koishi.yml
image
host: 0.0.0.0 开放外网访问,不需要可以不添加。
端口自己按需设置

//

开放端口(没开放外网可以跳过这一步):

Koishi宝塔安装和配置到此完成。

//

nohup后台运行koishi

关于后台运行可以参考更完善的 Centos/Debian/Armbian 添加开机自启和计划任务监听koishi是否成功运行)](Centos/Debian/Armbian 添加开机自启和计划任务监听koishi是否成功运行

如果不需要,请继续下面的步骤:

如果koishi正在终端里运行,ctrl+c 或者 直接关闭终端,退出koishi后
重新在终端内使用指令:

cd koishi-app

进入koishi安装目录,此项为必须!
image

继续输入:

nohup yarn start &

回车后,koishi线程转为后台继续运行
然后输入:

exit

回车退出,这样就可以关闭终端了,koishi已经转为后台运行。

CentOS环境安装ffmpeg

方法1:
由于方法2安装ffmpeg实在太慢,请先尝试直接上传 ffmpeg 文件到
/usr/local/ffmpeg/bin/ (没有的话就新建文件夹)
/usr/bin/ 也要上传同一个ffmpeg 文件,Koishi发音/视频用的是该路径的ffmpeg。

FFmpeg文件,注意区分 arm 和 amd。

百度云盘:百度网盘 请输入提取码
提取码:aaaa

天翼云盘:天翼云盘 珍藏美好生活 家庭云|网盘|文件备份|资源分享 (访问码:go0h)

然后给机器人发送指令:r-wallpaper
(该指令需要 Koishi 安装 random-wallpaper 插件)
看看能不能正常回复消息。

该报错是没安装ffmpeg或者环境变量存在问题
image

该报错是ffmpeg格式出错,可能用错了文件,比如arm用了amd的ffmpeg
image

2023.03.07 01:04
刚刚重装了腾讯云服务器,【方法1】测试通过!完全可以!云服务器或电脑用ffmpeg amd文件,arm芯片设备使用ffmpeg arm文件。

如果该方法行不通,那就老老实实去照着 方法2 安装吧。

//

方法2:
CentOS环境安装ffmpeg_centos ffmpeg_汪小敏同学的博客-CSDN博客

根据该教程安装 ffmpeg(需要漫长的时间),等等安装完成后,你可以在终端中正常使用 ffmpeg,也可以使用 ffmpeg -version 查看 ffmpeg 的版本,但是 gocq 依然会报错:
image
哪怕是修改 /etc/profile 文件或者 /etc/profile.d/ 目录下添加 xxx.sh 文件来添加环境变量,gocq 依然会报 ffmpeg 错误。

解决方法:打开 /usr/local/ffmpeg/bin 目录,复制一份 ffmpeg 文件 放到 /usr/bin 下。
image

然后打开QQ,向机器人发送指令:r-wallpaper
不出意外,已经可以成功发送了。
image

9 个赞

不错的教程,支持一下

2 个赞

甚至包含了 ffmpeg 的安装流程,好细!

3 个赞

3 个帖子被拆分为一个新话题:安卓如何安装 FFmpeg

安装了:ok_hand:t2:可以用其它插件吗?

2 个赞

可以的

1 个赞

我严格按照使用在centos7下面安装了koishi,看到启动起来的标志了,然后我去访问公网ip:5041出现不允许访问,我去修改过那个文件了,我写错了,就是5140访问不了

2 个赞

支持

但是宝塔哒咩!

2 个赞

因为那是5140不是5041

2 个赞

哪位大神帮忙解决一下,重新安装一下,搞好了,感谢这个精华帖子

1 个赞

不喜欢用宝塔就用命令行,不是都提供了

1 个赞

好像有依赖项装不了,也启动不了,不知道是什么原因,也不知道如何排查和解决

~/dev/erechtheus # yarn start
Internal Error: erechtheus@workspace:.: This package doesn’t seem to be present in your lockfile; run “yarn install” to update the lockfile
at Xx.getCandidates (/root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:205:8149)
at Dd.getCandidates (/root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:141:1311)
at /root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:210:8409
at Ky (/root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:140:53916)
at Fe (/root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:210:8389)
at async Promise.allSettled (index 0)
at async Uc (/root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:140:53244)
at async /root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:210:9140
at async Qi.startProgressPromise (/root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:140:137284)
at async Pt.resolveEverything (/root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:210:7138)
~/dev/erechtheus # yarn install
➤ YN0000: · Yarn 4.1.1
➤ YN0000: ┌ Resolution step
➤ YN0085: │ + @koishijs/client@npm:5.29.3, @koishijs/plugin-actions@npm:0.0.2, and 667 more.
➤ YN0000: └ Completed in 22s 184ms
➤ YN0000: ┌ Post-resolution validation
➤ YN0002: │ erechtheus@workspace:. doesn’t provide @koishijs/loader (p59428), requested by @koishijs/plugin-config.
➤ YN0002: │ erechtheus@workspace:. doesn’t provide @koishijs/loader (pc80e4), requested by @koishijs/plugin-hmr.
➤ YN0086: │ Some peer dependencies are incorrectly met; run yarn explain peer-requirements for details, where is the six-letter p-prefixed code.
➤ YN0000: └ Completed
➤ YN0000: ┌ Fetch step
➤ YN0066: │ typescript@patch:typescript@npm%3A5.5.4#optional!builtin<compat/typescript>::version=5.5.4&hash=5adc0c: Cannot apply hunk #1
➤ YN0001: │ Error: Couldn’t allocate enough memory
at ZipFS.getBufferAndClose ([worker eval]:1:298046)
at ZipFS.saveAndClose ([worker eval]:1:299036)
at convertToZipWorker ([worker eval]:1:407956)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async MessagePort. ([worker eval]:1:409728)
➤ YN0000: └ Completed in 35s 700ms
➤ YN0000: · Failed with errors in 58s 308ms
~/dev/erechtheus # yarn explain peer-requirements pc80e4
Internal Error: erechtheus@workspace:.: This package doesn’t seem to be present in your lockfile; run “yarn install” to update the lockfile
at Xx.getCandidates (/root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:205:8149)
at Dd.getCandidates (/root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:141:1311)
at /root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:210:8409
at Ky (/root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:140:53916)
at Fe (/root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:210:8389)
at async Promise.allSettled (index 0)
at async Uc (/root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:140:53244)
at async /root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:210:9140
at async Qi.startProgressPromise (/root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:140:137284)
at async Pt.resolveEverything (/root/dev/erechtheus/.yarn/releases/yarn-4.1.1.cjs:210:7138)

有没有大神救一下,设备是玩客云,armv7,系统版本是Armbian 23.02.0,运行在npm18的docker容器里

1 个赞

内存不足,,,,
你要不在容器内看一下你RAM剩多少?外面也看一遍(htop或者free -h)
你不会开容器还限制memory

2 个赞