Files
karuo-ai/01_卡资(金)/金仓_存储备份/群晖NAS管理/SKILL.md

37 KiB
Raw Blame History

name, description, triggers, owner, group, version, updated
name description triggers owner group version updated
群晖NAS管理 群晖NAS矩阵运维与Docker容器管理 NAS、群晖、Docker、Synology、QuickConnect、Time Machine、时间机器、DiskStation.local、备份红点 金仓 1.2 2026-07-14

群晖NAS管理

公司NAS文档化管理铁律

公司CKBNAS的唯一导航入口是公司NAS总控索引

每一次控制公司NAS必须执行

  1. 操作前读取总控索引、路径与作用登记册最近迭代日志
  2. 明确公司CKBNAS与家里Station的边界确认主机名、地址和目标路径。
  3. 操作后更新容量、目录、容器、端口、任务状态、故障经验和验收结果。
  4. 新目录必须登记用途;新服务必须登记入口、端口、数据路径和恢复方式。
  5. 文档链接必须使用相对路径确保Obsidian、Cursor、Codex和其他AI都能导航。

飞书公司文档归档

当用户要求整理、备份或下载飞书知识库与员工文档时,执行飞书公司文档归档工作流

  • 只归档当前用户确实有权访问的内容,不绕过员工或跨租户权限。
  • 必须先生成完整清单再按类型导出最后同步NAS并生成Markdown导航。
  • “完整下载”“仅元数据”“失败”必须分开统计,不能把链接清单当成已下载。
  • 遇到缺少scope时记录准确权限遇到限频时退避重试不批量轰击飞书接口。

统一管理卡若私域数字底座的NAS矩阵支持DSM、Docker、虚拟机、MongoDB、Qdrant、宝塔中控等核心服务。


快速入口(复制即用)

Mac 远程 Docker 快捷方式(容器在 NAS 跑、本机只看):bash 群晖NAS管理/scripts/setup_ckbnas_docker_remote_mac.sh → 见 参考资料/CKBNAS_本机Docker远程快捷方式.md

公司 NAS 真源参考资料/CKBNAS_公司NAS登记册.md2026-06-01 双网卡 + frp 验收)

内网访问

服务 公司局域网 家里 110 网段 备注
DSM http://192.168.1.201:5000 http://192.168.110.101:5000 主机名 CKBNAS
MongoDB mongodb://admin:admin123@192.168.1.201:27017/ 同左IP 改 110.101 AI微信数据库
Qdrant http://192.168.1.201:6333 http://192.168.110.101:6333 RAG
Gitea http://192.168.1.201:3000 http://192.168.110.101:3000 CKB Git
Ollama http://192.168.1.201:11434 http://192.168.110.101:11434 本地模型
bt-hub http://192.168.1.201:8890 IP 改 110.101 宝塔中控
SSH ssh ckbnas-company ssh ckbnas-home ~/.ssh/config

腾讯云 → NAS计划任务必看

说明
DSM 控制面板 → 任务计划腾讯云数据库备份_*
Skill G13a 01_卡资/金仓_存储备份/云数据库同步/SKILL.md
NAS 目录 /volume1/homes/fnvtk/tencent_mysql_backup
实时状态 reports/dsm_status.txt

规则:NAS 定时备份/同步类任务必须注册 DSM 计划任务(可见上次结果),见 G13a Skill §〇。

外网访问frp · open.quwanzhi.com · 东京节点)

服务 地址 说明
DSM HTTP http://open.quwanzhi.com:5200 非 5000
DSM HTTPS https://open.quwanzhi.com:5201
SSH ssh -p 22201 fnvtk@open.quwanzhi.com Git 同端口
Gitea http://open.quwanzhi.com:13000 非 3000
Ollama http://open.quwanzhi.com:11401 非 11434
Gateway http://open.quwanzhi.com:8201
QuickConnect https://udbfnvtk.quickconnect.cn ID: udbfnvtk

2026-07-20真源open.quwanzhi.com已迁往东京43.165.178.230公司NAS客户端使用参考资料/公司CKBNAS_东京FRP配置_20260720.toml

frpc 启动:ssh ckbnas-home 'bash ~/frp-standalone/start-frpc-main.sh'
volume1 只读/I/O 错误时:改 bash scripts/network_watchdog/ckbnas_frpc_rescue.sh/root/frp-rescue,见 evolution 2026-06-06。Gitea 推送见 Gitea管理 Skill


Gotchas排查速查

日期 现象 处理
2026-06-06 SHR 池 crashed/degradeDSM 报硬盘严重但 SMART 全 PASSED 软件脱队非坏盘DSM 在线重组 → degrade 后 mdadm --add /dev/md2 /dev/sata2p5禁用 ckbnas_sata4_offline.shrecovery ≈8h(读 progress.remaining_time 或 mdstat finish=
2026-06-06 外网 :5200 全断,内网 DSM 正常;start-frpc-main.sh → Input/output error volume1 ro + BTRFS 错误frpc 改 /root/frp-rescue/tmp noexec 不能跑二进制
2026-06-06 recovery 期间 SSH/DSM/Docker 超时、外网端口全断 阵列重建占满 IO勿再 synopkg start;等 recovery ≥50% 后 ckbnas_restore_services_no_config.sh(只 start 不改配置)
2026-06-06 远程登录密码失败 SSH/DSM 密码 Zhiqun1984Z 大写),非全小写
2026-06-03 外网 :3100 502 frpc 未运行;本机 127.0.0.1:3100 仍 200 → 拉 frpc

