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

48 KiB
Raw Blame History

name, description, triggers, owner, group, version, updated
name description triggers owner group version updated
服务器管理 宝塔服务器统一管理与自动化部署;含本机 Docker 部署 Sub2API/龙虾U盘API 私有 AI API 中转站 服务器、宝塔、部署、SSL、HTTPS、Nginx、宝塔Node、内网穿透、域名、kr-ai、ngrok、frp、frps、阿里云解析、Sub2API、龙虾U盘API、API中转站、Docker部署、quwanzhi、老坑爹、彩虹发卡 金仓 2.0 2026-07-24

服务器管理

让 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 项目主力、历史FRP业务 https://43.139.27.93:9988
房市通东京节点 43.165.178.230 2核1G、40G SSD、200Mbps、不限月流量 房市通网站、WireGuard、Clash、跨网络多设备FRP统一中继 https://43.165.178.230:9988/6260042b

FRP + 阿里云 DNS:将原解析/流量从存客宝迁到 kr 时顺序、安全组、frpc server_addr、解析打勾验收见 references/FRP与阿里云DNS统一至kr宝塔_迁移与验收.md(勿盲改 MX/CDN

2026-07-24新规则公司NAS、家里NAS、Mac、Windows、Linux和其他局域网设备的新接入统一走东京FRP入口为东京FRP多设备统一接入/SKILL.mdKR规则仅保留历史业务兼容。

凭证速查

⚠️ 强制规则SSH 用 root、密码 Zhiqun1984Z 大写),端口 22022 或 22。ckb 仅为面板账号。

服务器问题先读references/服务器快速定位与登录SOP.md。遇到域名、订单、502、SSL、后台异常先确认真实 IP/实例,再按「宝塔 API → SSH → 腾讯云 TAT → 宝塔终端」登录处理。

# 本机 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
# 房市通东京节点: 43.165.178.230SSH 22022管理端口仅放行固定出口 IP

# 宝塔面板登录(三台统一)
账号: ckb
密码: zhiqun1984

# 宝塔API密钥
存客宝: TNKjqDv5N1QLOU20gcmGVgr82Z4mXzRi
kr宝塔: qcWubCdlfFjS2b2DMT1lzPFaDfmv1cBT

