Files
karuo-ai/01_卡资(金)/金仓_存储备份/服务器管理/SKILL.md

457 lines
23 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: 服务器管理
description: 宝塔服务器统一管理与自动化部署
triggers: 服务器、宝塔、部署、SSL、HTTPS、Nginx、宝塔Node、内网穿透、域名、kr-ai、ngrok
owner: 金仓
group: 金
version: "1.0"
updated: "2026-02-16"
---
# 服务器管理
让 AI 写完代码后,无需人工介入,自动把项目「变成一个在线网站」。
---
## 快速入口(复制即用)
### 服务器资产
| 服务器 | IP | 配置 | 用途 | 宝塔面板 |
|--------|-----|------|------|----------|
| **本机 Docker 宝塔** | 127.0.0.1 | Docker 容器 | 本地建站、与腾讯云一致 | http://127.0.0.1:8888/btpanel |
| **存客宝** | 42.194.245.239 | 2核16G 50M | 私域银行业务 | https://42.194.245.239:9988 |
| **kr宝塔** | 43.139.27.93 | 2核4G 5M | Node 项目主力、辅助 | https://43.139.27.93:9988 |
### 凭证速查
**⚠️ 强制规则**SSH 用 **root**、密码 **Zhiqun1984**Z 大写),端口 22022 或 22。ckb 仅为面板账号。
```bash
# 本机 Docker 宝塔(本地)
地址: http://127.0.0.1:8888/btpanel
账号: ckb
密码: zhiqun1984
# SSHroot + Zhiqun1984 或密钥)
sshpass -p 'Zhiqun1984' ssh -p 22022 -o PubkeyAuthentication=no root@<IP>
# 或密钥: ssh -p 22022 -i "服务器管理/Steam/id_ed25519" root@43.139.27.93
# 多方式封装: bash scripts/kr宝塔_SSH登录.sh "命令"
# 存客宝: 42.194.245.239 | kr宝塔: 43.139.27.93
# 宝塔面板登录(三台统一)
账号: ckb
密码: zhiqun1984
# 宝塔API密钥
存客宝: TNKjqDv5N1QLOU20gcmGVgr82Z4mXzRi
kr宝塔: qcWubCdlfFjS2b2DMT1lzPFaDfmv1cBT
```
### 强制规则(每次执行必守)
1. **宝塔优先确认**:操作腾讯云服务器时,**先确认是否为宝塔服务器**。若是,**统一用宝塔 API + 宝塔 Node 管理,禁止使用 PM2**。所有 Node 项目启停、重启、状态查询一律通过宝塔面板 API`/project/nodejs/start_project``stop_project``get_project_list`)。
2. **SSH 统一配置**:账号 **root**、密码 **Zhiqun1984**Z 大写),端口 22022 或 22或使用 id_ed25519 密钥。详见 `references/SSH登录方式与故障排查.md`。SSH 不通时用 TAT腾讯云自动化助手
3. **宝塔 443 优先**:宝塔服务器 443 不监听时,**优先**检查是否运行系统 Nginx 而非宝塔 Nginx若是`killall nginx` 后启动宝塔 Nginx。
4. **经验沉淀**:每次涉及服务器/宝塔/部署的操作结束后,必须把经验写入 `02_卡人/水溪_整理归档/经验库/待沉淀/`,防止同类问题重复出现。
5. **Skill 迭代**:每次有新的配置、教训、流程变更时,必须同步更新本 SKILL.md 或 references保证下次调用时信息一致。
6. **卡若AI 复盘**每次任务结束必须用卡若AI 复盘格式收尾(目标·结果·达成率、过程、反思、总结、下一步)。
---
## 一键操作
### 0. 卡若AI 网关 / 内网穿透(固定域名 kr-ai.quwanzhi.com
- **标准方案**(阿里云 DNS + 宝塔 Nginx + 网关部署):读 `references/内网穿透与域名配置_卡若AI标准方案.md`
- **kr宝塔**(网关所在):一键部署 `bash 01_卡资/金仓_存储备份/服务器管理/scripts/部署卡若AI网关到kr宝塔.sh`
- **存客宝**(站点用宝塔 API部署到存客宝的站点/域名**一律用宝塔 API** 处理。卡若AI 站点:`python3 scripts/存客宝_宝塔API_卡若AI网关站点.py`(需将执行机 IP 加入存客宝面板 API 白名单)。
- **调用命令**`curl -s -X POST "https://kr-ai.quwanzhi.com/v1/chat" -H "Content-Type: application/json" -d '{"prompt":"你的问题"}' | jq -r '.reply'`
- 以后需配置内网穿透/新域名时,不询问用户,直接按该方案生成子域名并配置;存客宝上改站点/Nginx 用 API`references/宝塔api接口文档.md`
### 1. 检查服务器状态
```bash
# 运行快速检查脚本(需各服务器 API 白名单含本机 IP
python3 "/Users/karuo/Documents/个人/卡若AI/01_卡资/金仓_存储备份/服务器管理/脚本/快速检查服务器.py"
```
### 1.0a 腾讯云 API 重启宝塔 + IP 封禁处理
```bash
# 重启存客宝、kr宝塔会解除 fail2ban 内存封禁)
python3 "01_卡资/金仓_存储备份/服务器管理/scripts/腾讯云_宝塔服务器重启.py"
```
IP 解封:见 `references/SSH登录方式与故障排查.md` § 六。优化单行:`IP="公网IP"; for j in sshd ssh-iptables; do fail2ban-client set "$j" unbanip "$IP" 2>/dev/null; done`
### 1.1 磁盘臃肿 · 全方位检查与清理SSH/API 不可用时)
当 SSH 或宝塔 API 无法远程连接时,在**宝塔面板 → 终端**执行:
- **脚本**`运营中枢/工作台/宝塔_全方位检查与磁盘清理_一键脚本.sh`
- **操作指南**`运营中枢/工作台/宝塔_服务器检查与清理_操作指南.md`
脚本会:检查负载/内存/磁盘、分析大目录与日志占用、执行 8 步清理journalctl、apt、/tmp、网站日志、宝塔日志等、输出清理前后 df 对比。完成后到面板【文件】→【回收站】清空。
### 2. 部署 Node 项目(标准流程)
```bash
# 1. 压缩项目(排除无用目录)
cd /项目路径
tar --exclude='node_modules' --exclude='.next' --exclude='.git' \
-czf /tmp/项目名_update.tar.gz .
# 2. 上传到服务器kr宝塔端口 22022密码 zhiqun1984
sshpass -p 'zhiqun1984' scp -P 22022 /tmp/项目名_update.tar.gz root@43.139.27.93:/tmp/
# 3. SSH部署
sshpass -p 'zhiqun1984' ssh -p 22022 root@43.139.27.93
cd /www/wwwroot/项目名
rm -rf app components lib public styles *.json *.js *.ts *.mjs *.md .next
tar -xzf /tmp/项目名_update.tar.gz
pnpm install
pnpm run build
rm /tmp/项目名_update.tar.gz
# 4. 宝塔 Node 重启(只用宝塔 API不用 PM2
# 批量启动:在服务器内执行 scripts/kr宝塔_node项目批量修复.py
# 详见 references/宝塔Node项目管理_SKILL.md
```
### 3. SSL证书检查/修复
```bash
# 检查所有服务器SSL证书状态
python3 "/Users/karuo/Documents/个人/卡若AI/01_卡资/金仓_存储备份/服务器管理/脚本/ssl证书检查.py"
# 自动修复过期证书
python3 "/Users/karuo/Documents/个人/卡若AI/01_卡资/金仓_存储备份/服务器管理/脚本/ssl证书检查.py" --fix
```
### 4. Node 项目批量启动kr宝塔只用宝塔 API不用 PM2
脚本 `scripts/kr宝塔_node项目批量修复.py` 须在**服务器内**执行:
```bash
# SSH 管道(账号 ckb密码 zhiqun1984
sshpass -p 'zhiqun1984' ssh -p 22022 -o StrictHostKeyChecking=no ckb@43.139.27.93 'python3 -' < "01_卡资/金仓_存储备份/服务器管理/scripts/kr宝塔_node项目批量修复.py"
```
SSH 风控时,在 **kr宝塔 宝塔面板 → 终端** 上传脚本后执行。详见 `references/宝塔Node项目管理_SKILL.md`
**kr宝塔 中文目录改英文迁移**(删映射、重命名为英文、更新 site.db/Nginx、只用宝塔 Nginx、启动 Node
```bash
# 宝塔终端执行(推荐):上传 scripts/kr宝塔_中文目录改英文_宝塔终端执行.sh 后 bash 执行
# 或 TAT./scripts/.venv_tx/bin/python scripts/腾讯云_TAT_kr宝塔_中文目录改英文迁移.py
```
迁移后路径:`/www/wwwroot/self/``/www/wwwroot/client/``/www/wwwroot/ext/`(不再使用 自营/客户/扩展)。
### 4a. www.lytiao.com Docker 化(存客宝 · 可多服务器复用)
**⚠️ 8080 被 frps 占用,已改用 8090。** Docker 拉取受国内网络影响TAT 可能失败,**推荐宝塔终端手动执行**。
```bash
# 方式 1宝塔终端推荐
# 打开 https://42.194.245.239:9988 → 终端 → 复制 存客宝_lytiao_Docker部署_宝塔终端执行_完整版.sh 整段内容粘贴
# 方式 2腾讯云 TAT网络良好时
./scripts/.venv_tx/bin/python scripts/腾讯云_TAT_存客宝_lytiao_快速部署.py
# 方式 3SSH 部署SSH 可用时)
bash scripts/存客宝_lytiao_Docker部署.sh
```
部署后访问 `http://42.194.245.239:8090`。详见 `references/lytiao_Docker部署说明.md`
### 5. kr宝塔 运行堵塞 + Node 深度修复
- **负载诊断**`./scripts/.venv_tx/bin/python scripts/腾讯云_TAT_kr宝塔_负载诊断.py`(只读,输出负载/CPU/Node 进程)
- **负载分析文档**`references/kr宝塔_负载100_原因分析与处理.md`
- **运行堵塞修复**:结束异常 node、停 Node、修复 site.db、批量启动。
- **TAT**`./scripts/.venv_tx/bin/python scripts/腾讯云_TAT_kr宝塔_运行堵塞与Node深度修复.py`
- **宝塔终端**(推荐):上传 `scripts/kr宝塔_运行堵塞与Node深度修复_宝塔终端执行.sh``bash` 执行。
### 5b. kr宝塔 网络卡/服务器卡 · 检查与处理
- **文档**`references/kr宝塔_网络与服务器卡顿_检查与处理.md`
- **带宽使用情况近24h**:运行 `scripts/kr宝塔_腾讯云带宽与CPU近24h.py`(建议用 `scripts/.venv_tx/bin/python`,依赖 tencentcloud-sdk-python-monitor。结论出带宽最大已顶满 5M属带宽卡主因处理见文档「六、直接处理」。
- **SSH**`ssh -p 22022 -i "服务器管理项目/Steam/id_ed25519" root@43.139.27.93`(私钥须 `chmod 600`
- 本机快速检查:`ping 43.139.27.93``nc -zv 43.139.27.93 22022`
- 服务器内诊断与限流:在 **宝塔面板终端** 执行文档「六」中 6.16.3 命令(连接数、按 IP 统计、Nginx 限速)。
- **502 修复(如 soul.quwanzhi.com/admin**API 方式运行 `scripts/kr宝塔_宝塔API_修复502.py`(需 API 白名单);或到 kr宝塔 **宝塔面板 → 终端** 执行 `nginx -t && nginx -s reload`在「Node 项目」中重启 soul 相关项目。详见文档 6.6。
### 6. 常用诊断命令kr宝塔等
```bash
# 检查端口占用
ssh -p 22022 root@43.139.27.93 "ss -tlnp | grep :3006"
# ⚠️ 禁止使用 PM2统一用宝塔 API 管理 Node 项目
# 查看 Node 项目状态:用宝塔 API get_project_list 或 TAT 脚本
# 测试HTTP响应
ssh -p 22022 root@43.139.27.93 "curl -I http://localhost:3006"
# 检查Nginx配置
ssh -p 22022 root@43.139.27.93 "nginx -t"
# 重载Nginx
ssh -p 22022 root@43.139.27.93 "nginx -s reload"
# DNS解析检查
dig soul.quwanzhi.com +short @8.8.8.8
```
---
## 端口配置表kr宝塔 43.139.27.93
| 端口 | 项目名 | 类型 | 域名 | 状态 |
|------|--------|------|------|------|
| 3000 | cunkebao | Next.js | mckb.quwanzhi.com | ✅ |
| 3001 | ai_hair | NestJS | ai-hair.quwanzhi.com | ✅ |
| 3002 | kr_wb | Next.js | kr_wb.quwanzhi.com | ✅ |
| 3003 | hx | Vue | krjzk.quwanzhi.com | ⚠️ |
| 3004 | dlmdashboard | Next.js | dlm.quwanzhi.com | ✅ |
| 3005 | document | Next.js | docc.quwanzhi.com | ✅ |
| 3006 | soul | Next.js | soul.quwanzhi.com | ✅ |
| 3015 | 神射手 | Next.js | kr-users.quwanzhi.com | ⚠️ |
| 3018 | zhaoping | Next.js | zp.quwanzhi.com | ✅ |
| 3021 | is_phone | Next.js | is-phone.quwanzhi.com | ✅ |
| 3031 | word | Next.js | word.quwanzhi.com | ✅ |
| 3036 | ymao | Next.js | ymao.quwanzhi.com | ✅ |
| 3043 | tongzhi | Next.js | touzhi.lkdie.com | ✅ |
| 3045 | 玩值大屏 | Next.js | wz-screen.quwanzhi.com | ✅ |
| 3050 | zhiji | Next.js | zhiji.quwanzhi.com | ✅ |
| 3051 | zhiji1 | Next.js | zhiji1.quwanzhi.com | ✅ |
| 3055 | wzdj | Next.js | wzdj.quwanzhi.com | ✅ |
| 3305 | AITOUFA | Next.js | ai-tf.quwanzhi.com | ✅ |
| 9528 | mbti | Vue | mbtiadmin.quwanzhi.com | ✅ |
### 端口分配原则
- **3000-3099**: Next.js / React 项目
- **3100-3199**: Vue 项目
- **3200-3299**: NestJS / Express 后端
- **3300-3399**: AI相关项目
- **9000-9999**: 管理面板 / 特殊用途
---
## 核心工作流程
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ Node项目一键部署流程 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ START │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 1. 压缩本地代码 │ 排除 node_modules, .next, .git │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 2. 上传到服务器 │ scp 到 /tmp/ │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 3. 清理旧文件 │ 保留 .env 等配置文件 │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 4. 解压新代码 │ tar -xzf │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 5. 安装依赖 │ pnpm install │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 6. 构建项目 │ pnpm run build │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 7. 宝塔面板重启 │ Node项目 → 重启 │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 8. 验证访问 │ curl https://域名 │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ SUCCESS │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
```
---
## 操作优先级矩阵
| 操作类型 | 优先方式 | 备选方式 | 说明 |
|---------|---------|---------|------|
| 查询信息 | ✅ 宝塔API | SSH | API稳定 |
| 文件操作 | ✅ 宝塔API | SSH | API支持 |
| 配置Nginx | ✅ 宝塔API | SSH | API可读写 |
| 重载服务 | ⚠️ SSH | - | API无接口 |
| 上传代码 | ⚠️ SSH/scp | - | 大文件 |
| 添加项目 | ❌ 宝塔界面 | - | API不稳定 |
---
## 常见问题速查
### Q0: 宝塔 443 不监听Connection refused【优先检查】
**现象**80 可达、443 不可达,安全组/证书/nginx -t 均正常。
**根因**:运行的是**系统 Nginx**`/usr/sbin/nginx`),非**宝塔 Nginx**。系统 Nginx 配置不含宝塔 vhost 的 listen 443。
**解决**(任选):
```bash
# 宝塔终端
killall nginx; sleep 2; /www/server/nginx/sbin/nginx -c /www/server/nginx/conf/nginx.conf
```
或 TAT`python3 scripts/腾讯云_TAT_存客宝_Nginx443强制修复.py`
**防重复**:宝塔服务器 443 不监听时,**先** `ps aux | grep nginx` 确认是否系统 Nginx再查安全组/证书。详见 `_经验库/已整理/运维经验/宝塔443不监听_系统nginx与宝塔nginx优先排查.md`
### Q1: 外网无法访问ERR_EMPTY_RESPONSE
**原因**: 腾讯云安全组只开放443端口
**解决**:
1. 必须配置SSL证书
2. Nginx配置添加443监听
### Q2: Node项目启动失败Could not find production build
**原因**: 使用 `npm run start` 但未执行 `npm run build`
**解决**: 先 `pnpm run build` 再重启
### Q3: 端口冲突EADDRINUSE
**解决**:
```bash
# 检查端口占用
ss -tlnp | grep :端口号
# 修改package.json中的端口
"start": "next start -p 新端口"
```
### Q4: DNS被代理劫持
**现象**: 本地DNS解析到198.18.x.x
**解决**:
- 关闭代理软件
- 或用手机4G网络测试
### Q5: 禁止 PM2强制
**规则****所有腾讯云宝塔服务器Node 项目统一用宝塔 Node API 管理(启停/重启/状态),严禁使用 PM2**。操作前先确认是否为宝塔服务器。
**解决**:
- 如发现 PM2 残留: `pm2 kill`(清理后不再使用)
- 在宝塔面板【网站】→【Node 项目】管理启动/停止
- 批量操作见 `references/宝塔Node项目管理_SKILL.md`
---
## 安全约束
### 绝对禁止
- ❌ 输出完整密码/密钥到聊天
- ❌ 执行危险命令rm -rf /, reboot等
- ❌ 跳过验证步骤
- ❌ 使用独立PM2避免与宝塔冲突
### 必须遵守
- ✅ 操作前检查服务器状态
- ✅ 操作后验证结果
- ✅ 生成操作报告
---
## 相关脚本
| 脚本 | 功能 | 位置 |
|------|------|------|
| `腾讯云_TAT_kr宝塔_中文目录改英文迁移.py` | kr宝塔 中文目录改英文、删映射、更新 site.db/NginxTAT | `./scripts/.venv_tx` |
| `kr宝塔_中文目录改英文_宝塔终端执行.sh` | 同上,宝塔终端手动执行 | `./scripts/` |
| `腾讯云_TAT_word_ai_hair_is_phone_诊断修复.py` | word/ai_hair/is_phone 日志诊断、MODULE_NOT_FOUND 修复、重启(宝塔 API | `./scripts/` |
| `kr宝塔_node项目批量修复.py` | 批量启动 kr宝塔 Node 项目(服务器内执行,宝塔 API | `./scripts/` |
| `kr宝塔_宝塔API_修复502.py` | 修复 502重启 Nginx + soul 相关 Node | `./scripts/` |
| `快速检查服务器.py` | 一键检查所有服务器状态 | `./脚本/` |
| `一键部署.py` | 根据配置文件部署项目 | `./脚本/` |
| `ssl证书检查.py` | 检查/修复SSL证书 | `./脚本/` |
| `腾讯云_TAT_存客宝_Nginx443强制修复.py` | **宝塔 443 不监听**:切回宝塔 Nginx | `./scripts/` |
| `tencent_image_snapshot_backup_to_nas.py` | 腾讯云镜像/快照备份到 CKB NAS | `./scripts/腾讯云镜像快照备份到CKB_NAS/` |
---
## 复盘与输出规范
- **卡若复盘**:每次对话结束必须按 **`运营中枢/参考资料/卡若复盘格式_固定规则.md`** 输出复盘块;**反思** 13 点,每点一句,简洁可执行,不超过 3 条。
## 宝塔 Node 项目管理(独立 Skill
- **主 Skill**`references/宝塔Node项目管理_SKILL.md` — 凭证、Node API、常见错误、脚本**禁用 PM2**
- **强制**:所有 Node 项目统一用 **宝塔 Node 管理**,不用 PM2确保项目在宝塔上运行
- **kr宝塔**`references/kr宝塔_宝塔管理SKILL.md`
- **存客宝**`references/存客宝_宝塔管理SKILL.md`
Node 项目批量启动、502 修复、EADDRINUSE 等均按主 Skill 操作。SSH 风控时优先用**宝塔面板终端**。
---
## 相关文档
| 文档 | 内容 | 位置 |
|------|------|------|
| `宝塔Node项目管理_SKILL.md` | 宝塔 Node 管理独立 Skill凭证/错误/脚本) | `./references/` |
| `kr宝塔_宝塔管理SKILL.md` | kr宝塔专用管理 | `./references/` |
| `存客宝_宝塔管理SKILL.md` | 存客宝专用管理 | `./references/` |
| `卡若复盘格式_固定规则.md` | 复盘格式(目标·结果·达成率、过程、反思 13 点、总结、下一步) | `运营中枢/参考资料/` |
| `宝塔api接口文档.md` | 宝塔API完整接口说明 | `./references/` |
| `端口配置表.md` | 完整端口分配表 | `./references/` |
| `常见问题手册.md` | 问题解决方案大全 | `./references/` |
| `部署配置模板.md` | JSON配置文件模板 | `./references/` |
| `系统架构说明.md` | 完整架构图和流程图 | `./references/` |
---
## 历史对话整理
### kr_wb白板项目部署2026-01-23
- 项目类型: Next.js
- 部署位置: /www/wwwroot/kr_wb
- 域名: kr_wb.quwanzhi.com
- 端口: 3002
- 遇到问题: AI功能401错误API密钥未配置
- 解决方案: 修改 lib/ai-client.ts改用 SiliconFlow 作为默认服务
### soul项目部署2026-01-23
- 项目类型: Next.js
- 部署位置: /www/wwwroot/soul
- 域名: soul.quwanzhi.com
- 端口: 3006
- 部署流程: 压缩→上传→解压→安装依赖→构建→宝塔Node项目添加→配置Nginx→配置SSL禁止 PM2