通过 Docker Compose 为你的私有 NAS 快速部署 Itemory 增强服务(NasAgent)。端侧优先、零第三方中转、秒级提取缩略图与快速检索。
Itemory 增强服务本质上是一个高度轻量化的开源容器(基于 Go 语言编写,内存占用仅约 50MB–200MB)。能否安装取决于你的 NAS 系统是否提供 自定义 Docker / 容器环境。
| 系统 / 品牌 | 支持级别 | 容器方案 | 推荐部署方式 |
|---|---|---|---|
| 飞牛 fnOS、TrueNAS SCALE、Unraid、OMV | 第 4 档 · 原生 Docker | 系统原生集成 Docker / Compose | WebUI Compose 或标准 SSH 命令行 |
| 群晖 Synology DSM 7.2+ | 第 3 档 · 图形化编排 | Container Manager 套件 | 「项目 (Project)」页面粘贴 Compose |
| 绿联 UGOS Pro (DXP 系列等) | 第 3 档 · 图形化编排 | Docker 应用 | 「项目 (Docker Compose)」向导粘贴 |
| 极空间 ZOS (2024-10 后固件) | 第 3 档 · 图形化编排 | Docker 管理器 | Compose 项目支持,支持环境变量 |
| 威联通 QNAP QTS / QuTS hero | 第 3 档 · 图形化编排 | Container Station | 「应用程序 → 创建」粘贴 Compose |
| 铁威马 TOS 6、华硕 ADM | 第 3 档 · 图形化编排 | Docker Manager / Portainer | Compose 模板或 Stack 创建 |
| 联想个人云、海康存储 | 第 2 档 · 受限/非官方 | 未正式开放自定义 Compose | 不建议折腾,优先走下方替代方案 |
| 华为家庭存储、WD My Cloud | 第 1 档 · 无 Docker | 系统不支持 Docker 且不开放 SSH | 无法安装(请直接使用局域网共享) |
相比普通 SMB 协议逐张照片通过网络远程解码,增强服务部署在存储同侧,负责在 NAS 本地建立高效索引与生成高清缩略图。在设计上,增强服务遵循 最低权限与降低数据风险原则:
:ro 挂载。增强服务在文件系统层面上无法修改、删除或重命名你的任何照片与视频。user 值必须与媒体目录和数据目录的实际 UID:GID 权限匹配(Unraid 模板使用 99:100)。read_only: true 并丢弃所有 Linux 内核特权(cap_drop: [ALL]),仅开放独立的临时内存 tmpfs。ITEMORY_ADMIN_TOKEN 的管理员,才能开启/关闭配对窗口、读取二维码或管理已配对设备;一次性配对码仍仅 5 分钟有效且只能使用一次。适用机型:群晖 Plus 系列(x86 架构)及部分 ARM64 机型(如 DS223 等)。系统版本需为 DSM 7.2 或更新。
/volume1/docker/),新建名为 itemory-agent 的文件夹。确认当前登录账户对该文件夹具有读写权限。itemory),路径选择刚才创建的 /volume1/docker/itemory-agent。# Synology DSM 7 · Container Manager → 项目 → 新建
services:
itemory-agent:
image: ghcr.io/sherlockgougou/itemory-agent:1
container_name: itemory-agent
restart: unless-stopped
user: "1000:1000"
read_only: true
tmpfs: ["/tmp:size=128m"]
cap_drop: [ALL]
security_opt: ["no-new-privileges:true"]
volumes:
# 媒体根目录:以只读挂载 (:ro)
- /volume1:/volumes/volume1:ro
# 数据持久化目录:存放索引与缓存
- /volume1/docker/itemory-agent:/data
ports:
- "8787:8787"
environment:
# 必填:管理配对窗口和已配对设备。请填入 openssl rand -hex 32 的结果。
ITEMORY_ADMIN_TOKEN: ""
ITEMORY_PRESET: "balanced"
TZ: "Asia/Shanghai"
cpus: "1.5"
mem_limit: 512m
飞牛 fnOS 基于标准 Debian 底层,原生集成完整 Docker 环境与独立管理面板,对自定义容器非常友好。
itemory,在存储路径中指定持久化目录(如 /vol1/docker/itemory-agent)。/vol1 替换为你实际存放相册的卷路径:# 飞牛 fnOS · Docker 管理 → Compose 新建
services:
itemory-agent:
image: ghcr.io/sherlockgougou/itemory-agent:1
container_name: itemory-agent
restart: unless-stopped
user: "1000:1000"
read_only: true
tmpfs: ["/tmp:size=128m"]
cap_drop: [ALL]
security_opt: ["no-new-privileges:true"]
volumes:
- /vol1:/volumes/vol1:ro
- /vol1/docker/itemory-agent:/data
ports:
- "8787:8787"
environment:
# 必填:管理配对窗口和已配对设备。请填入 openssl rand -hex 32 的结果。
ITEMORY_ADMIN_TOKEN: ""
ITEMORY_PRESET: "balanced"
TZ: "Asia/Shanghai"
cpus: "1.5"
mem_limit: 512m
适用设备:绿联 DXP 系列等运行 UGOS Pro 系统的机型。底层路径沿用 /volume1 体系,支持图形化 Compose 项目。
itemory,路径选择指定的应用数据共享目录(如 /volume1/docker/itemory-agent)。# 绿联 UGOS Pro · Docker 应用 → 项目(Docker Compose)
services:
itemory-agent:
image: ghcr.io/sherlockgougou/itemory-agent:1
container_name: itemory-agent
restart: unless-stopped
user: "1000:1000"
read_only: true
tmpfs: ["/tmp:size=128m"]
cap_drop: [ALL]
security_opt: ["no-new-privileges:true"]
volumes:
# 照片所在的实际存储卷
- /volume1:/volumes/volume1:ro
- /volume1/docker/itemory-agent:/data
ports:
- "8787:8787"
environment:
# 必填:管理配对窗口和已配对设备。请填入 openssl rand -hex 32 的结果。
ITEMORY_ADMIN_TOKEN: ""
ITEMORY_PRESET: "balanced"
TZ: "Asia/Shanghai"
cpus: "1.5"
mem_limit: 512m
极空间 ZOS 在较新固件中已全面开放标准 Docker Compose 与相对路径支持。
itemory,通过浏览指定持久化数据目录。/data 与媒体目录):# 极空间 ZOS · Docker 管理器 → Compose 项目
services:
itemory-agent:
image: ghcr.io/sherlockgougou/itemory-agent:1
container_name: itemory-agent
restart: unless-stopped
user: "1000:1000"
read_only: true
tmpfs: ["/tmp:size=128m"]
cap_drop: [ALL]
security_opt: ["no-new-privileges:true"]
volumes:
# 请在极空间界面选取你的媒体文件夹挂载到 /volumes/media (只读)
- ./media:/volumes/media:ro
- ./data:/data
ports:
- "8787:8787"
environment:
# 必填:管理配对窗口和已配对设备。请填入 openssl rand -hex 32 的结果。
ITEMORY_ADMIN_TOKEN: ""
ITEMORY_PRESET: "balanced"
TZ: "Asia/Shanghai"
cpus: "1.5"
mem_limit: 512m
itemory-agent。CACHEDEV1_DATA 更改为你实际的数据卷名称):# QNAP QTS / QuTS hero · Container Station → Applications → Create
services:
itemory-agent:
image: ghcr.io/sherlockgougou/itemory-agent:1
container_name: itemory-agent
restart: unless-stopped
user: "1000:1000"
read_only: true
tmpfs: ["/tmp:size=128m"]
cap_drop: [ALL]
security_opt: ["no-new-privileges:true"]
volumes:
- /share/CACHEDEV1_DATA:/volumes/share:ro
- /share/CACHEDEV1_DATA/Container/itemory-agent:/data
ports:
- "8787:8787"
environment:
# 必填:管理配对窗口和已配对设备。请填入 openssl rand -hex 32 的结果。
ITEMORY_ADMIN_TOKEN: ""
ITEMORY_PRESET: "balanced"
TZ: "Asia/Shanghai"
cpus: "1.5"
mem_limit: 512m
开源与自建 NAS 系统(TrueNAS SCALE 24.10+ Electric Eel、Unraid、OpenMediaVault)原生支持标准 Docker Compose:
在 Apps 页面点击 Custom App,选择 Compose 部署,输入:
# TrueNAS SCALE (24.10+ Electric Eel)
services:
itemory-agent:
image: ghcr.io/sherlockgougou/itemory-agent:1
container_name: itemory-agent
restart: unless-stopped
user: "1000:1000"
read_only: true
tmpfs: ["/tmp:size=128m"]
cap_drop: [ALL]
security_opt: ["no-new-privileges:true"]
volumes:
- /mnt/pool/media:/volumes/media:ro
- /mnt/pool/appdata/itemory-agent:/data
ports:
- "8787:8787"
environment:
# 必填:管理配对窗口和已配对设备。请填入 openssl rand -hex 32 的结果。
ITEMORY_ADMIN_TOKEN: ""
ITEMORY_PRESET: "balanced"
TZ: "Asia/Shanghai"
cpus: "1.5"
mem_limit: 512m
在 Unraid Docker 界面添加 Compose 栈,或在任意 Linux 终端直接执行:
# 通用 Linux / Unraid 标准 Compose
services:
itemory-agent:
image: ghcr.io/sherlockgougou/itemory-agent:1
container_name: itemory-agent
restart: unless-stopped
user: "1000:1000" # 通用 Linux;Unraid 请改为 99:100
read_only: true
tmpfs: ["/tmp:size=128m"]
cap_drop: [ALL]
security_opt: ["no-new-privileges:true"]
volumes:
- /mnt/user:/volumes/user:ro
- /mnt/user/appdata/itemory-agent:/data
ports:
- "8787:8787"
environment:
# 必填:管理配对窗口和已配对设备。请填入 openssl rand -hex 32 的结果。
ITEMORY_ADMIN_TOKEN: ""
ITEMORY_PRESET: "balanced"
TZ: "Asia/Shanghai"
cpus: "1.5"
mem_limit: 512m
容器启动成功后,无需在后台编写复杂的配置文件。首次部署前请在 Compose 的 ITEMORY_ADMIN_TOKEN 中填入随机值(例如运行 openssl rand -hex 32 生成),不要把它发布到网页、日志或截图中。配对、媒体库选取与扫描参数均在 iPhone / iPad App 内完成;当前 Apple TV 只支持本地系统相册路径,不提供增强服务配对入口。
在局域网电脑或手机浏览器输入 http://<你的NAS-IP>:8787,打开增强服务初始页面。
在页面输入 Compose 中配置的管理员令牌,再点击「开始配对」;页面随后展示一个 5 分钟有效的专属动态配对二维码。
打开 iPhone / iPad 上的 Itemory App,在「数据源」点按「添加增强服务」,扫描屏幕二维码即可。
确认 Compose 已设置 ITEMORY_ADMIN_TOKEN,且网页中输入的内容完全一致。令牌长度至少 32 个字符;修改后需要重新创建或重启容器。不要把令牌写进 URL,也不要把它直接发给其他设备。
增强服务默认使用非 root 用户运行。请确保挂载到容器 /data 的目录(例如群晖的 /volume1/docker/itemory-agent)对模板中的 UID:GID 具有读写权限;媒体目录则至少需要读取权限。群晖等系统可在 SSH 中运行 id 查看当前用户的 UID:GID,再按实际权限调整 Compose 的 user 值。不要为了绕过错误改用 root 或直接取消非 root 配置。
请按以下步骤检查:
192.168.x.x),而非网关或虚拟交换机地址。