强制规则(每次执行必守)

  1. 服务器购买前先调研(最高优先级)任何新增服务器先全网比较官方首购价、续费价、优惠券、带宽、月流量、地域、IPv4、退款和两年总成本全部换算成人民币再用云厂商官方 API 询价复核结算金额。确认最高性价比方案后才进入购买、部署、加固和归档。完整流程:references/服务器市场调研_优惠购买_宝塔部署_安全运维全流程.md

  2. 宝塔优先确认:操作腾讯云服务器时,先确认是否为宝塔服务器。若是,彻底去除 PM2一律使用宝塔原生 Node 管理器。所有 Node 项目启停、重启、状态查询仅通过宝塔面板(网站 → Node 项目)及 API。脚本kr宝塔_彻底去除PM2_仅用宝塔Node_宝塔终端执行.sh

  3. SSH 统一配置:账号 root、密码 Zhiqun1984Z 大写),端口 22022 或 22或使用 id_ed25519 密钥。详见 references/SSH登录方式与故障排查.md。SSH 不通时用 TAT腾讯云自动化助手

  4. 宝塔 443 优先:宝塔服务器 443 不监听时,优先检查是否运行系统 Nginx 而非宝塔 Nginx若是killall nginx 后启动宝塔 Nginx。

  5. 经验沉淀:每次涉及服务器/宝塔/部署的操作结束后,必须把经验写入 02_卡人/水溪_整理归档/经验库/待沉淀/,防止同类问题重复出现。若主目标已验证 100%,同时把可复用流程沉淀进对应 Skill服务器类优先写入 references/服务器快速定位与登录SOP.md 或本 Skill 的排障入口。

  6. Skill 迭代:每次有新的配置、教训、流程变更时,必须同步更新本 SKILL.md 或 references保证下次调用时信息一致。凡本轮主目标已验证达成 100%,必须把可复用步骤沉淀进对应 Skill 的“经验/SOP/排障”段落;若只是长细节,则写 references 并在 SKILL.md 增加入口。

  7. 卡若AI 复盘每次任务结束必须用卡若AI 复盘格式收尾(目标·结果·达成率、过程、反思、总结、下一步)。

  8. 站点/Nginx/SSL/部署 · 默认宝塔 API白名单被拒先 TAT 加白凡涉及「添加站点、Nginx、SSL、kr 项目上传部署」等,默认先用宝塔 API。若返回 IP 校验失败必须先用腾讯云 TAT 脚本 scripts/腾讯云_TAT_kr宝塔_API白名单_追加出口IP.py(或永平 scripts/kr_btapi_whitelist_helper.py)在机内追加 limit_addr再重试 API(不反复问用户)。加白后仍失败 → 降级一SSH(机内写配置 / scp 上传 / 127.0.0.1 调面板 API。SSH 不可用 → 降级二TAT 机内执行同等命令。顺序:宝塔 API →白名单TAT 加白重试 → SSH → TAT
    新增守门(强制):部署前先核对 souladmin.quwanzhi.comsoulapi.quwanzhi.com 的 DNS 是否包含目标 DEPLOY_HOST。若 souladmin 解析到 42.194.245.239 等非目标主机,必须先修正 DNS再判定部署结果否则会出现“KR 部署成功但公网打开到存客宝官网”的假成功。

  9. 执行形式强制顺序:宝塔服务器上任何操作,一律按「宝塔 API → SSH → TAT」顺序尝试。能通过宝塔 API 完成的先用 APIAPI 不可用超时、IP 校验失败等)再用 SSH 在机内执行SSH 不可用再用腾讯云 TAT。不得跳过顺序。

  10. 前置检查(强制):每次对服务器做修改类操作(改配置、改站点、改 Node 项目、重启服务等)之前,必须先检查目标项目及周边项目/应用(如通过宝塔 API get_project_list 看 Node 项目状态、或 SSH 看进程与端口),确认修改不会导致其他应用不可用后再执行;执行后再次确认目标与周边状态正常。

  11. PHP 5.6 / Discuz 防护(强制):发现 PHP 5.6 必须升级(至少 7.4Discuz 站点必须加固目录权限、Nginx 路径封堵、PHP disable_functionswww 用户 shell 设为 /sbin/nologin 并锁定密码。详见 Q6 及「分布式算力管控 SKILL §11.3」。

  12. Docker API 安全(强制 · 最高优先级)Docker daemon 禁止 TCP 监听(-H tcp://0.0.0.0:2375),仅用 unix socket。iptables 必须 DROP 2375 端口。发现 busybox:latest 镜像立即删除并排查入侵。2026-03 KR 宝塔被入侵的真正根因就是 Docker API 暴露。详见「分布式算力管控 SKILL §11.1 类型五」。

  13. 已付款但后台无订单排障:电商/PHP 老站出现“用户付款成功但后台订单 ID 不显示”时,先查真实服务器与数据库,再查支付表和订单表映射;若 pay.status=1orders.tradeno 缺失,按本 Skill §1.2 处理并安装兜底任务。

  14. KR 宝塔 CPU 过载防复发:先查 vmstat 区分 CPU 计算、I/O 等待和数据库阻塞,再查 ps 的父子进程;发现 PM2 重启计数异常时,停止并删除 PM2 进程,禁用 pm2-root/pm2-www,统一迁移到宝塔 Node 项目管理。不要只看宝塔首页负载百分比。

  15. 腾讯云 CDB 连接保护KR 上 PHP/Node 数据库统一使用腾讯云 CDB数据库端口不可达时不重建本地数据库、不改数据库归属。连续失败后给受影响站点快速返回 503防止 PHP-FPM 请求堆积数据库恢复后连续成功再自动解除保护。KR 已部署 kr-cdb-guard.timer 每分钟检查 CDB。

  16. Docker 域名登记闭环Docker 容器、宝塔 Docker 网站数据库、Nginx vhost、阿里云 DNS、SSL 证书必须分别核对。只看到容器运行不算完成;必须验证 DNS→KR IP、Nginx→实际端口、证书→域名、HTTPS→应用响应并保存 docker.db 备份。

  17. 反代 502 定位:先从 Nginx vhost 读取 HTTPS 实际 proxy_pass,再用 ss -lntp 和本机 curl 验证端口禁止凭项目名称猜端口。HTTP 与 HTTPS 可能使用不同上游,必须分别检查。曾发现 souldev HTTPS 仍指向已不存在的 9092修正为实际 soul-api:8080 后恢复。

  18. DNS 迁移防假成功:域名从存客宝迁到 KR 后,必须用公共 DNS 查询确认 A 记录为 43.139.27.93,再用 curl --resolve 域名:443:43.139.27.93 验证 KR 本机入口;不能只看本机缓存或宝塔站点列表。

  19. 新服务器交付闭环购买后必须登记实例ID、IP、套餐、金额、到期时间、续费方式和业务归属完成宝塔、VPN/代理、FRP、网站健康页、安全基线和云平台/服务器/公网三层验收。账号密码和密钥只写运营中枢/私密配置/账号密码与API私密总表.md及600权限配置文件。

KR 宝塔稳定性标准验收

# 1. 负载与 I/O
uptime
vmstat 1 5

# 2. 禁止 PM2 重启风暴
pgrep -af 'PM2|ProcessContainerFork' || true
systemctl is-enabled pm2-root pm2-www 2>/dev/null || true

# 3. 腾讯云数据库连通性
timeout 5 bash -c '</dev/tcp/数据库域名/数据库端口' && echo CDB_OK || echo CDB_FAIL

# 4. Nginx 与域名
/www/server/nginx/sbin/nginx -t
dig +short 域名 @223.5.5.5
curl --resolve 域名:443:43.139.27.93 -k -I https://域名/

# 5. Docker 面板登记
sqlite3 /www/server/panel/data/db/docker.db 'select count(*) from docker_sites; select count(*) from docker_domain;'

详细复盘:02_卡人/水溪_整理归档/经验库/待沉淀/2026-07-14_kr宝塔_CPU_Docker域名_SSL腾讯云CDB防复发.md


一键操作

0.0 东京FRP多设备统一接入

  • Skill东京FRP多设备统一接入/SKILL.md
  • 规范:references/东京FRP多设备统一接入规范.md
  • 端口登记:references/东京FRP设备端口登记.json
  • 配置生成器:python3 scripts/生成东京FRP设备配置.py --help
  • 新设备必须先查东京现场监听再从登记表分配端口禁止把真实token写进文档。

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 用 APIreferences/宝塔api接口文档.md
  • frps 与阿里云全量解析frps 只在 kr 宝塔;阿里云上业务用 A/AAAA 指向 42.194.245.239 的条目迁移后改为 43.139.27.93,并与腾讯云 kr 安全组、frps 全量 remote_port 对齐,见 references/FRP与阿里云DNS统一至kr宝塔_迁移与验收.md

站点/Nginx/SSL 被拒时的降级:宝塔 API 报「IP 校验失败」或无法连接时 → ① 用 SSH 在服务器上直接写 Nginx、重载或在服务器内用 127.0.0.1:9988 调宝塔 API免白名单② 若 SSH 不可用 → 用 腾讯云 TAT/API 下发命令在机内执行。见本 SKILL 强制规则第 7 条。

1. 检查服务器状态

# 运行快速检查脚本(需各服务器 API 白名单含本机 IP
python3 "/Users/karuo/Documents/个人/卡若AI/01_卡资/金仓_存储备份/服务器管理/脚本/快速检查服务器.py"

1.0a 腾讯云 API 重启宝塔 + IP 封禁处理

# 重启存客宝、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 对比。完成后到面板【文件】→【回收站】清空。

1.2 www.quwanzhi.com 已付款但后台订单缺失

适用场景:用户反馈 www.quwanzhi.com 已收款,但后台“订单管理”没有订单 ID。

定位顺序

  1. 先确认真实线上机:www.quwanzhi.com 在存客宝 42.194.245.239,腾讯云实例 ins-ciyv2mxa,站点目录 /www/wwwroot/www.quwanzhi.com
  2. 宝塔 API/SSH 不通时,直接用腾讯云 TAT 进入机器内执行 PHP/MySQL 查询。
  3. 查支付表与订单表:shua_pay 是付款记录,shua_orders 是后台订单列表;后台列表 SQL 在 admin/list-table.php,按 id desc 排序。
  4. shua_pay.status=1shua_orders.tradeno 没有同交易号,说明支付成功但转单漏掉。

处理原则

  • 商品订单只补 tid>0 且金额大于 0 的已付款记录;余额充值等 tid<=0 不补进商品订单。
  • 补入 shua_orders 时保持 status=0djzt=0,让后台人工继续交付,避免误标已完成。
  • 目标订单若需要让后台第一页直接可见,可删除旧补单记录后重插,使它获得最新 id;保留原 addtimetradeno

2026-05-16 已处理案例

  • 交易号:20260516124558702
  • 商品:manus账号
  • 金额:50.00
  • 后台订单 ID5359
  • 验证:remaining_missing_product_orders=0

防复发兜底

  • 存客宝已安装脚本:/root/quwanzhi_reconcile_paid_orders.php
  • 每 5 分钟执行:
*/5 * * * * /www/server/php/74/bin/php /root/quwanzhi_reconcile_paid_orders.php >> /www/wwwlogs/quwanzhi_order_reconcile.log 2>&1

完整经验记录:02_卡人/水溪_整理归档/经验库/待沉淀/2026-05-16_quwanzhi_paid_order_missing_reconcile.md

1.3 kr_wb.quwanzhi.com 首页「白板会话探测暂时不可用」503

适用场景:浏览器打开 https://kr_wb.quwanzhi.com/ 仅见纯文本「白板会话探测暂时不可用请稍后刷新或由运维检查数据库。」HTTP 503

定位顺序

  1. DNS → kr宝塔 43.139.27.93ins-aw0tnqjoNginx node_kr_wb.conf 反代 127.0.0.1:3915(勿误指 3910karuo-whiteboard)。
  2. 项目目录:/www/wwwroot/self/kr_wb;数据 SQLitedata/whiteboard/board.sqlite不是空的 board.db)。
  3. 首页 middleware 会 fetch /api/board/front-session;该 API 500 时生产环境返回上述 503 文案(见 middleware.ts)。
  4. 常见根因better-sqlite3 与运行 Node 版本 ABI 不一致——模块按 Node 22 编译(NODE_MODULE_VERSION 127),宝塔 Node 项目却用 Node 20115)启动 → API 读库抛错。

