采集 Terminal API 与 BatchMode 公钥探测,硬件 tab 主卡精简(IP 常显、 DSM 版本进机身详情),明细用 hwFold;文档同步 SSH 已通与修复入口。
9.8 KiB
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(当前生产形态)
192.168.1.188:/volume1/shared-context → ~/mnt/shared-context (NFS)
备用 SMB(文档历史):
mount -t smbfs //linuxjoy@192.168.1.188/shared-context ~/mnt/shared-context
homes / Download 排障用(会话中曾用):
# 密码 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
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 凭据
# ~/.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 |
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 字段明细(摘要)
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 日常
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 复发时
bash .../nas-ssh.sh check- 失败则
fix(deploy + root 任务 + 复查) - 勿用访达盲写
authorized_keys;改密钥用ssh nas/ssh-copy-id - 可选
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. 安全
- 聊天中曾出现过密码 → 建议 DSM 修改
linuxjoy密码,并更新~/.config/nas/dsm.env - 观测账号尽量保持:能读监控 + FileStation;写操作仅排障
- 禁止把
dsm.env、authorized_keys 私钥、secrets/内容提交 git - SSH 打通后优先 公钥;不要对公网开密码 SSH
- joy dashboard 只读;NAS 变更在 DSM
8. 相关文档索引
| 文档 | 内容 |
|---|---|
本文 nas.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 |
神州(公网生产)≠ NAS 粮仓 |
9. 验收清单
- DSM API 可登录,机身字段可采
- joy 硬件 NAS 展示 L0(
f6d5b06起) - Mac
Host nasSSH config + 公钥写入 authorized_keys 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。