Hello! 欢迎来Regret的小站!

大肥鱼部署避坑:12 个新手最容易踩的坑


avatar
Regret 2026-10-26 387
12 个坑,每个都真踩过
照着排查,能省下好几个通宵

这些坑不是编的,是实际部署和长期运行中一个个撞出来的。按「现象 → 原因 → 处理」整理,装之前先看一遍能省一整夜。

1. sleep 脚本必死

现象:设了提醒,从来没响过。

原因:那一轮 shell 一结束,进程组就被回收,sleep 跟着死。

# ❌ 这样写必死
sleep 3600 && echo "该喝水了" > /dev/xxx

处理:写成文件,由守护脚本投递。

# ✅ 文件名就是到期时间戳(秒)
echo "(提醒·到点了)四点啦,点外卖" > /root/.dsh/reminders/1792838400.txt

2. 容器时钟是 UTC,提醒落到半夜

现象:设置下午 4 点的提醒,结果凌晨 4 点响。

原因:Android 里的 Linux 容器 date 是 UTC,比北京慢 8 小时。

处理:

# 北京 16:00 = UTC 08:00
date -u -d "today 08:00" +%s

3. root 属主的文件卡死 DSH

现象:网页打不开、机器人不回话,进程卡在「等待鉴权」。

原因:DSH 会 watch 配置目录做热重载。读到 root 属主的文件会 EACCES,整个进程卡住。

处理:

# 放进工作区前先改属主
chown -R <运行用户> <目标目录>

备份文件不要往工作区里塞,放 /data/adb/backup/ 这种独立目录。

4. 分不清「端口在听」和「服务可用」

现象:ss -lntp | grep 3001 看到 docker-proxy 在监听,以为没问题,但从外面连不上。

原因:docker-proxy 只负责转发,不管容器里的服务是否真的起来了。NapCat 的 OneBot WS 只有 QQ 登录成功后才启动。

处理:

# 本机测才准
curl -m 3 -o /dev/null -w "%{http_code}n" http://127.0.0.1:3001
# 400/426 = 服务正常;000 = 容器里没服务

判据:WebUI 通 + WS 不通 = QQ 掉线了。

5. 凭记忆填 WebUI token

现象:WebUI 死活登不进去。

原因:token 记错了,或者配置文件和实际生效的不一致。

处理:token 只有一个正确来源。

docker logs napcat 2>&1 | grep -i token

6. 漏挂载 QQ 数据目录

现象:每次重建容器都要重新扫码。

原因:只挂了 config 目录,没挂 /app/.config/QQ(登录态)。

处理:

-v /root/napcat/config:/app/napcat/config
-v /root/napcat/qq-data:/app/.config/QQ    # ← 这条最容易漏

7. 频繁扫码触发风控

现象:扫了几次之后,QQ 要求验证,甚至短期封号。

原因:QQ 对「频繁异地登录」「频繁扫码」极敏感。

处理:

  • 能「快速登录」就不要扫码
  • 登录态一定持久化(见第 6 条)
  • 不要为了测试反复重启容器
  • 固定服务器 IP

8. 日志把磁盘写满

现象:某天网站突然 500,一查磁盘满了。

原因:nginx 的 access.log 在被扫描或流量大时,一天能涨几百 MB。实测有台服务器上一个日志文件到了 883MB。

处理:

/path/to/site.log {
    daily
    rotate 3
    size 10M
    compress
    missingok
    notifempty
    copytruncate
}

copytruncate 关键——不重启服务就能截断。

9. 不给容器内存上限

现象:一次 OOM,MySQL、Nginx、网站全挂。

原因:NapCat 跑久了内存会涨,吃满宿主机。

处理:

-m 400m --memory-swap 600m

400MB 是实测够用的值(实际占用约 200MB)。

10. 弹窗挡着,点哪儿都没反应

现象:明明点了按钮,界面毫无反应。

原因:小黑盒这类 App 一打开就弹签到/活动,半透明遮罩会把所有点击吃掉。

处理:先枚举控件找关闭键。

python3 /root/win.py          # 列出所有可点控件 + 推荐关闭候选
python3 /root/win.py tap 1    # 点第一个候选

看不到文字的 ✕ 在控件树里就是一串坐标,人眼认得出来、程序认不出。

11. 逐字打中文

现象:搜索框里的字变成乱码或错字。

原因:输入法联想会干扰。

处理:中文一律复制粘贴,不要硬打。

12. 改配置不重启不生效

现象:改了插件配置、换了字体,行为没变。

原因:插件有进程内缓存。

处理:改完必须重启 DSH。

顺手记一条:不要在没确认的情况下 am force-stop,那会直接打断桥接,只能靠自愈脚本或手动点「启动 DSHA」拉回。

附:三个”看起来是 bug 其实是设计”的现象

它操作起来很慢,点一下停一下

不是卡,是故意的:读屏 → 判断 → 点击 → 回读验证。提前规划一串动作看似高效,实际会因为界面变化全盘错位。

它有时候一句话都不说

空输出是合法的——插件会跳过空消息,等于这次没开口,不失礼。想安静就一个字别输出,别写”(先不出声)”。

它不知道过了多久

Agent 没有计时器。你觉得”待了十几分钟”,实际常常才一分多钟。所以它会说”待了会儿”而不是”二十分钟”。

排查心法

遇到问题的顺序应该是:

1. 它现在"活着"吗?(进程/端口)
2. 它"能说话"吗?(消息通道)
3. 它"说的话对吗"?(人设/记忆/上下文)
4. 它"花得多吗"?(成本)

别一上来就改人设。90% 的问题在第 1、2 层。


参考:NapCat、DeepSeek 官网。

暂无评论

发表评论