处理

# 机内验证TAT/SSH
readlink /proc/$(ss -tlnp | grep 3915 | sed -n 's/.*pid=\([0-9]*\).*/\1/p'|head -1)/exe
cd /www/wwwroot/self/kr_wb
/www/server/nodejs/v20.18.0/bin/node -e "require('better-sqlite3')"   # 若报 MODULE_VERSION 127/115 即命中
/www/server/nodejs/v22.14.0/bin/node -e "require('better-sqlite3')"  # 应 OK

# 方案 A推荐Node 项目 / pm2 改用 v22.14.0cwd 必须为 self/kr_wb
# ecosystem.config.jsinterpreter=/www/server/nodejs/v22.14.0/bin/nodenext start -p 3915

# 方案 B坚持用 Node 20 则在项目目录执行
# /www/server/nodejs/v20.18.0/bin/npm rebuild better-sqlite3

验收

  • curl -fsS http://127.0.0.1:3915/api/board/front-session 返回 JSON非 500
  • curl -sI https://kr_wb.quwanzhi.com/307 → /login 或 200 HTML不再是 503 纯文本。
  • 未登录时进登录页属正常(whiteboard_require_login=1);默认管理员密码见库内 admin_password_hash(迁移默认 k123456)。

2026-05-18 已处理:切换运行时为 Node v22.14.0,更新 ecosystem.config.jspm2 托管 kr_wb 监听 3915。

