Create linux_deploy_guide_for_beginners.md
This commit is contained in:
444
docs/linux_deploy_guide_for_beginners.md
Normal file
444
docs/linux_deploy_guide_for_beginners.md
Normal file
@@ -0,0 +1,444 @@
|
||||
# 面向纯新手的Linux服务器麦麦部署指南
|
||||
|
||||
## 你得先有一个服务器
|
||||
|
||||
为了能使麦麦在你的电脑关机之后还能运行,你需要一台不间断开机的主机,也就是我们常说的服务器。
|
||||
|
||||
华为云、阿里云、腾讯云等等都是在国内可以选择的选择。
|
||||
|
||||
你可以去租一台最低配置的就足敷需要了,按月租大概十几块钱就能租到了。
|
||||
|
||||
我们假设你已经租好了一台Linux架构的云服务器。我用的是阿里云ubuntu24.04,其他的原理相似。
|
||||
|
||||
## 0.我们就从零开始吧
|
||||
|
||||
### 网络问题
|
||||
|
||||
为访问github相关界面,推荐去下一款加速器,新手可以试试watttoolkit。
|
||||
|
||||
### 安装包下载
|
||||
|
||||
#### MongoDB
|
||||
|
||||
对于ubuntu24.04 x86来说是这个:
|
||||
|
||||
https://repo.mongodb.org/apt/ubuntu/dists/noble/mongodb-org/8.0/multiverse/binary-amd64/mongodb-org-server_8.0.5_amd64.deb
|
||||
|
||||
如果不是就在这里自行选择对应版本
|
||||
|
||||
https://www.mongodb.com/try/download/community-kubernetes-operator
|
||||
|
||||
#### Napcat
|
||||
|
||||
在这里选择对应版本。
|
||||
|
||||
https://github.com/NapNeko/NapCatQQ/releases/tag/v4.6.7
|
||||
|
||||
对于ubuntu24.04 x86来说是这个:
|
||||
|
||||
https://dldir1.qq.com/qqfile/qq/QQNT/ee4bd910/linuxqq_3.2.16-32793_amd64.deb
|
||||
|
||||
#### 麦麦
|
||||
|
||||
https://github.com/SengokuCola/MaiMBot/archive/refs/tags/0.5.8-alpha.zip
|
||||
|
||||
下载这个官方压缩包。
|
||||
|
||||
### 路径
|
||||
|
||||
我把麦麦相关文件放在了/moi/mai里面,你可以凭喜好更改,记得适当调整下面涉及到的部分即可。
|
||||
|
||||
文件结构:
|
||||
|
||||
```
|
||||
moi
|
||||
└─ mai
|
||||
├─ linuxqq_3.2.16-32793_amd64.deb
|
||||
├─ mongodb-org-server_8.0.5_amd64.deb
|
||||
└─ bot
|
||||
└─ MaiMBot-0.5.8-alpha.zip
|
||||
```
|
||||
|
||||
### 网络
|
||||
|
||||
你可以在你的服务器控制台网页更改防火墙规则,允许6099,8080,27017这几个端口的出入。
|
||||
|
||||
## 1.正式开始!
|
||||
|
||||
远程连接你的服务器,你会看到一个黑框框闪着白方格,这就是我们要进行设置的场所——终端了。以下的bash命令都是在这里输入。
|
||||
|
||||
## 2. Python的安装
|
||||
|
||||
- 导入 Python 的稳定版 PPA:
|
||||
|
||||
```bash
|
||||
sudo add-apt-repository ppa:deadsnakes/ppa
|
||||
```
|
||||
|
||||
- 导入 PPA 后,更新 APT 缓存:
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
```
|
||||
|
||||
- 在「终端」中执行以下命令来安装 Python 3.12:
|
||||
|
||||
```bash
|
||||
sudo apt install python3.12
|
||||
```
|
||||
|
||||
- 验证安装是否成功:
|
||||
|
||||
```bash
|
||||
python3.12 --version
|
||||
```
|
||||
|
||||
- 在「终端」中,执行以下命令安装 pip:
|
||||
|
||||
```bash
|
||||
sudo apt install python3-pip
|
||||
```
|
||||
|
||||
- 检查Pip是否安装成功:
|
||||
|
||||
```bash
|
||||
pip --version
|
||||
```
|
||||
|
||||
- 安装必要组件
|
||||
|
||||
``` bash
|
||||
sudo apt install python-is-python3
|
||||
```
|
||||
|
||||
## 3.MongoDB的安装
|
||||
|
||||
``` bash
|
||||
cd /moi/mai
|
||||
```
|
||||
|
||||
``` bash
|
||||
dpkg -i mongodb-org-server_8.0.5_amd64.deb
|
||||
```
|
||||
|
||||
``` bash
|
||||
mkdir -p /root/data/mongodb/{data,log}
|
||||
```
|
||||
|
||||
## 4.MongoDB的运行
|
||||
|
||||
```bash
|
||||
service mongod start
|
||||
```
|
||||
|
||||
```bash
|
||||
systemctl status mongod #通过这条指令检查运行状态
|
||||
```
|
||||
|
||||
有需要的话可以把这个服务注册成开机自启
|
||||
|
||||
```bash
|
||||
sudo systemctl enable mongod
|
||||
```
|
||||
|
||||
## 5.napcat的安装
|
||||
|
||||
``` bash
|
||||
curl -o napcat.sh https://nclatest.znin.net/NapNeko/NapCat-Installer/main/script/install.sh && sudo bash napcat.sh
|
||||
```
|
||||
|
||||
上面的不行试试下面的
|
||||
|
||||
``` bash
|
||||
dpkg -i linuxqq_3.2.16-32793_amd64.deb
|
||||
apt-get install -f
|
||||
dpkg -i linuxqq_3.2.16-32793_amd64.deb
|
||||
```
|
||||
|
||||
成功的标志是输入``` napcat ```出来炫酷的彩虹色界面
|
||||
|
||||
## 6.napcat的运行
|
||||
|
||||
此时你就可以根据提示在```napcat```里面登录你的QQ号了。
|
||||
|
||||
```bash
|
||||
napcat start <你的QQ号>
|
||||
napcat status #检查运行状态
|
||||
```
|
||||
|
||||
然后你就可以登录napcat的webui进行设置了:
|
||||
|
||||
```http://<你服务器的公网IP>:6099/webui?token=napcat```
|
||||
|
||||
第一次是这个,后续改了密码之后token就会对应修改。你也可以使用```napcat log <你的QQ号>```来查看webui地址。把里面的```127.0.0.1```改成<你服务器的公网IP>即可。
|
||||
|
||||
登录上之后在网络配置界面添加websocket客户端,名称随便输一个,url改成`ws://127.0.0.1:8080/onebot/v11/ws`保存之后点启用,就大功告成了。
|
||||
|
||||
## 7.麦麦的安装
|
||||
|
||||
### step 1 安装解压软件
|
||||
|
||||
```
|
||||
sudo apt-get install unzip
|
||||
```
|
||||
|
||||
### step 2 解压文件
|
||||
|
||||
```bash
|
||||
cd /moi/mai/bot # 注意:要切换到压缩包的目录中去
|
||||
unzip MaiMBot-0.5.8-alpha.zip
|
||||
```
|
||||
|
||||
### step 3 进入虚拟环境安装库
|
||||
|
||||
```bash
|
||||
cd /moi/mai/bot
|
||||
python -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### step 4 试运行
|
||||
|
||||
```bash
|
||||
cd /moi/mai/bot
|
||||
python -m venv venv
|
||||
source venv/bin/activate
|
||||
python bot.py
|
||||
```
|
||||
|
||||
肯定运行不成功,不过你会发现结束之后多了一些文件
|
||||
|
||||
```
|
||||
bot
|
||||
├─ .env.prod
|
||||
└─ config
|
||||
└─ bot_config.toml
|
||||
```
|
||||
|
||||
你要会vim直接在终端里修改也行,不过也可以把它们下到本地改好再传上去:
|
||||
|
||||
### step 5 文件配置
|
||||
|
||||
本项目需要配置两个主要文件:
|
||||
|
||||
1. `.env.prod` - 配置API服务和系统环境
|
||||
2. `bot_config.toml` - 配置机器人行为和模型
|
||||
|
||||
#### API
|
||||
|
||||
你可以注册一个硅基流动的账号,通过邀请码注册有14块钱的免费额度:https://cloud.siliconflow.cn/i/7Yld7cfg。
|
||||
|
||||
#### 在.env.prod中定义API凭证:
|
||||
|
||||
```
|
||||
# API凭证配置
|
||||
SILICONFLOW_KEY=your_key # 硅基流动API密钥
|
||||
SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1/ # 硅基流动API地址
|
||||
|
||||
DEEP_SEEK_KEY=your_key # DeepSeek API密钥
|
||||
DEEP_SEEK_BASE_URL=https://api.deepseek.com/v1 # DeepSeek API地址
|
||||
|
||||
CHAT_ANY_WHERE_KEY=your_key # ChatAnyWhere API密钥
|
||||
CHAT_ANY_WHERE_BASE_URL=https://api.chatanywhere.tech/v1 # ChatAnyWhere API地址
|
||||
```
|
||||
|
||||
#### 在bot_config.toml中引用API凭证:
|
||||
|
||||
```
|
||||
[model.llm_reasoning]
|
||||
name = "Pro/deepseek-ai/DeepSeek-R1"
|
||||
base_url = "SILICONFLOW_BASE_URL" # 引用.env.prod中定义的地址
|
||||
key = "SILICONFLOW_KEY" # 引用.env.prod中定义的密钥
|
||||
```
|
||||
|
||||
如需切换到其他API服务,只需修改引用:
|
||||
|
||||
```
|
||||
[model.llm_reasoning]
|
||||
name = "Pro/deepseek-ai/DeepSeek-R1"
|
||||
base_url = "DEEP_SEEK_BASE_URL" # 切换为DeepSeek服务
|
||||
key = "DEEP_SEEK_KEY" # 使用DeepSeek密钥
|
||||
```
|
||||
|
||||
#### 配置文件详解
|
||||
|
||||
##### 环境配置文件 (.env.prod)
|
||||
|
||||
```
|
||||
# API配置
|
||||
SILICONFLOW_KEY=your_key
|
||||
SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1/
|
||||
DEEP_SEEK_KEY=your_key
|
||||
DEEP_SEEK_BASE_URL=https://api.deepseek.com/v1
|
||||
CHAT_ANY_WHERE_KEY=your_key
|
||||
CHAT_ANY_WHERE_BASE_URL=https://api.chatanywhere.tech/v1
|
||||
|
||||
# 服务配置
|
||||
HOST=127.0.0.1 # 如果使用Docker部署,需要改成0.0.0.0,否则QQ消息无法传入
|
||||
PORT=8080
|
||||
|
||||
# 数据库配置
|
||||
MONGODB_HOST=127.0.0.1 # 如果使用Docker部署,需要改成数据库容器的名字,默认是mongodb
|
||||
MONGODB_PORT=27017
|
||||
DATABASE_NAME=MegBot
|
||||
MONGODB_USERNAME = "" # 数据库用户名
|
||||
MONGODB_PASSWORD = "" # 数据库密码
|
||||
MONGODB_AUTH_SOURCE = "" # 认证数据库
|
||||
|
||||
# 插件配置
|
||||
PLUGINS=["src2.plugins.chat"]
|
||||
```
|
||||
|
||||
##### 机器人配置文件 (bot_config.toml)
|
||||
|
||||
```
|
||||
[bot]
|
||||
qq = "机器人QQ号" # 必填
|
||||
nickname = "麦麦" # 机器人昵称(你希望机器人怎么称呼它自己)
|
||||
|
||||
[personality]
|
||||
prompt_personality = [
|
||||
"曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧",
|
||||
"是一个女大学生,你有黑色头发,你会刷小红书"
|
||||
]
|
||||
prompt_schedule = "一个曾经学习地质,现在学习心理学和脑科学的女大学生,喜欢刷qq,贴吧,知乎和小红书"
|
||||
|
||||
[message]
|
||||
min_text_length = 2 # 最小回复长度
|
||||
max_context_size = 15 # 上下文记忆条数
|
||||
emoji_chance = 0.2 # 表情使用概率
|
||||
ban_words = [] # 禁用词列表
|
||||
|
||||
[emoji]
|
||||
auto_save = true # 自动保存表情
|
||||
enable_check = false # 启用表情审核
|
||||
check_prompt = "符合公序良俗"
|
||||
|
||||
[groups]
|
||||
talk_allowed = [] # 允许对话的群号
|
||||
talk_frequency_down = [] # 降低回复频率的群号
|
||||
ban_user_id = [] # 禁止回复的用户QQ号
|
||||
|
||||
[others]
|
||||
enable_advance_output = true # 启用详细日志
|
||||
enable_kuuki_read = true # 启用场景理解
|
||||
|
||||
# 模型配置
|
||||
[model.llm_reasoning] # 推理模型
|
||||
name = "Pro/deepseek-ai/DeepSeek-R1"
|
||||
base_url = "SILICONFLOW_BASE_URL"
|
||||
key = "SILICONFLOW_KEY"
|
||||
|
||||
[model.llm_reasoning_minor] # 轻量推理模型
|
||||
name = "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B"
|
||||
base_url = "SILICONFLOW_BASE_URL"
|
||||
key = "SILICONFLOW_KEY"
|
||||
|
||||
[model.llm_normal] # 对话模型
|
||||
name = "Pro/deepseek-ai/DeepSeek-V3"
|
||||
base_url = "SILICONFLOW_BASE_URL"
|
||||
key = "SILICONFLOW_KEY"
|
||||
|
||||
[model.llm_normal_minor] # 备用对话模型
|
||||
name = "deepseek-ai/DeepSeek-V2.5"
|
||||
base_url = "SILICONFLOW_BASE_URL"
|
||||
key = "SILICONFLOW_KEY"
|
||||
|
||||
[model.vlm] # 图像识别模型
|
||||
name = "deepseek-ai/deepseek-vl2"
|
||||
base_url = "SILICONFLOW_BASE_URL"
|
||||
key = "SILICONFLOW_KEY"
|
||||
|
||||
[model.embedding] # 文本向量模型
|
||||
name = "BAAI/bge-m3"
|
||||
base_url = "SILICONFLOW_BASE_URL"
|
||||
key = "SILICONFLOW_KEY"
|
||||
|
||||
|
||||
[topic.llm_topic]
|
||||
name = "Pro/deepseek-ai/DeepSeek-V3"
|
||||
base_url = "SILICONFLOW_BASE_URL"
|
||||
key = "SILICONFLOW_KEY"
|
||||
```
|
||||
|
||||
**step # 6** 运行
|
||||
|
||||
现在再运行
|
||||
|
||||
```bash
|
||||
cd /moi/mai/bot
|
||||
python -m venv venv
|
||||
source venv/bin/activate
|
||||
python bot.py
|
||||
```
|
||||
|
||||
应该就能运行成功了。
|
||||
|
||||
## 8.事后配置
|
||||
|
||||
可是现在还有个问题:只要你一关闭终端,bot.py就会停止运行。那该怎么办呢?我们可以把bot.py注册成服务。
|
||||
|
||||
重启服务器,打开MongoDB和napcat服务。
|
||||
|
||||
新建一个文件,名为`bot.service`,内容如下
|
||||
|
||||
```
|
||||
[Unit]
|
||||
Description=maimai bot
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/moi/mai/bot
|
||||
ExecStart=/moi/mai/bot/venv/bin/python /moi/mai/bot/bot.py
|
||||
Restart=on-failure
|
||||
User=root
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
里面的路径视自己的情况更改。
|
||||
|
||||
把它放到`/etc/systemd/system`里面。
|
||||
|
||||
重新加载 `systemd` 配置:
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
```
|
||||
|
||||
启动服务:
|
||||
|
||||
```bash
|
||||
sudo systemctl start bot.service # 启动服务
|
||||
sudo systemctl restart bot.service # 或者重启服务
|
||||
```
|
||||
|
||||
检查服务状态:
|
||||
|
||||
```bash
|
||||
sudo systemctl status bot.service
|
||||
```
|
||||
|
||||
现在再关闭终端,检查麦麦能不能正常回复QQ信息。如果可以的话就大功告成了!
|
||||
|
||||
## 9.命令速查
|
||||
|
||||
```bash
|
||||
service mongod start # 启动mongod服务
|
||||
napcat start <你的QQ号> # 登录napcat
|
||||
cd /moi/mai/bot # 切换路径
|
||||
python -m venv venv # 创建虚拟环境
|
||||
source venv/bin/activate # 激活虚拟环境
|
||||
|
||||
sudo systemctl daemon-reload # 重新加载systemd配置
|
||||
sudo systemctl start bot.service # 启动bot服务
|
||||
sudo systemctl enable bot.service # 启动bot服务
|
||||
|
||||
sudo systemctl status bot.service # 检查bot服务状态
|
||||
```
|
||||
|
||||
```
|
||||
python bot.py
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user