CKBNAS 安全恢复基线

这段是 2026-06-09 的复盘沉淀:RAID md2 已恢复为 [UUUU],但 ContainerManager/Docker 一旦默认拉起,就会把系统从“可用”拖回“假在线/掉线/重启”。

默认策略

  1. ContainerManager 默认不自动启动。
  2. Docker 容器默认全部 restart=no,仅在确认单容器安全后再单独放行。
  3. 启动顺序只保留基础访问链路:SMBServiceDSM 5000/5001SSH
  4. RAID 限速固定保持在 speed_limit_min=5000speed_limit_max=70000

已验证的故障触发

  • ContainerManager 启动后,系统内存可用空间曾从约 6.6GB 迅速掉到 147MB
  • 大量容器的 RestartPolicy=always / unless-stopped 会在 ContainerManager 启动时批量回拉。
  • 典型假在线表现:ping 通、22 端口通,但 SSH banner 超时、5000/5001 超时。
  • 启动日志里反复出现 SATA link down / softreset failed / SRST fail / hard resetting link,优先怀疑硬件链路/供电/背板,而不是 RAID 速度本身。

恢复顺序

  1. 先抢 SSH 窗口,确认 md2=[UUUU]5000/5001 可访问、内存可用量正常。
  2. 只恢复 SMBService
  3. 需要恢复 Docker 时,先改容器 hostconfig.jsonRestartPolicyno,并先只起一个轻量容器做 5-10 分钟验收。
  4. ollama、AI 大模型容器、always 自启容器一律最后恢复,且必须分批。
  5. 一旦出现“假在线”或 SSH banner 超时,立刻回退 Docker保 DSM/SSH。

回滚命令提醒

  • 停 Docker 相关进程:dockerdcontainerddocker-proxycontainer-managersynocontainerd
  • 保持 allowlist 最小化:只保 SMBService
  • 不要在未验证稳定前恢复 ContainerManager 的默认自启

错误沉淀与迭代

  • Docker 自动拉起导致内存暴涨:ContainerManagerollamakaruo-ai 必须默认停用。
  • 假在线:ping 通但 SSH banner / 5000 / 5001 超时,说明系统后台已经卡住,不能继续起大包。
  • SATA 反复重置:出现 SATA link downsoftreset failedSRST fail 时,先回退 Docker再查背板/供电/盘槽。
  • 迭代顺序固定:先保 SMBService 和 DSM 入口,再恢复轻服务,最后才考虑模型类容器。
  • 每次调整容器后都要看三项内存可用量、SSH banner、5000/5001 响应时间。

核心环境

私域银行 / 触客宝部署登记

服务 NAS 地址 本机副本 验证状态
触客宝客服端 http://192.168.110.101:3101/pc/weChat http://192.168.110.47:3101/pc/weChat NAS 与本机均 HTTP 200NAS 为主部署,本机为开发/验收副本
工作手机 SDK NAS 工作手机链路,目标端口 8899 本机当前映射 192.168.110.47:8899 需按真机 Hook/WS/聊天闭环单独验收

触客宝主部署以 NAS 192.168.110.101:3101 为准;不要因本机 touchkebao-web 容器存在就把本机认定为生产真源。Web Station 只能承载静态页面SDK/BFF/WebSocket 仍需按 Docker/服务端链路验收。

NAS硬件信息

项目 配置
型号 Synology DS1825+ (8盘位)
CPU AMD Ryzen Embedded V1500B (4核8线程)
内存 8GB DDR4 ECC (可扩展至32GB)
存储 21TB 可用 (BTRFS)
网络 双千兆网口 + PCIe扩展槽

NAS节点信息

节点 内网IP 外网入口 主机名 用途
NAS-2 (主节点 CKBNAS) 公司 192.168.1.201家里 192.168.110.101 open.quwanzhi.com DSM :5200 · QC udbfnvtk CKBNAS 存储与容器主控
NAS-1 (备用) 192.168.1.200 - - 管理节点

账号凭证

# NAS-2 主节点 (192.168.1.201)
主账户: fnvtk / zhiqun1984
备用账户: admin / zhiqun1984

# NAS-1 备用节点 (192.168.1.200)
账户: admin / zhiqun1984

# MongoDB (Docker容器)
默认用户: admin / admin123
认证数据库: admin

⚠️ 重要提示:密码全部为小写 zhiqun1984MongoDB默认账号密码可通过脚本自动获取。

关键端口

