前言
这里记录一下绍如何在Linux服务器(Ubuntu/Debian)上部署AstrBot机器人框架,同时配置Napcat QQ机器人作为消息通道,并添加必要的辅助功能(如Swap内存优化、GitHub操作、邮件发送、网页截图等)。
一、基础环境配置
1.1 更新系统包
1 | sudo apt update |
1.2 安装Python环境
1 | # 安装Python3基础包 |
二、部署AstrBot
对于想快速开始的(推荐)
1 | uv tool install astrbot |
否则也可以手动安装项目(不推荐)
2.1 克隆项目并创建虚拟环境
1 | # 克隆AstrBot仓库 |
2.2 安装依赖并启动
使用uv(推荐):
1 | uv sync |
不使用uv:
1 | # 创建Python虚拟环境 |
注意:首次启动会生成配置文件,按提示完成基础配置后即可正常运行。
覆盖安装:
1 | cd AstrBot |
命令解释:
git fetch --depth=1 origin <tag>:获取最新标签的代码,但不合并git reset --hard FETCH_HEAD:强制将当前目录的文件覆盖成刚获取的版本- 这种方式会保留目录下多余的文件(如配置文件、数据文件等),只更新被版本控制跟踪的文件
三、优化服务器内存(Swap配置)
对于内存较小的服务器,建议配置Swap分区避免因内存不足导致服务崩溃。
3.1 创建Swap文件
1 | # 创建2GB的swap文件(根据磁盘空间调整大小) |
3.2 优化Swap使用策略
1 | sudo vi /etc/sysctl.conf |
添加以下配置:
1 | vm.swappiness=60 |
说明:swappiness值(0-100)控制系统使用Swap的积极程度,60是一个相对平衡的配置。
四、部署Napcat QQ机器人
4.1 安装Napcat
Napcat提供了无Root权限的安装方式,以下是在安装完成后的启动和管理方法:
如果是Oracle Linux
1 | # 安装 Fedora 官方 EPEL 源 |
1 | # 安装NapCat脚本 |
假设你的服务器有充足的资源,并且想要服务随系统自动启动、崩溃后能自动复活,那么可以使用pm2(基础占用 40M ~ 60M)。
4.2 Napcat相关信息
- 插件位置:
/root/Napcat/opt/QQ/resources/app/app_launcher/napcat - WebUI Token:查看
/root/Napcat/opt/QQ/resources/app/app_launcher/napcat/config/webui.json文件获取 - CLI工具:直接运行
napcat命令启动交互式界面
4.3 安装代理支持(如需使用Socks代理)
1 | pip install httpx[socks] |
五、集成GitHub操作
5.1 配置GitHub Personal Access Token
为了让机器人能够操作GitHub,需要生成Personal Access Token(PAT):
- 访问 GitHub Settings → Developer settings → Personal access tokens → Tokens (classic)
- 生成新的token,选择需要的权限(如repo、workflow等)
- 将token配置到AstrBot的配置文件中
安全提示:请妥善保管您的Token,不要分享给他人或在公开场合泄露。示例中的Token已脱敏处理。
六、配置邮件发送功能
6.1 安装邮件客户端
1 | sudo apt install s-nail -y |
6.2 配置邮箱
创建或编辑配置文件 /etc/s-nail.rc:
1 | # 启用v15兼容模式 |
也可以创建用户级配置文件 ~/.mailrc,内容相同。
6.3 发送测试邮件
1 | echo "这是一封测试邮件" | \ |
注意:邮箱授权码需要在QQ邮箱设置中获取,不是QQ密码。示例中的授权码已脱敏。
6.4 解决格式问题
如果在编辑配置文件时遇到 ^M 字符(Windows格式换行符),请使用Vim转换:
1 | vim /etc/s-nail.rc |
在Vim中执行:
1 | :set fileformat=unix |
七、配置网页截图功能(Puppeteer)
为了让机器人能够访问网页并截图,需要安装Puppeteer。
7.1 安装Puppeteer
1 | # 全局安装puppeteer |
7.2 测试Puppeteer
创建测试文件 puppeteer-test.js:
1 | // 引入 puppeteer 库 |
7.3 解决沙箱问题
如果在运行Puppeteer时遇到沙箱相关的错误,添加 --no-sandbox 参数:
1 | const browser = await puppeteer.launch({ |
参考官方文档:https://pptr.dev/troubleshooting
八、使用PM2管理AstrBot进程
8.1 创建日志目录
1 | mkdir -p logs |
8.2 配置PM2启动文件
创建 ecosystem.config.js:
1 | module.exports = { |
8.3 启动并保存PM2配置
1 | # 启动AstrBot |
说些什么吧!