| 组件 | 版本要求 | 说明 |
|---|---|---|
| Node.js | >= 18.x | 推荐 20.x LTS |
| pnpm | >= 8.x | 包管理器(可选,也可用 npm) |
| PM2 | 最新版 | 进程守护 |
| 宝塔面板 | 最新版 | 服务器管理面板 |
在宝塔终端中执行:
npm install -g pm2
npm install -g pnpm
将整个 qiwe/backend/ 目录上传到服务器,推荐路径:
/www/wwwroot/qiwe/backend/
可以用宝塔「文件」界面直接拖拽上传,或使用 git:
cd /www/wwwroot
git clone <your-repo-url> qiwe
cd qiwe/backend
确保以下关键文件都在服务器上:
backend/
├── .env # 环境变量配置(需要根据服务器调整)
├── package.json
├── pnpm-lock.yaml
├── tsconfig.json
└── src/
├── index.ts
└── apps/
└── pc/
├── app.ts
├── health/server.ts
└── qiwe/
├── models/
│ ├── parse-client.ts
│ └── schema-setup.ts
├── routes/webhook.routes.ts
├── controllers/
│ ├── webhook.controller.ts
│ └── sync.controller.ts
└── services/
├── webhook.service.ts
├── sync.service.ts
└── qiwe-api.service.ts
cd /www/wwwroot/qiwe/backend
pnpm install
# 如果使用 npm: npm install
编辑 .env 文件,确认以下配置正确:
NODE_ENV=production
PC_PORT=3101
# Parse Server(保持不变)
PARSE_APP_ID=lami-ai
PARSE_MASTER_KEY=5s1gfOasPqx9JKsA
PARSE_SERVER_URL=https://server.sh-lami.com/parse
# QiWe 平台配置(保持不变)
QIWE_API_BASE=https://manager.qiweapi.com/qiwe
QIWE_TOKEN=146708f9-1c49-4cf0-aad9-0b7a36834b0b
QIWE_GUID=810456E2-B009-4915-917F-085EC800AA16
QIWE_USER_ID=1688857385538777
注意:
NODE_ENV改为production。
cd /www/wwwroot/qiwe/backend
pm2 start src/index.ts --name qiwe-backend --interpreter npx -- tsx
等价于执行 npx tsx src/index.ts,服务监听在 3101 端口。
pm2 list # 查看所有进程
pm2 logs qiwe-backend # 查看日志
pm2 stop qiwe-backend # 停止
pm2 restart qiwe-backend # 重启
pm2 delete qiwe-backend # 删除
pm2 monit # 实时监控
pm2 startup
pm2 save
47.96.148.66(或你解析的域名)点击站点右侧「设置」→「反向代理」→「添加反向代理」:
| 字段 | 值 |
|---|---|
| 代理名称 | qiwe-backend |
| 目标URL | http://127.0.0.1:3101 |
| 发送域名 | $host |
或者直接编辑站点配置文件,在 server 块中添加:
location /api/qiwe/ {
proxy_pass http://127.0.0.1:3101;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 10s;
proxy_connect_timeout 5s;
}
确保服务器安全组开放以下端口:
| 端口 | 协议 | 用途 |
|---|---|---|
| 80 | TCP | HTTP(回调接收) |
| 443 | TCP | HTTPS(如使用) |
宝塔面板默认已开放 80 端口,如果有云服务器安全组,需要在云控制台也放行。
登录企微管理平台,在相应的应用/群配置中,将回调 URL 设置为:
http://47.96.148.66/api/qiwe/webhook
在服务器终端查看日志:
pm2 logs qiwe-backend
当日志中出现 [文本消息]、[群创建]、[成员加入] 等输出时,说明回调已正常接收。
也可以用 curl 从外部测试:
curl -X POST http://47.96.148.66/api/qiwe/webhook -H "Content-Type: application/json" -d '{"code":0,"data":[{"guid":"test","cmd":15000,"msgType":0,"fromRoomId":0,"senderId":123,"msgUniqueIdentifier":"deploy-test","timestamp":1716883200,"msgData":{"content":"deploy test"}}],"msg":"success"}'
cd /www/wwwroot/qiwe/backend
git pull # 拉取最新代码
pnpm install # 安装可能的新依赖
pm2 restart qiwe-backend # 重启服务
pm2 status # 进程状态
curl http://127.0.0.1:3101/api/health # 健康检查
Parse Dashboard 可在线查看数据库:
npx parse-dashboard --appId lami-ai --masterKey 5s1gfOasPqx9JKsA --serverURL https://server.sh-lami.com/parse --appName lami-dev --port 4041
然后访问 http://47.96.148.66:4041(需要开放 4041 端口或通过 SSH 隧道访问)。
lsof -i :3101 # 查看占用端口的进程
kill -9 <PID> # 结束进程
pm2 logs qiwe-backend --lines 50 --err # 查看错误日志
常见原因:
.env 配置缺失PARSE_SERVER_URL 是否可达)pnpm install)检查:
pm2 statuscurl http://127.0.0.1:3101/api/health检查:
/www/wwwlogs/ 目录下对应站点的 .log 文件/www/wwwroot/qiwe/backend/pnpm install 执行成功.env 中 NODE_ENV=productionpm2 status)curl http://127.0.0.1:3101/api/health 返回 {"status":"ok"}curl http://47.96.148.66/api/qiwe/webhook 返回正常http://47.96.148.66/api/qiwe/webhookpm2 save)