前言
手机、相机里积攒了大量照片,存放在公有云相册总会遇到不少麻烦:免费存储空间越用越少,原图上传会被平台自动压缩画质,珍贵的生活记录、摄影原图被第三方平台托管,始终存在隐私泄露的风险。一旦停止付费,部分云盘还会限制下载速度,甚至历史照片访问链接失效,多年的回忆随时可能无法访问。
如果你手里有一台NAS,完全可以把照片掌握在自己手中。Damselfly是一款轻量开源的自托管相册服务,相比Nextcloud相册,它资源占用更低、部署简单,专门针对图片浏览、管理做了优化。它可以自动为照片生成缩略图,读取图片EXIF拍摄信息,支持标签分类、关键词检索,海量图片也能快速浏览。
本文带来Damselfly的Docker保姆级部署教程,从docker-compose配置编写、目录权限踩坑处理,到容器启动、本地照片素材导入,还会搭配cpolar实现外网远程访问。所有图片文件全部保存在你自己的NAS硬盘中,数据完全由自己掌控,不上传第三方云端,非常适合搭建私人照片资料库。下面跟着步骤,一步步完成部署。
1.什么是Damselfly?
Damselfly 是一款开源、轻量的自托管照片管理系统,可以看作 Immich、Nextcloud 相册的轻量化平替工具,专门用来在 NAS 上管理本地海量图片素材。
传统相册系统大多需要导入复制图片、占用双倍存储空间,管理大量原图和 RAW 照片时资源开销巨大。Damselfly 就在这个背景下诞生,直接读取硬盘原有照片文件,不拷贝原图,主打低资源消耗,低配 NAS 也能流畅使用。
✨核心特点
- 原生读取本地文件夹,不复制原图:无需把照片导入数据库,直接读取 NAS 目录里的图片,JPG/PNG/HEIC/ 相机 RAW 格式全部支持,不会重复占用硬盘空间。
- 自动生成缩略图与解析 EXIF:后台自动生成缩略图,读取拍摄时间、相机型号、GPS 位置等照片元信息,支持按日期、设备检索图片。
- 内置 AI 图片识别:离线人脸检测、物体识别,自动给照片生成标签,海量图库也可以关键词快速检索。
- 多用户权限管理:支持创建多个账号,可设置只读分享权限,方便和家人共享相册;标签修改为非破坏性操作,不会改动原始照片文件。
- Docker 一键部署:容器化部署,一条 docker-compose 即可启动,搭配 cpolar 外网穿透,随时随地浏览器访问私人图库。
🔴适合什么人用
- NAS 爱好者,想自建私人相册,不想把原图上传公有云
- 摄影爱好者,需要管理大量 RAW 原图,不想占用双倍磁盘空间
- 自托管玩家,嫌弃 Immich 资源占用太高,想要轻量相册方案
- 重视照片隐私,希望所有图片数据保存在自己硬盘里
- 需要在外网远程浏览相册,搭配 cpolar 实现异地访问
⚠局限性 Damselfly 主打本地文件夹图片管理,对比 Immich 缺少手机自动备份上传等配套移动端功能;不支持复杂的照片在线编辑,更适合个人、家庭照片归档检索,不适合专业摄影团队重度协作场景。
2.安装前提条件
2.1ssh远程连接到飞牛
- 开启【SSH 服务】
- 使用终端(Windows PowerShell / Mac Terminal)登录:
在设置—>SSH中开启SSH服务:
2.2验证docker是否开启
使用命令:
docker -v
systemctl status -v
也可以直接在飞牛主页查看(其他机器也是这样的哦~)
3.安装Damselfly
首先创建一下安装的目录并进入到该目录:
mkdir -p /docker/Damselfly && cd /docker/Damselfly
创建并编辑 docker-compose.yml文件:
vi docker-compose.yml
version: '3'
services:
damselfly:
image: webreaper/damselfly
container_name: damselfly
restart: unless-stopped
ports:
- 7100:6363
volumes:
- ./config:/config
- ./thumbs:/thumbs
- ./photos:/pictures
拉取镜像:
docker pull webreaper/damselfly
启动服务:
docker-compose up -d
验证是否启动成功:
docker ps
部署完成后,在浏览器中输入 http://飞牛IP:7100 就能看到Damselfly的界面:
4.部署Damselfly
安装完成后,先登录:
当时我们启动的时候,要求图片存储目录是./photos,所以我们需要上传图片到phots目录下:
# 进入damselfly目录
cd /docker/damselfly
# 给photos目录读写权限
chmod 777 photos
# 或者更安全的,修改目录属主
chown -R 1000:1000 photos
接下来我们就开始往photos目录下,传递文件:
上传完成后,我们刷新,就会在主页显示成功:
调节图片显示大小:
搜索关键字,即可现实图片:
Damselfly相册的素材浏览页面,顶部集成了强大的多维度筛选栏,支持按月份、相机 / 镜头型号、文件大小、人员、AI标签等条件快速检索图片,还可勾选选项过滤无关键词图片;下方缩略图区域展示了3张卡通风格图片,能够直观预览相册内的素材,整个界面简洁直观,方便在海量照片中快速定位、查找目标图片。
借助 cpolar 内网穿透,我们可以给部署在 NAS 本地的 Damselfly 相册建立稳定外网隧道,无需公网 IP,随时随地通过浏览器访问私人相册。在家以外的手机或电脑打开 cpolar 生成的公网地址,就能浏览相册、检索照片,查看 AI 标签与图片 EXIF 信息,远程调取存放在 NAS 硬盘里的原图素材,把自建相册真正做到外网可访问。
5.安装cpolar实现随时随地开发
5.1 什么是cpolar?
cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。
5.2 部署cpolar
cpolar可以将你本地电脑中的服务(如SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。
❤️以下是安装cpolar步骤:
使用一键脚本安装命令:
sudo curl https://get.cpolar.sh | sh
安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)
sudo systemctl status cpolar
Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:
打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。
6.配置公网地址
登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
- 隧道名称:可自定义,本例使用了:Damselfly,注意不要与已有的隧道名称重复
- 协议:http
- 本地地址:7100
- 域名类型:随机域名
- 地区:选择China Top
创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。
访问成功。
7.保留固定公网地址
使用cpolar为其配置二级子域名(cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站),该地址为固定地址,不会随机变化。
点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是Damselfly,大家可以自定义。填写备注信息,点击保留。
登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑。
修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名
- 地区: China Top
点击更新
更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。
最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。
总结
本篇教程完整演示了在 NAS 上使用 Docker 部署 Damselfly 私有相册的全过程,从 docker-compose 配置编写、目录权限问题排查,到相册素材导入、搭配 cpolar 内网穿透实现外网访问。Damselfly 无需复制原图,直接读取 NAS 本地照片文件,占用资源低,支持 EXIF 信息解析、AI 标签识别、多维度图片筛选,非常适合用来搭建个人图片资料库。所有照片都保存在自己的硬盘中,数据完全自主可控,不用再受公有云相册容量压缩、隐私泄露的困扰。如果你也有大量照片需要归档管理,不妨在 NAS 上尝试部署,打造专属于自己的私人相册。
感谢您对本篇文章的喜爱,有任何问题欢迎留言交流。cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

































