37 KiB
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必须执行:
- 操作前读取总控索引、路径与作用登记册及最近迭代日志。
- 明确公司CKBNAS与家里Station的边界,确认主机名、地址和目标路径。
- 操作后更新容量、目录、容器、端口、任务状态、故障经验和验收结果。
- 新目录必须登记用途;新服务必须登记入口、端口、数据路径和恢复方式。
- 文档链接必须使用相对路径,确保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登记册.md(2026-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/degrade,DSM 报硬盘严重但 SMART 全 PASSED | 软件脱队非坏盘:DSM 在线重组 → degrade 后 mdadm --add /dev/md2 /dev/sata2p5;禁用 ckbnas_sata4_offline.sh;recovery ≈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 密码 Zhiqun1984(Z 大写),非全小写 |
| 2026-06-03 | 外网 :3100 502 |
frpc 未运行;本机 127.0.0.1:3100 仍 200 → 拉 frpc |
CKBNAS 安全恢复基线
这段是 2026-06-09 的复盘沉淀:
RAID md2已恢复为[UUUU],但ContainerManager/Docker一旦默认拉起,就会把系统从“可用”拖回“假在线/掉线/重启”。
默认策略
ContainerManager默认不自动启动。- Docker 容器默认全部
restart=no,仅在确认单容器安全后再单独放行。 - 启动顺序只保留基础访问链路:
SMBService→DSM 5000/5001→SSH。 - RAID 限速固定保持在
speed_limit_min=5000、speed_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 速度本身。
恢复顺序
- 先抢 SSH 窗口,确认
md2=[UUUU]、5000/5001可访问、内存可用量正常。 - 只恢复
SMBService。 - 需要恢复 Docker 时,先改容器
hostconfig.json的RestartPolicy为no,并先只起一个轻量容器做 5-10 分钟验收。 ollama、AI 大模型容器、always自启容器一律最后恢复,且必须分批。- 一旦出现“假在线”或
SSH banner超时,立刻回退 Docker,保 DSM/SSH。
回滚命令提醒
- 停 Docker 相关进程:
dockerd、containerd、docker-proxy、container-manager、synocontainerd - 保持 allowlist 最小化:只保
SMBService - 不要在未验证稳定前恢复
ContainerManager的默认自启
错误沉淀与迭代
- Docker 自动拉起导致内存暴涨:
ContainerManager、ollama、karuo-ai必须默认停用。 - 假在线:
ping通但SSH banner/5000/5001超时,说明系统后台已经卡住,不能继续起大包。 - SATA 反复重置:出现
SATA link down、softreset failed、SRST 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 200;NAS 为主部署,本机为开发/验收副本 |
| 工作手机 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
⚠️ 重要提示:密码全部为小写
zhiqun1984,MongoDB默认账号密码可通过脚本自动获取。
关键端口
| 端口 | 服务 | 说明 |
|---|---|---|
| 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。优先用优化 URL:http://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
- 需要本机已安装
sshpass(brew 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 → NetBackup(110.101 · 长期方案)
真源进度:
开发文档/TimeMachine_公司NAS切换进度.md
部署清单(①~⑦)
| 步 | 内容 | 脚本/验收 |
|---|---|---|
| ① | Mac + CKBNAS 同 LAN/VLAN,NAS 固定 110.101 | ping 192.168.110.101 |
| ② | Mac 网线,关 VPN,DSM :5000 可开 | curl -m3 http://192.168.110.101:5000 |
| ③ | DSM:NetBackup 专卷 + 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 status、listlocalsnapshots(只读) |
| 删 NAS sparsebundle、Backups.backupdb、本地 TM 快照 | stopbackup → startbackup 重启任务 |
| 为腾空间或修卡住而清快照 | tm_vpn_bypass_lan.sh、tm_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 端:在 DSM(http://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/目标盘)。 - LaunchAgent:
scripts/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挂载与时间机器.md(NAS 新建共享 → 开 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,详见操作指南。
运维规范
安全准则
- 禁止明文Token: 敏感信息用环境变量
- IP白名单: 宝塔API只允许NAS访问
- 定期备份: 每周备份Docker配置和数据库
操作流程
- 修改前: 阅读需求文档
- 修改后: 更新迭代记录
- 测试后: 再提交
NAS核心任务(2026规划)
- AI微信数据库归档: RAG语料存储
- 公司数据资产化: 数据对撞/备份
- 远程桌面私有化: MeshCentral/RustDesk
- 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 |
本机→NAS:macOS 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
相关资源
- 项目目录:
/Users/karuo/Documents/开发/4、小工具/synology群晖nas - QuickConnect: https://udbfnvtk.quickconnect.cn
- 官方API文档: https://www.synology.com/en-us/support/developer
- synology-api GitHub: https://github.com/N4S4/synology-api
- 服务器管理Skill:
/Users/karuo/Documents/开发/4、小工具/5-工具与其他/服务器管理/.codex/skills/karuo-server-manager/
公司 NAS 公网入口(2026-07-24)
- 唯一直连入口:
http://open.quwanzhi.com:5200/ - 链路:东京
43.165.178.230Nginx5200→ FRPS5210→ 公司 CKBNAS FRPC → DSM5000 - NAS 配置:
/volume1/docker/frpc/frpc.toml - NAS 服务:
karuo-frpc-tokyo.service - 不使用 QuickConnect 跳转。
- 排障先检查:DNS、东京
5200/5210/7000、NAS systemd 服务,再检查/etc/crontab。 - 禁止用
pkill -f frpc做健康恢复;它会制造周期性断线。