贰狐
Linux手动安装OlivOS&OlivaDice3
安装环境Ubuntu 20.04
本文配置方法可能有过时配置项目,请注意甄别,仅供参考
0.安装环境
#临时root
sudo su
#更新apt列表
apt update
#安装python3 并显示版本信息
apt install -y python3 && python3 -V
#安装pip3 并显示版本信息
apt install -y python3-pip && pip -V
#安装git 并显示版本信息
apt install -y git && git --version
1.获取OlivOS源码
cd /home && git clone https://github.com/OlivOS-Team/OlivOS.git
2.安装依赖
cd OlivOS && pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
3.下载Go-cqhttp
#创建lib目录
mkdir -p lib && chmod +x lib && cd lib
#国内机走镜像站下载
wget --no-check-certificate -O "go-cqhttp.tar.gz" https://ghproxy.com/https://github.com/Mrs4s/go-cqhttp/releases/latest/download/go-cqhttp_linux_amd64.tar.gz
#国外机走GitHub源站下载
wget --no-check-certificate -O "go-cqhttp.tar.gz" https://github.com/Mrs4s/go-cqhttp/releases/latest/download/go-cqhttp_linux_amd64.tar.gz
#解压缩Go-cqhttp
tar zxf "go-cqhttp.tar.gz"
4.下载opk
cd /home/OlivOS/plugin/app
wget https://ghproxy.com/https://github.com/OlivOS-Team/OlivaDiceCore/releases/latest/download/OlivaDiceCore.opk -N
wget https://ghproxy.com/https://github.com/OlivOS-Team/OlivaDiceJoy/releases/latest/download/OlivaDiceJoy.opk -N
wget https://ghproxy.com/https://github.com/OlivOS-Team/OlivaDiceLogger/releases/latest/download/OlivaDiceLogger.opk -N
wget https://ghproxy.com/https://github.com/OlivOS-Team/OlivaDiceMaster/releases/latest/download/OlivaDiceMaster.opk -N
5.运行
cd /home/OlivOS && python3 main.py
修改设置
1.OlivOS的account.json
先运行一次OlivOS,然后按Ctrl+D
停止运行程序,即可获得初始配置文件
vi /home/OlivOS/conf/account.json
参照如下注释修改
{
"account": [
{
// QQ号码
"id": 100000,
// 由于我们要去Go扫码登录,所以密码设置为空
"password": "",
"sdk_type": "onebot",
"platform_type": "qq",
// 模式写gocqhttp_show
"model_type": "gocqhttp_show",
// 此处服务器指Go-cqhttp开启的Post服务器
"server": {
"auto": false,
"type": "post",
// 若Go-cqhttp不在本地,请自行替换ip或域名
"host": "http://127.0.0.1",
// Go-cqhttp开启的Post服务器的端口
"port": 58000,
// Go-cqhttp处设置的token
"access_token": "tOKeN114514"
},
"debug": false
}
]
}
保存文件
2.OlivOS的basic.json
vi /home/OlivOS/conf/basic.json
第107行处可以修改OlivOS端的POST端口,之后在go中需要设置相同端口
3.Go-cqhttp配置
运行一次Go-cqhttp
cd /home/OlivOS/lib && ./go-cqhttp
然后会提示选择输出什么配置,选择0 - HTTP
关闭Go-cqhttp,去修改配置文件
vi /home/OlivOS/lib/config.yml
必须修改第60行的 access-token: ''
与OlivOS的account.json中access-token
值相同
如果需要跨域访问(前后端不在同一个服务器,或不同docker中),请修改第95行host
值为0.0.0.0
第97行服务端监听端口 port: 5700
需要与OlivOS的account.json中port
值相同
第100行反向HTTP超时时间timeout
值设置为60
第111行反向HTTP POST URL值 #- url: ''
取消注释,改成如下
url: 'http://127.0.0.1:55001/OlivOSMsgApi/qq/onebot/gocqhttp' # 地址
此处端口55001对应OlivOS的basic.json中第107行处port
值
至此安装及配置步骤完成
启动程序
我们使用Screen程序来管理两个端
首先安装Screen,如果已经安装则跳过
apt install -y screen
安装完毕后,首先启动OlivOS
#新建Screen窗口
screen - S olivos
#启动olivos
cd /home/OlivOS && python3 main.py
检查程序输出是否正常
退出此Screen
Ctrl + a d
也就是先按下 Ctrl + a,然后再按下 d,即可退出。此时这个 screen 窗口仍在后台运行。
然后启动Go-cqhttp
#新建Screen窗口
screen - S go
#启动Go-cqhttp
cd /home/OlivOS/lib && ./go-cqhttp
此时会提示扫码,按步骤登录即可
检查与后端连接是否正常
贰狐Blog - 一个笨蛋的博客
https://www.aobacore.com/archives/OlivOS-OlivaDice-Go-cqhttp.html(转载时请注明本文出处及文章链接)
如果服务器运行不止一个 Python 应用,建议使用 [venv](https://docs.python.org/zh-cn/3/library/venv.html) 创建虚拟环境以防止不同应用之间的依赖污染。
在尝试通过git获取源码的时候出现了如下报错
> fatal: unable to access 'https://github.com/OlivOS-Team/OlivOS.git/': GnuTLS recv error (-110): The TLS connection was non-properly terminated.
之前我在尝试用git安装gitee上的Dice!时并没有遇到类似报错。
我刚刚入门Linux,不太了解造成这个问题的原因,还有劳大佬做出指点。
这是OlivOS和olivadice,不是溯洄洄的Dice!,且配置文件不兼容
TLS问题是你本地系统问题,建议自行搜索解决,以下推荐文章我不保证可用性
https://blog.csdn.net/weixin_43108793/article/details/118306045
感谢大佬的帮助,现在这个问题已经成功解决了。
话说我初次运行go-cqhttp的看到的选项1是云函数,选项0才是http通信。(可能是因为更新了)
根据提示键入即可,这个确实可能改掉了,回头我运行一下试试
我按照步骤把程序部署到了云服务上了,OlivOS正常启动,但是在启动go-cqhttp之后发现日志一直打印警告,qq消息可以接收到但是没有反馈,能麻烦帮忙看看么
[2023-01-28 18:59:17] [WARNING]: 上报 Event 数据到 http://172.31.32.237:55001/OlivOSMsgApi/qq/onebot/gocqhttp 失败: Post "http://172.31.32.237:55001/OlivOSMsgApi/qq/onebot/gocqhttp": dial tcp 172.31.32.237:55001: connect: connection refused 将进行第 1 次重试
[2023-01-28 18:59:18] [WARNING]: 上报 Event 数据到 http://172.31.32.237:55001/OlivOSMsgApi/qq/onebot/gocqhttp 失败: Post "http://172.31.32.237:55001/OlivOSMsgApi/qq/onebot/gocqhttp": dial tcp 172.31.32.237:55001: connect: connection refused 将进行第 2 次重试
[2023-01-28 18:59:20] [WARNING]: 上报 Event 数据到 http://172.31.32.237:55001/OlivOSMsgApi/qq/onebot/gocqhttp 失败: Post "http://172.31.32.237:55001/OlivOSMsgApi/qq/onebot/gocqhttp": dial tcp 172.31.32.237:55001: connect: connection refused 将进行第 3 次重试
[2023-01-28 18:59:21] [WARNING]: 上报 Event 数据 {"post_type":"meta_event","meta_event_type":"heartbeat","time":1674903557,"self_id":2683851566,"interval":5000,"status":{"app_enabled":true,"app_good":true,"app_initialized":true,"good":true,"online":true,"plugins_good":null,"stat":{"packet_received":42,"packet_sent":34,"packet_lost":0,"message_received":0,"message_sent":0,"disconnect_times":0,"lost_times":0,"last_message_time":0}}}
到 http://172.31.32.237:55001/OlivOSMsgApi/qq/onebot/gocqhttp 失败: Post "http://172.31.32.237:55001/OlivOSMsgApi/qq/onebot/gocqhttp": dial tcp 172.31.32.237:55001: connect: connection refused 停止上报:已达重试上限
从错误日志来看,这是因为gocq没有连接到正确的olivos端
你这里的ip是docker容器内的吗?
如果是容器内,可能是docker的容器隔离策略导致的,我也没什么好办法,在有一台服务器上,怎么修改防火墙设置之类的都不能解决。
最后是通过给容器设置网络模式解决的。
首先创建一个自定义网络
docker network create olivosnetwork
通过这个网络启动容器
docker run -di --name OlivOS-main --net olivosnetwork rhwong/olivos-env
在使用时,将容器别名替换ip即可。
比如http://OlivOS-main:55001/OlivOSMsgApi/qq/onebot/gocqhttp