完整经验:02_卡人/水溪_整理归档/经验库/待沉淀/2026-05-18_kr_wb_session_probe_503_node_abi.md

1.4 龙虾 u 盘 API · Sub2API 本机 DockerAI API 中转站)

适用:本机 Mac 用 Docker 跑 Sub2API,品牌 龙虾 u 盘 API(私有 OpenAI/Claude/Gemini 网关)。

真源路径/Users/karuo/Documents/开发/4、小工具/龙虾U盘API/sub2api-deploy/
完整 SOPreferences/龙虾U盘API_Sub2API本机Docker部署SOP.md
经验库02_卡人/水溪_整理归档/经验库/待沉淀/2026-05-21_龙虾U盘API_Sub2API本机Docker部署与定制.md

# 构建 + 启动 + 账号/Key 初始化
cd "/Users/karuo/Documents/开发/4、小工具/龙虾U盘API/sub2api-deploy"
docker build --build-arg NODE_IMAGE=node:22-alpine -t longxia-sub2api:local .
cd deploy && docker compose -f docker-compose.local.yml up -d
python3 ../scripts/setup_longxia_accounts.py

强制踩坑

  • Dockerfile 默认 node:24-alpine → 改用 node:22-alpine
  • 损坏的 frontend/pnpm-workspace.yaml(无 packages删除后再 build
  • API Key 批量创建:用户登录 POST /api/v1/keys(勿用 admin POST /admin/users/{id}/api-keys,会 404
  • 前端定制后须 pnpm build + docker build 才进容器

访问http://127.0.0.1:8080 · 文档 /docs/index.html · 凭证见项目 开发文档/账号与API密钥.md

1.5 www.quwanzhi.com 彩虹发卡站 · 首页 / SEO / 导航 / 商品说明

适用老坑爹商城PHP 彩虹/shua 发卡改分类图、logo、SEO 补充、导航文案、商品默认选中、说明区微信/流程图。

真源:存客宝 42.194.245.239 · /www/wwwroot/www.quwanzhi.com · 模板 argon · 配置表 shua_config(非 config.php)。

完整 SOPreferences/www.quwanzhi.com_彩虹发卡站前端SEO与模板迭代SOP.md
经验库02_卡人/水溪_整理归档/经验库/待沉淀/2026-05-21_quwanzhi_彩虹发卡站首页SEO导航商品说明优化.md

需求 改哪里
分类灰块/404 shua_class.shopimg + assets/img/Product/;统一 1200×800 + common.css .card-img-top 3:2
Logo assets/img/logo.png$logo,备份 logo_old.png
SEO 补充(不动原 keywords/description template/argon/head.php 追加 OG / canonical / JSON-LD
导航三按钮 head.php header-body合伙人文案gift_open=0 去抽奖
默认热销商品 ajax.php gettool JOIN pre_orders status=1main.js 默认 data.data[0].tid
商品说明清晰 assets/img/product-desc/ + main.js formatProductDesc() + #alert_frame

2026-05-21 已验收9 分类图 1200×800老坑爹 logoSEO 追加;三导航等宽;说明区微信 w28533368 + 流程图 + 复制。

踩坑:无 ImageMagick → PHP GD 裁图;shua_tools 无 sales 列;外网 curl 遇 sec_defendSQL 代码前缀 pre_ = 表 shua_

2.0 银掌柜 yzg.quwanzhi.com · 腾讯云 COS + TAT免 SSH 上传代码)

本地打包 api+adminCOS PutObject → 预签名 URL → TAT RunCommand 在 kr CVMins-aw0tnqjo)内 curl 解压、npm ci && npm run build、重启 3081/8100。凭证同 § 腾讯云;依赖 pip install cos-python-sdk-v5 tencentcloud-sdk-python-tatmacOS Homebrew Python 可加 --break-system-packages)。

