joy-cli/docs/ops/nas-dsm-observe.md
feibisi b7fecf7ab0 feat(web): NAS 硬件卡 SSH 探测 + 布局对齐其它主机
采集 Terminal API 与 BatchMode 公钥探测,硬件 tab 主卡精简(IP 常显、
DSM 版本进机身详情),明细用 hwFold;文档同步 SSH 已通与修复入口。
2026-07-10 21:25:50 +08:00

165 lines
6 KiB
Markdown
Raw Permalink 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.

# NAS / DSM 可观测DS224+ · 实测)
> 2026-07-10 · 用 `linuxjoy` 账号只读登录 DSM API 摸底
> 凭据仅存本机 `~/.config/nas/dsm.env`chmod 600**禁止入库**
> **已落地**`joy.dashboard.nas_dsm.collect_nas_dsm` → `dashboard.infra.nas.dsm` → 硬件 tab「NAS」
> **总手册**(挂载 / SSH / 安全 / 索引):[`nas.md`](./nas.md)
---
## 1. 访问结论
| 通道 | 结果 |
|------|------|
| `https://192.168.1.188:5001` DSM Web | ✅ |
| DSM API `SYNO.API.Auth` v7 + `entry.cgi` | ✅ 登录成功,权限够读机身/存储/共享 |
| NFS 挂载 `shared-context`Mac | ✅ 内容面;与 volume1 对应 |
| SSH `linuxjoy@192.168.1.188` 密码 | ❌ 仅 `publickey`,密码认证未开 |
| 建议 joy 采集 | **优先 DSM APIcurl -sk**;内容面用已挂载路径;不必依赖 SSH |
登录示例(勿把密码写进脚本仓库):
```bash
# sid 缓存 ~/.config/nas/dsm.sid
curl -sk -G 'https://192.168.1.188:5001/webapi/entry.cgi' \
--data-urlencode 'api=SYNO.API.Auth' --data-urlencode 'version=7' \
--data-urlencode 'method=login' --data-urlencode "account=$NAS_USER" \
--data-urlencode "passwd=$NAS_PASS" --data-urlencode 'session=Core' \
--data-urlencode 'format=sid'
```
Python `urllib` 对本机 DSM TLS 偶发 EOF**生产采集用 curl 子进程更稳**。
---
## 2. 机身快照(实测)
| 项 | 值 |
|----|-----|
| 型号 | **DS224+** |
| DSM | **7.3.2-86009 Update 4** |
| CPU | Intel Celeron **J4125** 4 核 @2.0GHz |
| 内存 | **6 GB**real_usage ~15% |
| 系统温度 | **~41°C**,无温度告警 |
| 运行时间 | ~114h采样时 |
| 主机名 | `feibisi-NAS` |
| 网卡 | eth0 **1G connected** `192.168.1.188`eth1 disconnected |
| UPS | USB 识别 **APC UPS**(专用 UPS API 对本账号 102 无权限,但 system.usb_dev 可见) |
| 风扇 | cool_fan=yes双风扇 cool 模式 |
| 健康 widget | `system_ok` |
### 存储
| 项 | 值 |
|----|-----|
| 盘 | 2× **WD80EFPX** 8TBDrive1/2SMART **normal**,温度 **3537°C** |
| 池 | RAID **1**`reuse_1`status normal |
| 卷 | **volume1** btrfs~7.0T total~2.6T used~37%fs_normal |
| 盘 IO | 低负载util 采样时个位数% |
### 文件服务
| 项 | 值 |
|----|-----|
| NFS | **已开**v4 未开 minor与 Mac NFS 挂载一致 |
| SMB | 配置可读 |
| 当前连接 | NFSMac `.104`、其它内网)+ DSM Web/File Station 会话 |
### 共享文件夹11
含:`shared-context`VM SHARED`docker``ActiveBackupforBusiness``homes``Download``iCloudPhotos``music`/`photo`/`video`/`web`/`web_packages`
### 套件节选·running
ActiveBackup、ActiveBackup-Office365、ActiveInsight、CloudSync、Git、Node.js_v20、SnapshotReplication、SynologyDrive 等(共 48 包量级)。
### 日志噪声
Syslog 近段 **error 多为 Synology Office 自动更新失败**(重复),非盘故障。
---
## 3. 可用 API 白名单joy 采集建议)
| API | method | 用途 | 实测 |
|-----|--------|------|------|
| `SYNO.API.Auth` | login | 会话 | ✅ |
| `SYNO.Core.System` | info | 型号/固件/温度/UPS USB/uptime | ✅ |
| `SYNO.Core.System.Utilization` | get | CPU/内存/网/NFS OPS | ✅ |
| `SYNO.Storage.CGI.Storage` | load_info | 盘 SMART 状态/温度、卷用量、RAID | ✅ **机身核心** |
| `SYNO.Core.Share` | list | 共享列表 | ✅ |
| `SYNO.Core.CurrentConnection` | list | NFS/SMB/HTTP 会话 | ✅ 通道面 |
| `SYNO.Core.Package` | list | 套件 running | ✅ |
| `SYNO.Core.Network.Ethernet` | list | 网卡速度/链路 | ✅ |
| `SYNO.Core.Hardware.FanSpeed` | get | 风扇模式 | ✅ |
| `SYNO.Core.System.SystemHealth` | get | 健康摘要 | ✅ |
| `SYNO.Core.FileServ.NFS` | get | NFS 开关 | ✅ |
| `SYNO.Core.SyslogClient.Log` | list | 最近 warn/error 计数 | ✅ 慎用(量大) |
权限不足或无需:独立 SMART CGI114、Core.Hardware.UPS102、部分 Storage.Disk.list101
---
## 4. 建议进 joy 的字段(硬件 · NAS 卡)
**L0 机身(每 15 minDSM API**
```text
nas.dsm: {
ok, model, dsm_ver, hostname, uptime,
sys_temp_c, temp_warn,
cpu: {series, cores, load_1m, ...}, mem_pct,
eth0: {ip, speed, status},
pool: {raid, status},
volume: {used_gb, total_gb, used_pct, fs, status},
disks: [{slot, model, temp_c, smart_status, status}],
ups_usb, fan_mode,
terminal: {enable_ssh, enable_telnet, ssh_port}, // 2026-07-10
ssh: {ok, target, error}, // BatchMode 公钥探测
attention[]
}
```
**L1 通道(同轮或稍慢)**
```text
nas.channels: {
nfs_enabled, smb_enabled?,
connections: {nfs_n, http_n, total},
mount_mac_ok, mount_devops_ok, // 现有
write_probe_ok // shared-context 写删探针
}
# SSH 修复linuxjoy scripts/mac/nas-ssh.sh不进 joy 写路径)
```
**L2 内容(日更/手动,勿每轮 du**
- 白名单目录 entry 数 / 可选日 `du` 缓存
- **禁止** secrets 内容进 JSON
展示位置:继续 **硬件 · NAS**(粮仓),不进神州、不进神兽 badge 主公式。
---
## 5. 实现要点
1. `collect_nas_dsm()`:读 `~/.config/nas/dsm.env`curl 登录,缓存 sid ~1030 min。
2. 失败降级:无账号/登录失败 → 仅保留现有 mount+df。
3. TLS`curl -sk` 或等价;勿用会 EOF 的默认 SSL 栈硬扛。
4. 密码不进 HANDOFF / git / dashboard 明文。
5. SSH 公钥已通2026-07-10`collect_nas_dsm` 每轮 BatchMode 探测 `ssh nas`UI 硬件卡展示。复发:`linuxjoy/scripts/mac/nas-ssh.sh fix`
6. 建议轮换聊天中暴露过的密码,并更新 `~/.config/nas/dsm.env`
---
## 6. 安全提醒
本次会话中密码曾出现在聊天中。建议在 DSM 中:
1. 修改 `linuxjoy` 密码,并更新 `~/.config/nas/dsm.env`
2. 或新建只读监控用户 + 最小权限
3. 需要 SSH 时单独开公钥,不要开密码 SSH 到公网
---
*实测账号linuxjoy本地 env。SSH 密码认证未启用。*