端口 服务 说明
5000 DSM (HTTP) 管理界面
5001 DSM (HTTPS) 加密访问
22 SSH 远程命令
27017 MongoDB 数据库
6333 Qdrant 向量检索
8890 bt-hub 宝塔中控
8888 本地宝塔 网站管理

Docker 容器分组约定(本机与 NAS 统一)

在 NAS 或本机编排 Docker 时须遵守卡若AI 统一约定:

  • datacenter 分组:所有数据库相关服务MongoDB、Redis、MySQL、向量库等归入 datacenter 编排,编排见 卡若AI 01_卡资/金仓_存储备份/datacenter/
  • website 分组:网站类服务(神射手、玩值电竞 Web 等)归入 website,通过网络连接 datacenter 内数据库。
  • 详见:运营中枢/工作台/唯一MongoDB约定.md本地项目启动 Skill 内「Docker 部署约定」。

CKBNAS公司 NAS专用Container Manager 显示 中文项目名(如 01-数据中心-mongodb),真源 参考资料/CKBNAS_Docker容器分组登记册.md;批量写入 scripts/apply_ckbnas_docker_groups.py --apply


一键操作(卡若习惯)

飞书妙记全量视频归档

飞书全部妙记视频的清单、分类和媒体源由W08智能纪要负责Download Station、50%限速、断点续传和台账备份由本Skill负责。执行规范见

../../../02_卡人/水桥_平台对接/智能纪要/参考资料/飞书妙记全量NAS归档工作流.md

NAS根目录固定为/volume1/video/飞书妙记归档/创建任务前必须按妙记Token、任务URI、文件名和NAS现存文件四层去重。

1. SSH快速连接

# 方式1: 配置别名后直接用(推荐)
ssh nas

# 方式2: 完整命令(首次使用)
ssh -o KexAlgorithms=+diffie-hellman-group1-sha1 \
    -o Ciphers=+aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc \
    -o StrictHostKeyChecking=no \
    fnvtk@192.168.1.201

# 方式3: sshpass自动登录
sshpass -p 'zhiqun1984' ssh -o KexAlgorithms=+diffie-hellman-group1-sha1 \
    -o Ciphers=+aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc \
    fnvtk@192.168.1.201

一劳永逸:添加到 ~/.ssh/config

Host nas nas2
    HostName 192.168.1.201
    User fnvtk
    KexAlgorithms +diffie-hellman-group1-sha1
    Ciphers +aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
    StrictHostKeyChecking no

Host nas1
    HostName 192.168.1.200
    User admin
    KexAlgorithms +diffie-hellman-group1-sha1
    Ciphers +aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

2. Docker容器管理

# 群晖Docker路径必须用绝对路径
DOCKER="/volume1/@appstore/ContainerManager/usr/bin/docker"
COMPOSE="$DOCKER compose"

# 查看运行中容器
ssh nas "$DOCKER ps"

# 查看所有容器(含停止的)
ssh nas "$DOCKER ps -a"

# 查看容器资源占用
ssh nas "$DOCKER stats --no-stream"

# 重启容器
ssh nas "$DOCKER restart mongodb"

# 查看日志
ssh nas "$DOCKER logs -f --tail 100 mongodb"

# 进入容器
ssh nas "$DOCKER exec -it mongodb bash"

3. 虚拟机管理(按需启动)

虚拟机默认不自动启动节省NAS资源。需要时手动启动。

# ===== Windows 虚拟机 =====
# 启动
ssh nas "cd /volume1/docker/windows-vm && echo 'zhiqun1984' | sudo -S /volume1/@appstore/ContainerManager/usr/bin/docker compose up -d"

# 停止
ssh nas "cd /volume1/docker/windows-vm && echo 'zhiqun1984' | sudo -S /volume1/@appstore/ContainerManager/usr/bin/docker compose down"

# 访问: http://192.168.1.201:8006 (Web VNC)
# RDP: 192.168.1.201:3389 (安装完成后)

# ===== macOS 虚拟机 =====
# 启动
ssh nas "cd /volume1/docker/macos-vm && echo 'zhiqun1984' | sudo -S /volume1/@appstore/ContainerManager/usr/bin/docker compose up -d"

# 停止
ssh nas "cd /volume1/docker/macos-vm && echo 'zhiqun1984' | sudo -S /volume1/@appstore/ContainerManager/usr/bin/docker compose down"

# 访问: http://192.168.1.201:8007 (Web VNC)
# VNC: vnc://192.168.1.201:5901

# ===== 查看虚拟机状态 =====
ssh nas "/volume1/@appstore/ContainerManager/usr/bin/docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' | grep -E 'windows-vm|macos-vm'"

虚拟机配置参考

VM 镜像 内存 CPU 存储 端口
Windows dockurr/windows 4GB 2核 64GB 8006, 3389
macOS dockurr/macos 4GB 2核 64GB 8007, 5901

macOS noVNC 卡顿:见 references/noVNC_macOS_VM流畅度优化.md。优先用优化 URLhttp://IP:8007/?qualityLevel=3&compressionLevel=6&resize=scale

