余额鲸鱼挂件(MeteorNOX/DeepSeek-Balance-Whale-Widget,包名 dsh-whale-widget,Star 2,689,版本 0.3.1)跑在 DSH Web 界面上,默认地址是 http://127.0.0.1:3080。这个默认值决定了它在阿里云 ECS 上的部署要点:服务只监听本机,安全组不要为它开公网,远程访问走 SSH 隧道。
一、ECS 实例与镜像建议
挂件是纯 JS,不吃 CPU,吃的是「一直开着」,入门规格的 ECS 就够。镜像建议选主流 Linux 发行版(如 Alibaba Cloud Linux 3 或 Ubuntu 22.04/24.04),理由只有一个:DSH Web UI 需要 Node.js ≥ 22.19,老镜像自带的 Node 常常不达标。系统盘别卡太紧:账本、归档与统计缓存都落在 $DSH_HOME(默认 ~/.dsh),逐日归档保留 365 天,要长期留档可把 $DSH_HOME 放到数据盘。
二、安全组:只放行你自己的来源 IP
这一条最重要。DSH Web 默认监听 127.0.0.1:3080,默认状态下公网根本连不上,这本身就是最安全的配置,不需要也不应该为了访问它把 3080 对 0.0.0.0/0 开放。
安全组只需满足两件事:放行 SSH(22 端口)且来源限制为你自己的出口 IP;不给 3080 加任何公网入方向规则。阿里云安全组规则是「来源 IP + 端口 + 协议」三元组,把 SSH 来源写成办公网或家宽出口 IP,是成本最低的一道门。
三、装 Node ≥ 22.19 与 pnpm
node -v # 必须确认 ≥ 22.19,别只看大版本
npm install -g pnpm # 挂件安装前置:pnpm 可用
四、安装 DSH Web 与挂件
挂件是标准 DSH bundle 插件(package.json 的 dsh.bundle.patch 指向 cordis.patch.yml):
dsh plugin --profile web add dsh-whale-widget # 安装
dsh plugin --profile web remove dsh-whale-widget # 卸载
装完必须重启 dsh web,再在浏览器里 F5 刷新。这条在云上尤其容易踩——本地习惯 Ctrl+F5,到服务器上忘了重启宿主,就会以为安装失败。
五、怎么访问 3080:首选 SSH 隧道
既然安全组不放行 3080,用 SSH 隧道把远端端口映射到本地即可:
ssh -N -L 3080:127.0.0.1:3080 @ # 在本地执行
之后在本机浏览器打开 http://127.0.0.1:3080 就是那台 ECS 上的 DSH Web,全程没有对公网暴露过。不要把 3080 直接暴露到公网:21 个 /dsh-whale/ 路由都挂在 DSH 的浏览器信任栅栏后面、带会话才算合法访问,多一层公网暴露只有风险没有收益。
六、出网与凭据
ECS 需要出网:拉余额走 GET https://api.deepseek.com/user/balance;启用自定义 API(34 个厂商模板)后还要能访问对应厂商接口与探活地址。出网用 NAT 网关或公网 IP 都行,关键是入方向收紧、出方向放开。凭据只需 DEEPSEEK_API_KEY 一项,在 DSH 凭据服务里配置(凭据管理界面 / .dsh/.credentials.yaml),密钥不落配置文件、只存凭据名;也不需要 DEEPSEEK_PLATFORM_TOKEN——早期「实时·令牌」模式已下线,今日已用由小鲸鱼记账统一计算。
七、装完怎么验证
装完用 dsh --profile web --dump-config 过滤 whale 确认挂载;在 ECS 本机执行 curl http://127.0.0.1:3080/dsh-whale/balance.json 会返回 200 JSON(含 ok、totalBalance、currency、todayUsage)。在浏览器外裸 curl 拿到 401 或 403 是预期行为——21 个 /dsh-whale/ 路由都挂在信任栅栏后面,401/403 恰好说明路由已注册。想看更多 DSH 插件,可以访问 https://dpharness.com/top?utm_source=aliyun&utm_medium=article 。