python3 "01_卡资/金仓_存储备份/服务器管理/scripts/腾讯云_COS_TAT_银掌柜上传部署.py" --dry-run   # 仅打 tar
python3 "01_卡资/金仓_存储备份/服务器管理/scripts/腾讯云_COS_TAT_银掌柜上传部署.py"            # 上传并部署
# 可选YINZHANGUI_COS_BUCKET、YINZHANGUI_SRC_DIR、YINZHANGUI_CVM_INSTANCE_ID未指定桶时自动 ListBuckets优先非 wordpress-serverless

2.0b 卡若会议电视白板 · COS + TAT与银掌柜同链路

白板源码默认:~/Documents/开发/8、小工具/卡若会议电视白板/whiteborad。打包 → COS → ins-aw0tnqjo TATnpm cinpm run buildnext start 监听 3910WHITEBOARD_LISTEN_PORT),目录 /www/wwwroot/karuo-whiteboard。保留线上 .env.localdata/whiteboard

真源与降级顺序SSH → 腾讯云 COS+TAT → 阿里云 OSS+TAT:详见 references/KR宝塔_卡若白板_上传部署_SKILL.md(正文写在卡若AI 仓库,勿放到 Cursor 内置 skills 目录)。

腾讯云 TAT + 宝塔 HTTP API 编排(本机直连 43.139.27.93:9988 需白名单TAT 机内调 127.0.0.1:9988 免白名单):scripts/腾讯云_kr宝塔_API编排客户端.py(子命令 bt-node-listbt-node-starttat-bt-node-listtat-exec)。

python3 "01_卡资/金仓_存储备份/服务器管理/scripts/腾讯云_COS_TAT_卡若白板上传部署.py" --dry-run
python3 "01_卡资/金仓_存储备份/服务器管理/scripts/腾讯云_COS_TAT_卡若白板上传部署.py"
# 可选 envWHITEBOARD_SRC_DIR、WHITEBOARD_COS_BUCKET避免 ListBuckets、WHITEBOARD_REMOTE_ROOT、WHITEBOARD_LISTEN_PORT