macOS VM 导出到本机(打包下载到「下载」文件夹)

将 NAS 上 Docker 里的 macOS 虚拟机数据打包、实时显示大小/用时、下载到当前 Mac 的「下载」文件夹,并生成使用说明(含在 Windows / Linux 上运行方式)。

# 内网(与 CKB NAS 同网时)
/Users/karuo/Documents/个人/卡若AI/01_卡资/金仓_存储备份/群晖NAS管理/scripts/export_macos_vm_to_downloads.sh

# 外网(用 frp 穿透的 SSH
export NAS_HOST=open.quwanzhi.com NAS_PORT=22201
/Users/karuo/Documents/个人/卡若AI/01_卡资/金仓_存储备份/群晖NAS管理/scripts/export_macos_vm_to_downloads.sh
  • 需要本机已安装 sshpassbrew install sshpass)。
  • 导出物:~/Downloads/macos_vm_export_日期时间.tar.gz + ~/Downloads/macos_vm_使用说明.md
  • 说明里含:在 Linux/NAS 上挂载运行、传到 Windows 的注意点(需 Linux 虚拟机或 WSL2 等)。

docker-compose 示例 (Windows)

# /volume1/docker/windows-vm/docker-compose.yml
version: "3.8"
services:
  windows:
    image: dockurr/windows
    container_name: windows-vm
    environment:
      - VERSION=2022
      - RAM_SIZE=4G
      - CPU_CORES=2
      - DISK_SIZE=64G
    ports:
      - "8006:8006"
      - "3389:3389"
    volumes:
      - /volume1/vm/windows:/storage
    devices:
      - /dev/kvm
    cap_add:
      - NET_ADMIN
    restart: "no"

docker-compose 示例 (macOS) — 流畅度优化版

# /volume1/docker/macos-vm/docker-compose.yml
version: "3.8"
services:
  macos:
    image: dockurr/macos
    container_name: macos-vm
    environment:
      - VERSION=ventura
      - RAM_SIZE=4G              # 3G→4G 提升响应
      - CPU_CORES=2              # 1核→2核 减轻卡顿
      - DISK_SIZE=64G
    ports:
      - "8007:8006"
      - "5901:5900"
    volumes:
      - /volume1/vm/macos:/storage
    devices:
      - /dev/kvm
    cap_add:
      - NET_ADMIN
    restart: "no"
    deploy:
      resources:
        limits:
          memory: 4500M

4. Cursor 网页版Web IDE

在NAS上部署Cursor通过浏览器远程访问编程。

方案对比

方案 镜像 特点 推荐场景
cursor-container recluzegeek/cursor-container 真正的Cursor带AI功能 想用Cursor AI
code-server linuxserver/code-server VS Code网页版更稳定 纯编辑需求

一键部署 Cursor 网页版

# ===== 步骤1: 创建目录 =====
ssh nas "mkdir -p /volume1/docker/cursor-web /volume1/projects"

# ===== 步骤2: 创建docker-compose.yml =====
ssh nas "cat > /volume1/docker/cursor-web/docker-compose.yml << 'EOF'
version: \"3.8\"
services:
  cursor:
    image: recluzegeek/cursor-container
    container_name: cursor-web
    environment:
      - APP_USER_ID=1026
      - APP_GROUP_ID=100
      - DISPLAY_WIDTH=1920
      - DISPLAY_HEIGHT=1080
    ports:
      - \"5800:5800\"
      - \"5900:5900\"
    volumes:
      - /volume1/projects:/config/workspace
      - /volume1/docker/cursor-web/config:/config
    restart: unless-stopped
EOF"

# ===== 步骤3: 启动 =====
ssh nas "cd /volume1/docker/cursor-web && echo 'zhiqun1984' | sudo -S /volume1/@appstore/ContainerManager/usr/bin/docker compose up -d"

# ===== 步骤4: 查看状态 =====
ssh nas "/volume1/@appstore/ContainerManager/usr/bin/docker ps | grep cursor"

访问 Cursor 网页版

🌐 浏览器访问: http://192.168.1.201:5800
📺 VNC客户端: vnc://192.168.1.201:5900

外网访问需配置端口转发或用Tailscale:
https://udbfnvtk.quickconnect.cn → 仅DSM不含Docker端口

Cursor 常用操作

# 启动
ssh nas "cd /volume1/docker/cursor-web && echo 'zhiqun1984' | sudo -S /volume1/@appstore/ContainerManager/usr/bin/docker compose up -d"

# 停止
ssh nas "cd /volume1/docker/cursor-web && echo 'zhiqun1984' | sudo -S /volume1/@appstore/ContainerManager/usr/bin/docker compose down"

# 重启
ssh nas "echo 'zhiqun1984' | sudo -S /volume1/@appstore/ContainerManager/usr/bin/docker restart cursor-web"

# 查看日志
ssh nas "/volume1/@appstore/ContainerManager/usr/bin/docker logs -f cursor-web"

备选方案: code-server (VS Code网页版)

如果cursor-container不稳定可用更成熟的code-server

