采集 Terminal API 与 BatchMode 公钥探测,硬件 tab 主卡精简(IP 常显、 DSM 版本进机身详情),明细用 hwFold;文档同步 SSH 已通与修复入口。
276 lines
9.8 KiB
Markdown
276 lines
9.8 KiB
Markdown
# NAS 完整手册(DS224+ · feibisi-NAS)
|
||
|
||
> 更新:2026-07-10
|
||
> 范围:设备档案、挂载、DSM API、joy web 硬件采集、SSH、安全与排障
|
||
> 凭据:**仅** `~/.config/nas/dsm.env`(chmod 600),禁止进 git / HANDOFF 明文
|
||
|
||
---
|
||
|
||
## 0. 一分钟速览
|
||
|
||
| 项 | 值 |
|
||
|----|-----|
|
||
| 型号 / 主机名 | **Synology DS224+** / `feibisi-NAS` |
|
||
| LAN | **192.168.1.188**(eth0 1G;eth1 未接) |
|
||
| DSM | **7.3.2-86009 Update 4** · Web `https://192.168.1.188:5001` |
|
||
| 存储 | 2× WD80EFPX 8TB · **RAID1** · volume1 **btrfs** · ~7.0T / 用约 37% |
|
||
| 协作真源 | **`shared-context`** → Mac NFS `~/mnt/shared-context` · VM NFS `/mnt/shared-context` |
|
||
| joy 机身观测 | `collect_nas_dsm` → `dashboard.infra.nas.dsm` → **硬件 → NAS** |
|
||
| 账号(观测) | `linuxjoy`(administrators 组成员;描述:麟悦 Linux 备份专用) |
|
||
| SSH 入站 | **已通**(2026-07-10):`ssh nas`;运维见 linuxjoy `docs/ops/nas-ssh.md` · `scripts/mac/nas-ssh.sh` |
|
||
|
||
角色心智:NAS = 飞轮**粮仓与驿道**(硬件 tab),不是神州公网站、不是神兽 VM。
|
||
|
||
---
|
||
|
||
## 1. 网络与服务面
|
||
|
||
```
|
||
┌─────────────────────────┐
|
||
Mac / VMs NFS ──►│ DS224+ 192.168.1.188 │
|
||
Mac SMB ──────►│ volume1 (btrfs RAID1) │
|
||
DSM HTTPS ──────►│ :5001 DSM + API │
|
||
SSH :22 ──────►│ enable_ssh=true │ ← ssh nas OK(密钥 600 / 无 ACL)
|
||
└─────────────────────────┘
|
||
│ USB
|
||
▼
|
||
APC UPS
|
||
```
|
||
|
||
| 服务 | 状态(实测) |
|
||
|------|----------------|
|
||
| NFS | 已开(v4 minor 未开);Mac/内网有会话 |
|
||
| SMB/CIFS | 可用(homes / Download / shared-context 可 mount_smbfs) |
|
||
| DSM Web/API | ✅ |
|
||
| SSH | **已通**(`ssh nas`);故障剧本见 §5 |
|
||
| 套件 | ContainerManager、ActiveBackup、Snapshot、Drive、Git… 等 running |
|
||
|
||
### 共享文件夹(11)
|
||
|
||
| 共享 | 用途(简) |
|
||
|------|------------|
|
||
| **shared-context** | VM/Mac 集群协作主卷(Board、信号、报告…) |
|
||
| homes | 用户家目录(含 `linuxjoy/.ssh`) |
|
||
| docker | ContainerManager |
|
||
| ActiveBackupforBusiness | 主动备份 |
|
||
| Download | 下载 / forgejo 备份脚本等 |
|
||
| iCloudPhotos / music / photo / video / web / web_packages | 默认或媒体/Web |
|
||
|
||
---
|
||
|
||
## 2. 挂载(内容面)
|
||
|
||
### 2.1 Mac(当前生产形态)
|
||
|
||
```text
|
||
192.168.1.188:/volume1/shared-context → ~/mnt/shared-context (NFS)
|
||
```
|
||
|
||
备用 SMB(文档历史):
|
||
|
||
```bash
|
||
mount -t smbfs //linuxjoy@192.168.1.188/shared-context ~/mnt/shared-context
|
||
```
|
||
|
||
homes / Download 排障用(会话中曾用):
|
||
|
||
```bash
|
||
# 密码 URL 编码后 mount_smbfs
|
||
mount_smbfs "//linuxjoy:<urlencoded-pass>@192.168.1.188/homes" ~/mnt/nas-homes
|
||
mount_smbfs "//linuxjoy:<urlencoded-pass>@192.168.1.188/Download" ~/mnt/nas-download
|
||
```
|
||
|
||
### 2.2 VM
|
||
|
||
```fstab
|
||
192.168.1.188:/volume1/shared-context /mnt/shared-context nfs rsize=8192,wsize=8192,timeo=14,intr,nofail,x-systemd.automount 0 0
|
||
```
|
||
|
||
**必须** `nofail` + automount,避免 NAS 短暂不可达拖死开机。
|
||
|
||
### 2.3 joy 已有挂载探测
|
||
|
||
- `collect_infra`:devops 上 `/mnt/shared-context` 是否真挂载(过滤 rpc_pipefs 假阳性)
|
||
- `collect_mac_host`:Mac 侧 `df` → `nas_pct` / `nas_used` / `nas_total`
|
||
- 硬件 NAS:挂载三角(mac_ok / devops_ok)+ 写探针建议
|
||
|
||
---
|
||
|
||
## 3. DSM API 与 joy 采集(机身面)
|
||
|
||
### 3.1 凭据
|
||
|
||
```bash
|
||
# ~/.config/nas/dsm.env (chmod 600)
|
||
NAS_HOST=192.168.1.188
|
||
NAS_USER=linuxjoy
|
||
NAS_PASS=********
|
||
NAS_PORT_HTTPS=5001
|
||
```
|
||
|
||
sid 缓存:`~/.config/nas/dsm.sid`(登录成功后自动写)。
|
||
|
||
### 3.2 代码入口
|
||
|
||
| 组件 | 路径 |
|
||
|------|------|
|
||
| 采集 | `joy-cli/src/joy/dashboard/nas_dsm.py` → `collect_nas_dsm()` |
|
||
| 合并 | `collect.py` → `infra.nas.dsm` |
|
||
| UI | `joy-cli/src/joy/web/js/tabs/hardware.js` → section **硬件 → NAS** |
|
||
| 摸底笔记 | [`nas-dsm-observe.md`](./nas-dsm-observe.md) |
|
||
|
||
### 3.3 字段(`infra.nas.dsm`)
|
||
|
||
硬件 tab 在机身卡上展示:**卷 / 挂载 / 温度 / 健康 / 盘 / 池 / 网 / 会话 / SSH / UPS**。
|
||
2026-07-10 起增加:
|
||
|
||
| 字段 | 含义 |
|
||
|------|------|
|
||
| `terminal.enable_ssh` / `ssh_port` | DSM Terminal API |
|
||
| `ssh.ok` / `ssh.target` | Mac `ssh nas` BatchMode 公钥探测 |
|
||
|
||
复发告警文案指向 `linuxjoy/scripts/mac/nas-ssh.sh fix`。
|
||
|
||
### 3.3.1 字段明细(摘要)
|
||
|
||
```text
|
||
ok, host, model, hostname, dsm_ver, sys_temp_c, temp_warn, uptime,
|
||
cpu.{series,cores,load_1m/5m/15m}, mem_pct,
|
||
pool.{raid,status,disks[]},
|
||
volume.{path,fs,used_gb,total_gb,used_pct,status},
|
||
disks[].{name,model,temp_c,smart_status,status,size_gb,serial},
|
||
eth0.{ip,speed,status},
|
||
ups_usb, fan_mode, nfs_enabled, shares_n,
|
||
connections.{total,nfs,http},
|
||
terminal.{enable_ssh,enable_telnet,ssh_port},
|
||
ssh.{ok,target,error},
|
||
health_ok, attention[]
|
||
```
|
||
|
||
实现细节:
|
||
|
||
- 使用 **curl -sk** 调 `entry.cgi`(Python urllib 对本机 DSM TLS 偶发 EOF)
|
||
- 无凭据 / 登录失败 → 降级为挂载 df,并仍做 SSH 探测
|
||
- **密码永不进入** dashboard JSON
|
||
- SSH 探测:`ssh -o BatchMode=yes nas echo OK`(约 4s 超时)
|
||
|
||
### 3.4 硬件 UI 展示
|
||
|
||
- 卷用量(DSM 优先,Mac df 兜底)
|
||
- 挂载通道 mac/devops
|
||
- 系统温度 / 健康 / 内存 / load
|
||
- 双盘温度 + SMART
|
||
- **SSH**(服务开关 + 公钥探测 ✓/✕)
|
||
- RAID、网卡、会话数、UPS USB、NFS
|
||
- 告警:SMART 非 normal、温度高、挂载断、卷 ≥75% 等
|
||
|
||
---
|
||
|
||
## 4. 内容面建议(未全做自动 du)
|
||
|
||
| 层级 | 做什么 | 频率 |
|
||
|------|--------|------|
|
||
| L0 机身 | DSM API(已落地) | 1–5 min |
|
||
| L1 通道 | 挂载 + 连接数 + write 探针 | 同轮 |
|
||
| L2 内容 | 白名单目录 entry 数 / 日 `du` 缓存 | 日更;**禁止**每轮全盘扫 |
|
||
|
||
协作相关目录(`shared-context` 下,浅层探测曾成功):
|
||
`board` · `ai-context` · `backups` · `reports` · `alerts` · `audit` · `signals` · `vm-control` · `secrets`(**只报存在性,不读内容**)
|
||
|
||
---
|
||
|
||
## 5. SSH(已打通 · 2026-07-10)
|
||
|
||
### 5.1 日常
|
||
|
||
```bash
|
||
ssh nas 'hostname' # → feibisi-NAS
|
||
# linuxjoy 仓库运维入口(权威)
|
||
bash ~/Projects/linuxjoy/scripts/mac/nas-ssh.sh check
|
||
bash ~/Projects/linuxjoy/scripts/mac/nas-ssh.sh fix # 再挂时
|
||
# 手册
|
||
# linuxjoy docs/ops/nas-ssh.md
|
||
# linuxjoy docs/ops/nas.md
|
||
```
|
||
|
||
### 5.2 客户端(Mac)
|
||
|
||
`~/.ssh/config` Host `nas` / `feibisi-nas` / `ds224` → `linuxjoy@192.168.1.188`,密钥
|
||
`id_ed25519` + `nas_linuxjoy_ed25519`。DSM `enable_ssh=true` 端口 22。
|
||
|
||
### 5.3 根因(历史)
|
||
|
||
`authorized_keys` 曾为 **ACL + mode 0777** → OpenSSH 丢弃全部公钥;且 `PasswordAuthentication no`。
|
||
**不是**「没开 SSH / 漏加公钥」。SMB 写 `.ssh` 易再次打坏权限;FileStation Upload 常 error **119**。
|
||
|
||
### 5.4 修复固化
|
||
|
||
| 组件 | 位置 |
|
||
|------|------|
|
||
| Mac 入口 | `linuxjoy/scripts/mac/nas-ssh.sh` |
|
||
| root 脚本 | NAS `/volume1/Download/joy-fix-ssh-v2.sh`(源:`linuxjoy/scripts/nas/joy-fix-ssh.sh`) |
|
||
| root 任务 | DSM `joy-ssh-rootfix`(默认 disabled,手动 `fix`) |
|
||
| 日志 | `/volume1/Download/joy-ssh-fix.log` |
|
||
| 集群记忆 | cluster-recall **#4744**(lesson)**#4745**(config) |
|
||
|
||
期望权限:`.ssh` **700**,`authorized_keys` **600**,无 ACL(`synoacltool` → Linux mode)。
|
||
|
||
### 5.5 复发时
|
||
|
||
1. `bash .../nas-ssh.sh check`
|
||
2. 失败则 `fix`(deploy + root 任务 + 复查)
|
||
3. 勿用访达盲写 `authorized_keys`;改密钥用 `ssh nas` / `ssh-copy-id`
|
||
4. 可选 `nas-ssh.sh harden` 关闭密码登录
|
||
---
|
||
|
||
## 6. 备份与其它路径
|
||
|
||
| 路径/任务 | 说明 |
|
||
|-----------|------|
|
||
| `/volume1/Download/backups/forgejo/pull-backup.sh` | NAS 上定时拉 Forgejo 备份(用户 `linuxjoy` 脚本任务 id=8) |
|
||
| `linuxjoy` home `vm-backups` / `disaster-recovery` | 备份相关目录 |
|
||
| SnapshotReplication | 共享文件夹快照(含 shared-context) |
|
||
| ActiveBackup | 业务备份套件 |
|
||
|
||
kk-pc 二级备份见 linuxjoy `backup-to-kkpc` / ops 文档;**不替代** NAS 本体健康。
|
||
|
||
---
|
||
|
||
## 7. 安全
|
||
|
||
1. **聊天中曾出现过密码** → 建议 DSM 修改 `linuxjoy` 密码,并更新 `~/.config/nas/dsm.env`
|
||
2. 观测账号尽量保持:**能读监控 + FileStation**;写操作仅排障
|
||
3. 禁止把 `dsm.env`、authorized_keys 私钥、`secrets/` 内容提交 git
|
||
4. SSH 打通后优先 **公钥**;不要对公网开密码 SSH
|
||
5. joy dashboard **只读**;NAS 变更在 DSM
|
||
|
||
---
|
||
|
||
## 8. 相关文档索引
|
||
|
||
| 文档 | 内容 |
|
||
|------|------|
|
||
| 本文 `nas.md` | **总手册** |
|
||
| [`nas-dsm-observe.md`](./nas-dsm-observe.md) | API 摸底与字段草案 |
|
||
| linuxjoy `docs/setup/quick-rebuild.md` §8 | VM NFS fstab |
|
||
| linuxjoy `docs/infrastructure/nas-device-profile.md` | 设备档案 |
|
||
| linuxjoy `docs/ops/nas-ssh.md` / `nas.md` | **SSH 运维权威** + 总览 |
|
||
| linuxjoy `scripts/mac/nas-ssh.sh` | check / fix / harden |
|
||
| linuxjoy `docs/ops/ops-quickref.md` | 挂载丢失 + SSH 速查 |
|
||
| [`joy-shenzhou.md`](./joy-shenzhou.md) | 神州(公网生产)≠ NAS 粮仓 |
|
||
|
||
---
|
||
|
||
## 9. 验收清单
|
||
|
||
- [x] DSM API 可登录,机身字段可采
|
||
- [x] joy 硬件 NAS 展示 L0(`f6d5b06` 起)
|
||
- [x] Mac `Host nas` SSH config + 公钥写入 authorized_keys
|
||
- [x] **`ssh nas` 成功**(2026-07-10:清 ACL + chmod 600 + sshd 重启)
|
||
- [ ] 密码轮换 + 可选只读监控用户
|
||
- [ ] (可选)L1 写探针 + L2 白名单目录体积日更
|
||
- [ ] (可选)`nas-ssh.sh harden` 关密码登录;docker.sock 授权策略
|
||
|
||
---
|
||
|
||
*SSH 与 DSM API 双通道可用;硬件面板走 `collect_nas_dsm`(机身)+ SSH 探测(运维通道);写操作不进 joy。*
|