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

22 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.0 2026-02-16

群晖NAS管理

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


快速入口(复制即用)

内网访问

服务 地址 备注
DSM管理界面 http://192.168.1.201:5000 主控台
MongoDB mongodb://admin:admin123@192.168.1.201:27017/ AI微信数据库
Qdrant向量库 http://192.168.1.201:6333 RAG检索
bt-hub中控 http://192.168.1.201:8890 宝塔统一管理
本地宝塔 http://192.168.1.201:8888 网站管理
Windows VM http://192.168.1.201:8006 Windows远程桌面按需启动
macOS VM http://192.168.1.201:8007/?qualityLevel=3&compressionLevel=6&resize=scale macOS远程桌面流畅优化 URL
Cursor 网页版 http://192.168.1.201:5800 浏览器内使用Cursor编程
code-server http://192.168.1.201:8443 VS Code网页版备选

外网访问

服务 地址
GiteaCKB Git http://open.quwanzhi.com:3000
QuickConnect https://udbfnvtk.quickconnect.cn
QuickConnect ID udbfnvtk

Gitea 创建/推送/API 统一由 Gitea管理 Skill 负责,见 金仓/Gitea管理/SKILL.md。QuickConnect 无需端口映射。


核心环境

NAS硬件信息

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

NAS节点信息

节点 内网IP 外网入口 主机名 用途
NAS-2 (主节点) 192.168.1.201 https://udbfnvtk.quickconnect.cn 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 本地宝塔 网站管理

一键操作(卡若习惯)

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"

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 或本小节,便于下次全自动/半自动复用。

家里 NAS 速查Time Machine 用)

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

运维规范

安全准则

  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
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 后运行
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

添加脚本到PATH可选

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

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

相关资源