# 创建目录
ssh nas "mkdir -p /volume1/docker/code-server /volume1/projects"

# 创建配置
ssh nas "cat > /volume1/docker/code-server/docker-compose.yml << 'EOF'
version: \"3.8\"
services:
  code-server:
    image: linuxserver/code-server:latest
    container_name: code-server
    environment:
      - PUID=1026
      - PGID=100
      - TZ=Asia/Shanghai
      - PASSWORD=zhiqun1984
      - SUDO_PASSWORD=zhiqun1984
      - DEFAULT_WORKSPACE=/config/workspace
    ports:
      - \"8443:8443\"
    volumes:
      - /volume1/docker/code-server/config:/config
      - /volume1/projects:/config/workspace
    restart: unless-stopped
EOF"

# 启动
ssh nas "cd /volume1/docker/code-server && echo 'zhiqun1984' | sudo -S /volume1/@appstore/ContainerManager/usr/bin/docker compose up -d"

# 访问: http://192.168.1.201:8443
# 密码: zhiqun1984

配置说明

配置项 说明
端口 5800 (Web), 5900 (VNC) Cursor网页版
端口 8443 code-server
工作目录 /volume1/projects 项目文件存放
分辨率 1920x1080 可在环境变量调整

5. MongoDB快速操作

# 【方式1】运行自动检查脚本推荐
python3 /Users/karuo/Documents/个人/卡若AI/01_系统管理/群晖NAS管理/scripts/get_mongodb_info.py

# 【方式2】手动连接字符串
mongodb://admin:admin123@192.168.1.201:27017/

# 【方式3】进入MongoDB Shell
ssh nas "/volume1/@appstore/ContainerManager/usr/bin/docker exec -it mongodb mongosh -u admin -p admin123 --authenticationDatabase admin"

# MongoDB常用命令
show dbs                          # 列出所有数据库
use ai_wechat                     # 切换数据库
show collections                  # 列出集合
db.users.find().limit(5)          # 查询数据
db.stats()                        # 数据库状态
exit                              # 退出

# Python连接示例
from pymongo import MongoClient
client = MongoClient("mongodb://admin:admin123@192.168.1.201:27017/")
print(client.server_info())

# 检查MongoDB状态
ssh nas "/volume1/@appstore/ContainerManager/usr/bin/docker ps | grep mongo"
ssh nas "/volume1/@appstore/ContainerManager/usr/bin/docker restart mongodb"

5. 系统状态检查

# 内存
ssh nas "free -h"

# 磁盘
ssh nas "df -h | grep volume"

# CPU负载
ssh nas "uptime"

# 温度
ssh nas "cat /sys/bus/hwmon/devices/hwmon0/temp1_input" | awk '{print $1/1000"°C"}'

# Docker占用
ssh nas "/volume1/@appstore/ContainerManager/usr/bin/docker system df"

6. 文件同步MacBook ↔ NAS

# 上传到NAS
rsync -avz --progress /本地路径/ fnvtk@192.168.1.201:/volume1/目标路径/

# 从NAS下载
rsync -avz --progress fnvtk@192.168.1.201:/volume1/源路径/ /本地路径/

# 排除node_modules等大目录
rsync -avz --progress --exclude='node_modules' --exclude='.git' \
    /本地项目/ fnvtk@192.168.1.201:/volume1/projects/

宝塔中控 (bt-hub)

统一管理所有宝塔服务器的中控系统。

访问入口

内网: http://192.168.1.201:8890
API文档: http://192.168.1.201:8890/docs

核心功能

  • 服务器资产管理: 添加/删除/查询宝塔服务器
  • 统一API代理: 自动生成宝塔鉴权参数request_time/request_token
  • 批量任务执行: 一键操作多台服务器

已接入服务器

服务器 IP 用途
存客宝 42.194.245.239 私域银行
kr宝塔 43.139.27.93 Node/网关

DSM API调用

快速认证

import requests

NAS_IP = "192.168.1.201"
USERNAME = "fnvtk"
PASSWORD = "zhiqun1984"

# 登录获取sid
login_url = f"http://{NAS_IP}:5000/webapi/auth.cgi"
params = {
    "api": "SYNO.API.Auth",
    "version": "3",
    "method": "login",
    "account": USERNAME,
    "passwd": PASSWORD,
    "session": "FileStation",
    "format": "sid"
}
response = requests.get(login_url, params=params)
sid = response.json()["data"]["sid"]
print(f"登录成功SID: {sid[:20]}...")

常用API

API 用途 示例
SYNO.API.Auth 登录认证 获取sid
SYNO.FileStation.List 文件列表 浏览目录
SYNO.FileStation.Upload 上传文件 推送文件
SYNO.FileStation.Download 下载文件 拉取文件
SYNO.DSM.Info 系统信息 型号/温度

Python库推荐

# 安装
pip install synology-api

# 使用
from synology_api import filestation

fs = filestation.FileStation(
    ip_address='192.168.1.201',
    port='5000',
    username='fnvtk',
    password='zhiqun1984',
    secure=False,
    cert_verify=False
)