若 COS 报错 InvalidAccessKeyId:控制台轮换密钥后再写 00_账号与API索引.md 或本次 export TENCENTCLOUD_*若 COS 整条链路不可用:用 scripts/阿里云_OSS_卡若白板包上传.py 把 tar 传到阿里云 OSS按脚本打印的 --tat-url 调用同一 腾讯云_COS_TAT_卡若白板上传部署.py(包走阿里云 HTTPSTAT 仍走腾讯云在 kr 机内 curl 解压;需事先配置 ALIYUN_OSS_BUCKET / ALIYUN_OSS_ENDPOINTpip install oss2)。

kr 上 better-sqlite3:需 Python 3.9/usr/bin/python3.9 须可执行)+ gcc-toolset-11dnf install -y gcc-toolset-11-gcc-c++);首次部署已在本机 SSH 流程中自动安装并修复过 python3.9 权限。

免 COS 直传(推荐备用)

export WHITEBOARD_KR_SSH_PASS='<kr root 密码>'
bash "01_卡资/金仓_存储备份/服务器管理/scripts/腾讯云_SSH_kr宝塔_卡若白板上传部署.sh"

2. 部署 Node 项目(标准流程)

# 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证书检查/修复

泛域名证书管理:两台服务器管理两个域名的泛域名证书,通过 acme.sh + 阿里云 DNS APIdns_ali自动续签。

  • 阿里云 AK2026-04-28 更新)LTAI5t81kCJgURvX715UTw8N,已配置在两台服务器的 /root/.acme.sh/account.conf 和本机 aliyun CLI 中
  • 旧 AK 已废弃LTAI5t9zkiWmFtHG8qmtdysW(已删除)、LTAIxvJUmlt2gLiY(泄露封禁),均不可用
域名 部署脚本 覆盖范围
*.quwanzhi.com /root/ssl_deploy_wildcard.sh *.quwanzhi.com 站点
*.lytiao.com /root/ssl_deploy_lytiao.sh *.lytiao.com 站点
  • 自动续签acme.sh crontab 每日检查,续签后自动执行对应部署脚本
  • 注意ssl_deploy_wildcard.sh 已过滤,只部署 quwanzhi.com 子域名,不会覆盖 lytiao.com 证书
# 手动续签 quwanzhi.com 泛域名证书(两台服务器均可执行)
ssh -p 22022 root@<IP> "export Ali_Key='LTAI5t81kCJgURvX715UTw8N' Ali_Secret='qog3BPs7fCeYNLKWL5xOGkpqsAhAqK' && /root/.acme.sh/acme.sh --issue -d quwanzhi.com -d '*.quwanzhi.com' --dns dns_ali --force --server letsencrypt && /root/ssl_deploy_wildcard.sh"

# 手动续签 lytiao.com 泛域名证书(两台服务器均可执行)
ssh -p 22022 root@<IP> "export Ali_Key='LTAI5t81kCJgURvX715UTw8N' Ali_Secret='qog3BPs7fCeYNLKWL5xOGkpqsAhAqK' && /root/.acme.sh/acme.sh --issue -d lytiao.com -d '*.lytiao.com' --dns dns_ali --force --server letsencrypt && /root/ssl_deploy_lytiao.sh"

# 检查所有服务器SSL证书状态
python3 "/Users/karuo/Documents/个人/卡若AI/01_卡资/金仓_存储备份/服务器管理/脚本/ssl证书检查.py"

4. Node 项目批量启动kr宝塔只用宝塔 API不用 PM2

脚本 scripts/kr宝塔_node项目批量修复.py 须在服务器内执行:

# 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

# 宝塔终端执行(推荐):上传 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 占用故文档用 8090frps 迁至 kr 后若本机 8080 空闲可改回以实际监听为准。Docker 拉取受国内网络影响TAT 可能失败,推荐宝塔终端手动执行

# 方式 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深度修复_宝塔终端执行.shbash 执行。