# 列出共享文件夹
shares = fs.get_list_share()
print(shares)

目录结构

/volume1/
├── docker/              # Docker容器配置
│   ├── windows-vm/      # Windows虚拟机配置
│   ├── macos-vm/        # macOS虚拟机配置
│   ├── mongodb/         # MongoDB配置
│   └── qdrant/          # Qdrant配置
├── vm/                  # 虚拟机磁盘存储
│   ├── windows/         # Windows虚拟磁盘
│   └── macos/           # macOS虚拟磁盘
├── database/            # 数据库数据存储
├── assets/              # 企业数字资产(RAG语料)
├── homes/               # 用户目录
└── @appstore/           # 群晖套件
    └── ContainerManager/usr/bin/docker  # Docker命令

Docker容器分类

虚拟机与开发环境(按需启动)

容器名称 中文说明 功能 端口 状态
windows-vm Windows虚拟机 Windows Server 2022 远程桌面 8006, 3389 按需
macos-vm macOS虚拟机 macOS Ventura 远程桌面 8007, 5901 按需
cursor-web Cursor网页版 浏览器内编程(带AI) 5800, 5900 按需
code-server VS Code网页版 浏览器内编程(备选) 8443 按需

内部服务(常驻运行)

容器名称 中文说明 功能 端口
mongodb MongoDB数据库 AI微信数据存储 27017
qdrant Qdrant向量数据库 RAG向量检索 6333, 6334

外部服务(常驻运行)

容器名称 中文说明 功能 端口
rustdesk-hbbs RustDesk信令服务 远程桌面信令 21115, 21116
rustdesk-hbbr RustDesk中继服务 远程桌面中继 21117, 21119

常见问题

Q1: SSH连接被拒绝

# 错误: no matching key exchange method found
# 原因: 群晖使用旧版SSH算法
# 解决: 添加 -o KexAlgorithms=+diffie-hellman-group1-sha1

Q2: Docker命令找不到

# 错误: docker: command not found
# 原因: 群晖Docker不在PATH中
# 解决: 使用绝对路径
/volume1/@appstore/ContainerManager/usr/bin/docker ps

Q3: 权限不足

# sudo需要密码
echo 'zhiqun1984' | sudo -S <command>

# 或将用户加入docker组
sudo synogroup --add docker fnvtk

Q4: 外网无法访问

1. 使用QuickConnect: https://udbfnvtk.quickconnect.cn
2. 或配置端口转发路由器映射5000端口
3. 检查DSM > 控制面板 > 外部访问 > QuickConnect是否启用

Q5: MongoDB连接超时

# 检查容器状态
ssh nas "/volume1/@appstore/ContainerManager/usr/bin/docker ps | grep mongo"

# 重启MongoDB
ssh nas "/volume1/@appstore/ContainerManager/usr/bin/docker restart mongodb"

# 检查端口监听
ssh nas "netstat -tlnp | grep 27017"

CKBNAS · Time Machine → NetBackup110.101 · 长期方案)

真源进度:开发文档/TimeMachine_公司NAS切换进度.md

部署清单(①~⑦)

内容 脚本/验收
Mac + CKBNAS 同 LAN/VLANNAS 固定 110.101 ping 192.168.110.101
Mac 网线,关 VPNDSM :5000 可开 curl -m3 http://192.168.110.101:5000
DSMNetBackup 专卷 + SMB3 + TM + Bonjour SSH ckbnas-home 或 DSM UI
Mac系统设置→时间机器→CKBNAS/NetBackup→使用现有备份→不加密 tmutil destinationinfo
nsmb + 凭据 + 提速 见下「一键部署」
guardian LaunchAgent launchctl list | grep timemachine
验收 NAS du 增长 + tmutil latestbackup 有日期

VPN 绕开(强制 · 仅局域网/私网不走 TUN

铁律私有网段10/8、172.16/12、192.168/16、127/8 等)禁止走 Clash TUN公网仍走代理mode: rule,非 Global/DIRECT 全部。NAS/TM 走 192.168.110.101 局域网。

# 永久Clash Merge + route-exclude + 启动自动应用)
bash 01_卡资/金仓_存储备份/群晖NAS管理/scripts/apply_clash_lan_direct.sh

# 备份前双保险110 静态路由)
bash 01_卡资/金仓_存储备份/群晖NAS管理/scripts/tm_vpn_bypass_lan.sh
  • 真源:参考资料/clash_lan_direct_merge.yaml · TimeMachine_VPN绕开铁律.md
  • guardian 每 10 分钟自动调用Clash 开 TUN 时注入 110 网段静态路由 + API 切 rule

一键部署(⑤⑥ + 启备)

KARUO_SUDO=01_卡资/金仓_存储备份/脚本/karuo_sudo.sh
NSMB=01_卡资/金仓_存储备份/群晖NAS管理/参考资料/nsmb.conf_tahoe_timemachine

bash 群晖NAS管理/scripts/tm_vpn_bypass_lan.sh
bash 群晖NAS管理/scripts/tm_netbackup_cred_sync.sh -p NetBackup
bash $KARUO_SUDO cp "$NSMB" /etc/nsmb.conf
bash 卡若Ai的文件夹/4、火_工具开发/脚本/tm_lan_speed_boost.sh
launchctl load ~/Library/LaunchAgents/com.karuo.timemachine.guardian.plist 2>/dev/null || true
tmutil startbackup --auto

监管:卡若Ai的文件夹/4、火_工具开发/脚本/tm_persistent_guardian.sh · 日志 ~/Library/Logs/karuo_tm_guardian.log

提速(非多线程)卡若Ai的文件夹/4、火_工具开发/脚本/tm_speed_optimize.sh · 说明 参考资料/TimeMachine_提速与并行说明.md


时间机器快照保护(铁律 · 强制 · 2026-06-11

真源:.cursor/rules/timemachine-snapshot-protection.mdc · 红线 运营中枢/参考资料/卡若AI异常处理与红线.md §二·4

禁止(无用户当轮明文授权) 允许
thinlocalsnapshots / deletelocalsnapshots / tmutil delete tmutil statuslistlocalsnapshots(只读)
删 NAS sparsebundle、Backups.backupdb、本地 TM 快照 stopbackupstartbackup 重启任务
为腾空间或修卡住而清快照 tm_vpn_bypass_lan.shtm_speed_optimize.sh(不删快照)
擅自跑 time_machine_cleanup_interrupted.sh 盘满时只报告快照占用,由卡若决定是否清理

含糊的「修复时间机器」不构成删快照授权。


Time Machine / 家里 DiskStation 备份错误(全自动处理)

适用:系统设置 → 时间机器 → 「共享 - DiskStation.local」红点、提示「正在等待完成第一次备份」。

处理原则

  • 能命令行自动做的:直接执行,不追问用户。
  • 做不了的由执行者卡若AI/卡资)读取本 Skill 指定的参考资料按步骤处理,不向用户索要材料。
  • 解决后:运行验证脚本确认;若已解决,把本次处理要点追加到本 Skill 或 参考资料/Time_Machine_DiskStation_错误排查.md

1. 全自动检测(先执行)

# 本机执行(与家里 NAS 同网时)
/Users/karuo/Documents/个人/卡若AI/01_卡资/金仓_存储备份/群晖NAS管理/scripts/time_machine_diskstation_auto.sh

脚本会:检查 192.168.110.29 连通性、DSM 5000 与 SMB 端口、本机 Time Machine 目标;若不可达或端口未开,会输出参考资料路径,由执行者按材料处理。

2. 无法自动时的处理(不追问用户)

执行者直接读取并按以下材料操作,不向用户要任何信息:

材料 路径
Time Machine 排查步骤 01_卡资/金仓_存储备份/群晖NAS管理/参考资料/Time_Machine_DiskStation_错误排查.md
  • NAS 端:在 DSMhttp://192.168.110.29:5000按材料「一、NAS 端」检查:启用 Time Machine、SMB 高级SMB3/租约/持久句柄、Bonjour、共享文件夹权限与回收站、空间与配额。
  • Mac 端按材料「二、Mac 端」移除并重新添加备份磁盘、必要时用 smb://192.168.110.29/共享名 连接后再选为备份目标。

家里 NAS 凭证与公司 NAS 不同,若需登录 DSM见双 NAS 区分文档或本 Skill 中「家里 NAS」相关说明admin / zhiqun1984小写

3. 解决后验证与 Skill 更新

  • 验证:再次运行上面的 time_machine_diskstation_auto.sh,确认网络与端口正常;在系统设置中确认红点消失或显示「正在备份」。
  • 更新 Skill:若本次通过某一步(如 DSM 某选项、Mac 重选磁盘)解决问题,将该要点追加参考资料/Time_Machine_DiskStation_错误排查.md 或本小节,便于下次全自动/半自动复用。

4. 回家自动挂载并触发备份

  • 适用:用户一回家连上家里网络,就希望 Time Machine 自动备份到 DiskStation.local / Backup
  • 脚本:scripts/time_machine_home_auto.sh
  • 机制:每 10 分钟检查一次;若能连通 192.168.110.29,会卸载用户态重复挂载、清理 *.sparsebundle 冗余,再执行 tmutil startbackup --auto --destination <家里目标ID>不删办公室 NetBackup 目标)。
  • 双目标在家备份tmutil startbackup --auto --destination A2AD5AA6-E6F7-4C6D-A014-ACCCE4FEDE74;勿与用户态 mount_smbfs 同共享双挂(会 TARGETVOL_NOT_MOUNTED)。
  • 中断目录:若日志 Structure has wrong type + 卷内全是 *.interrupted,运行 scripts/time_machine_cleanup_interrupted.sh(需管理员密码,只删失败半成品,不删 sparsebundle/目标盘)。
  • LaunchAgentscripts/com.karuo.time_machine_home_auto.plist
  • 安装后无需手动点系统设置;前提是 Time Machine 目标已经配置为家里 NAS