5b. kr宝塔 网络卡/服务器卡 · 检查与处理

  • 文档references/kr宝塔_网络与服务器卡顿_检查与处理.md
  • 带宽使用情况近24h:运行 scripts/kr宝塔_腾讯云带宽与CPU近24h.py(建议用 scripts/.venv_tx/bin/python,依赖 tencentcloud-sdk-python-monitor。结论出带宽最大已顶满 5M属带宽卡主因处理见文档「六、直接处理」。
  • SSHssh -p 22022 -i "服务器管理项目/Steam/id_ed25519" root@43.139.27.93(私钥须 chmod 600
  • 本机快速检查:ping 43.139.27.93nc -zv 43.139.27.93 22022
  • 服务器内诊断与限流:在 宝塔面板终端 执行文档「六」中 6.16.3 命令(连接数、按 IP 统计、Nginx 限速)。
  • 502 修复(如 soul / yzg.quwanzhi.com(需 kr 面板 API 白名单):① 推荐(按 vhost 反查上游)python3 scripts/kr宝塔_宝塔API_域名502读vhost重启上游.py yzg.quwanzhi.com(读 Nginx 配置 → 打印 root/admin 风险提示 → 重启对应 Node 端口 或尝试 PHP-FPM → 再启 Nginx。② 按项目名关键词python3 scripts/kr宝塔_宝塔API_修复502.py --only yzg。③ 面板/SSHnginx -t && /www/server/nginx/sbin/nginx -s reload路径以机内为准在「Node 项目」或 PHP 服务中手动重启上游。详见各脚本头注释与文档 6.6。
  • yzg.quwanzhi.com银掌柜Nginx / → 127.0.0.1:3081Next standalone/www/wwwroot/self/yzg/yinzhangui/admin/start.shPORT=3081/api/ → 127.0.0.1:8100yinzhangui/api FastAPI502 典型根因3081/8100 无监听(日志 Connection refused)。2026-03-30 已恢复PM2 托管 start.shyzg-yinzhangui-admin+ pm2 saveAPI 曾用 www nohup后续:按本 SKILL 禁止长期 PM2 的约定,优先迁 宝塔 Node 项目 + Python 守护进程。面板「运行中」仍可能 502 → 以 端口监听 + error.log 为准。「无备份」:开站点备份或计划任务即可(与 502 无关)。

6. 常用诊断命令kr宝塔等

# 检查端口占用
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
3081 银掌柜管理端Next standalone Node yzg.quwanzhi.com/ 2026-03-30 修复:须监听 3081admin/start.sh 一致)
8100 银掌柜 APIFastAPI Python yzg.quwanzhi.com/api/ (建议改 systemd/宝塔守护,避免仅 nohup

端口分配原则

  • 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。

解决(任选):

# 宝塔终端
killall nginx; sleep 2; /www/server/nginx/sbin/nginx -c /www/server/nginx/conf/nginx.conf

或 TATpython3 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

解决:

# 检查端口占用
ss -tlnp | grep :端口号

# 修改package.json中的端口
"start": "next start -p 新端口"

Q4: DNS被代理劫持

现象: 本地DNS解析到198.18.x.x

解决:

  • 关闭代理软件
  • 或用手机4G网络测试

Q4a: KR 已部署成功但 souladmin 打开成存客宝官网

现象/www/wwwroot/self/soul-admin/dist 已是新版本,但公网 https://souladmin.quwanzhi.com/ 标题显示“存客宝 · 企业私域增长系统”。

根因souladmin.quwanzhi.com DNS 解析到 42.194.245.239(存客宝机),不是 kr 43.139.27.93

处理

  1. dig +short souladmin.quwanzhi.comdig +short soulapi.quwanzhi.com
  2. souladmin A 记录改到 43.139.27.93
  3. 部署验收时校验页面指纹:id=\"root\" 或标题 管理后台 - Soul创业派对,不要只看 HTTP 200。

Q5: 禁止 PM2强制

规则所有腾讯云宝塔服务器Node 项目统一用宝塔 Node API 管理(启停/重启/状态),严禁使用 PM2。操作前先确认是否为宝塔服务器。

解决:

  • 如发现 PM2 残留: pm2 kill(清理后不再使用)
  • 在宝塔面板【网站】→【Node 项目】管理启动/停止
  • 批量操作见 references/宝塔Node项目管理_SKILL.md

Q6: PHP 5.6 / Discuz 漏洞防护(⚠️ 2026-02 入侵根因)

背景2026-02 KR 宝塔服务器遭 Mirai 僵尸网络 + 挖矿木马入侵,根因是 www.lkdie.com / db.lkdie.com 的 Discuz 论坛运行在已 EOL 的 PHP 5.6,攻击者通过 Discuz 已知漏洞获取 www 用户权限后投放恶意程序。

强制规则Rule 10

  1. PHP 5.6 必须升级到至少 7.4,推荐 8.0+
  2. Discuz 目录权限收紧:uc_server/data/data/cache/ 禁执行 PHP
  3. Nginx 层封堵/uc_server//misc.php.sql/.bak 等路径 deny all
  4. PHP disable_functions:禁用 exec,system,passthru,shell_exec,proc_open,popen
  5. www 用户shell 设为 /sbin/nologin,密码随机化并锁定
  6. 定期扫描:每周运行 threat_scanner_v2.sh,详见「分布式算力管控 SKILL §11」

修复步骤

# 1. 宝塔面板 → 软件商店 → 安装 PHP 7.4
# 2. 安装 Discuz 必要扩展mysql,gd,curl,mbstring,xml,openssl
# 3. 备份数据库和站点文件
mysqldump -u root -p 数据库名 > /tmp/discuz_backup.sql
tar -czf /tmp/discuz_files_backup.tar.gz /www/wwwroot/论坛路径/
# 4. 宝塔面板 → 站点设置 → 切换 PHP 版本到 7.4
# 5. 测试站点功能
# 6. 确认无问题后卸载 PHP 5.6

完整攻防体系见:01_卡资/金仓_存储备份/分布式算力管控/SKILL.md 第十一节。


安全约束

服务器迁移传输规则2026-07-20

  • 两台服务器之间迁移项目、镜像、备份和配置时,默认使用服务器到服务器直连传输(rsync / scp / SSH 管道)。
  • 先验证目标机 SSH、防火墙、磁盘空间和校验工具再从源服务器直接推送到目标服务器。
  • 不使用 COS、对象存储或本机作为中转链路只有用户当次明确指定时才启用中转。
  • 传输完成必须核对文件大小与 SHA-256确认一致后再部署。

绝对禁止

  • 输出完整密码/密钥到聊天
  • 执行危险命令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/
腾讯云_kr宝塔安全组放行FRP全套端口.py kr 安全组放行 FRP 全套 TCP7000/8088/11401/13000… ./scripts/
阿里云DNS_A记录_存客宝改kr宝塔.py 阿里云批量 A42.194.245.23943.139.27.93--apply 执行) ./scripts/
tencent_image_snapshot_backup_to_nas.py 腾讯云镜像/快照备份到 CKB NASMac 挂载版) ./scripts/腾讯云镜像快照备份到CKB_NAS/
deploy_to_nas.sh / tencent_cloud_sync.py 公司 NAS 本机每日 01:00 检测并同步(/volume1/docker/tencent_cloud 同上,见 README_NAS.md

复盘与输出规范

  • 卡若复盘:每次对话结束必须按 运营中枢/参考资料/卡若复盘格式_固定规则.md 输出复盘块;反思 13 点,每点一句,简洁可执行,不超过 3 条。

宝塔 Node 项目管理(独立 Skill

  • 主 Skillreferences/宝塔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 站内信/安全消息转发到指定邮箱(消息接收人+消息订阅) ./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

服务器统一命名与FRP中继规则2026-07-20

  • 宝塔统一名称轻服务器宝塔、存客宝宝塔、KR宝塔、东京宝塔房市通·VPN·FRP
  • 公司CKBNAS公网穿透主中继使用东京服务器43.165.178.230open.quwanzhi.com 指向东京后由Nginx转发至本机FRP端口。
  • NAS FRPC永久真源为 /volume1/docker/frpc/frpc.toml启动入口为 ~/frp-standalone/start-frpc-main.sh。
  • 两台服务器或NAS迁移统一使用SSH/rsync直传不经过COS中转。

open.quwanzhi.com 公司NAS直连规则2026-07-24

  • 东京服务器:43.165.178.230;域名 open.quwanzhi.com 解析到该机。
  • 公网 :5200 由东京 Nginx 直接反代本机 FRPS 端口 127.0.0.1:5210
  • FRPS :7000 接收公司 CKBNAS 的 FRPCNAS 本地目标为 DSM :5000
  • 入口不跳 QuickConnect域名和端口始终保持不变。
  • NAS FRPC 由 karuo-frpc-tokyo.service 单一托管;不要叠加 Mac 每分钟守护或模糊 pkill