家里 NAS 速查Time Machine 用)

项目
内网 IP 192.168.110.29
主机名 DiskStation.local
DSM http://192.168.110.29:5000
账号 admin密码见上小写

家里 NAS开辟约 1TB 备份盘 · Mac 当硬盘用 + 时间机器

需求:在群晖(家里 DiskStation上开辟约 1000GB 空间,在 Mac 上挂载成像真实硬盘,可用于时间机器 + 日常读写。

  • 操作指南参考资料/群晖1TB备份盘_Mac挂载与时间机器.mdNAS 新建共享 → 开 Time Machine → Mac 挂载 → 时间机器选盘 → 可选开机自动挂载)
  • 一键挂载(内网优先,外网走 frp 4452
    /Users/karuo/Documents/个人/卡若AI/01_卡资/金仓_存储备份/群晖NAS管理/scripts/mount_diskstation_1tb.sh
    
  • 挂载点:~/DiskStation-1TB;新建共享名若为 MacBackup,可执行:MACBACKUP_SHARE=MacBackup ./scripts/mount_diskstation_1tb.sh
  • 开机自动挂载:复制 scripts/com.karuo.mount_diskstation_1tb.plist~/Library/LaunchAgents/launchctl load,详见操作指南。

运维规范

安全准则

  1. 禁止明文Token: 敏感信息用环境变量
  2. IP白名单: 宝塔API只允许NAS访问
  3. 定期备份: 每周备份Docker配置和数据库

操作流程

  1. 修改前: 阅读需求文档
  2. 修改后: 更新迭代记录
  3. 测试后: 再提交

NAS核心任务2026规划

  1. AI微信数据库归档: RAG语料存储
  2. 公司数据资产化: 数据对撞/备份
  3. 远程桌面私有化: MeshCentral/RustDesk
  4. AI向量库部署: Qdrant集群

相关脚本

脚本 功能 位置 快速运行
time_machine_diskstation_auto.sh Time Machine → 家里 DiskStation 检测/验证,输出材料路径供按参考资料处理 ./scripts/ ./scripts/time_machine_diskstation_auto.sh
time_machine_home_auto.sh 回到家自动挂载 Backup 并触发 Time Machine 备份 ./scripts/ ./scripts/time_machine_home_auto.sh
mount_diskstation_1tb.sh 家里 NAS 约 1TB 备份盘挂载到 Mac内网优先当硬盘用 + 时间机器 ./scripts/ ./scripts/mount_diskstation_1tb.sh
export_macos_vm_to_downloads.sh CKB NAS 上 macOS VM 打包下载到本机「下载」文件夹,实时显示大小与用时,并生成使用说明 ./scripts/ 见下方「macOS VM 导出到本机」
optimize_macos_vm_compose.sh 本机→NASmacOS VM 流畅度优化 ./scripts/ 需本机与 NAS 同网
optimize_macos_vm_on_nas.sh NAS 上直接执行macOS VM 流畅度优化(外网推荐) ./scripts/ SSH 登录 NAS 后运行
deploy_karuo_ai_home_nas_webide.sh 家里 NAS 局域网:部署 code-server挂载 /volume1 整卷,浏览器内访问 NAS 文件 + 可选克隆 karuo-ai 仓库 ./scripts/ 见脚本头注释(需 WEBIDE_PASS
nas_status.sh 一键检查NAS状态内存/磁盘/容器/端口) ./scripts/ ./scripts/nas_status.sh
docker_list.sh 列出所有Docker容器及状态 ./scripts/ ./scripts/docker_list.sh
get_mongodb_info.py 自动获取MongoDB连接信息 ./scripts/ python3 ./scripts/get_mongodb_info.py
synology_api_demo.py DSM官方API使用演示 ./scripts/ python3 ./scripts/synology_api_demo.py
ckbnas_frpc_rescue.sh volume1 只读时 /root 救援 frpc恢复外网 :5200 ./scripts/network_watchdog/ 见 evolution 2026-06-06

添加脚本到PATH可选

# 添加到 ~/.zshrc 或 ~/.bashrc
export PATH="$PATH:/Users/karuo/Documents/个人/卡若AI/01_系统管理/群晖NAS管理/scripts"

# 然后可以直接运行
nas_status.sh
docker_list.sh
get_mongodb_info.py

相关资源

公司 NAS 公网入口2026-07-24

  • 唯一直连入口:http://open.quwanzhi.com:5200/
  • 链路:东京 43.165.178.230 Nginx 5200 → FRPS 5210 → 公司 CKBNAS FRPC → DSM 5000
  • NAS 配置:/volume1/docker/frpc/frpc.toml
  • NAS 服务:karuo-frpc-tokyo.service
  • 不使用 QuickConnect 跳转。
  • 排障先检查DNS、东京 5200/5210/7000、NAS systemd 服务,再检查 /etc/crontab
  • 禁止用 pkill -f frpc 做健康恢复;它会制造周期性断线。