这两天一直在研究这个话题,踩了几个坑,把遇到的东西整理成文,供有需要的朋友参考。
前言
手机和相机里的照片越存越多以后,最麻烦的往往不是“有没有地方放”,而是几年之后还能不能快速找到。按文件夹翻、按日期猜、靠文件名记,照片少的时候还能应付,一旦积累到几万张,真正需要的是一个能直接读取NAS现有目录、自动生成缩略图、保留EXIF信息并支持搜索筛选的相册入口。
这次我把Damselfly部署到飞牛NAS上,先开启SSH并确认Docker环境,再通过Docker Compose把服务映射到7100端口,同时把config、thumbs和photos目录挂载出来。
本地页面跑通以后,再把照片放进photos目录,处理目录权限,实际验证缩略图、显示大小、关键词搜索和多条件筛选。
最后再给7100配置外部访问入口,从随机公网地址切换到固定二级子域名。整篇重点不是把“自托管”写成绝对隐私,而是把NAS本地照片目录 → Damselfly → 浏览检索 → 远程访问这条链完整跑通。
这类相册工具真正适合NAS的地方,也不只是“照片放在自己硬盘里”,而是图库可以长期保持同一个入口。以后继续往photos目录里增加照片,浏览、检索和筛选都可以沿用同一套页面,不需要每次重新导入到新的平台。
1 Damselfly更适合哪类照片管理
Damselfly更像一个:
直接读取NAS照片目录的Web相册和检索工具。
它适合的场景包括:
- NAS里已经有大量照片;
- 不想为了相册再复制一份原图;
- 需要读取EXIF信息;
- 希望按关键词、时间、相机等条件筛选;
- 想在浏览器里快速查看大量图片;
- 更重视归档和检索,而不是手机自动备份。
2 这篇实际要跑通哪些内容
整个过程可以拆成四段。
第一段:
飞牛 → SSH → Docker
第二段:
Docker Compose → Damselfly → 7100
第三段:
photos目录 → 图片 → 缩略图 / EXIF / 搜索筛选
第四段:
外部浏览器 → 固定公网地址 → Damselfly:7100
先把本地照片管理跑通,再处理远程访问。
3 为什么这种方式更适合已有照片库
这类自托管相册最有价值的一点,是可以直接围绕现有照片目录开发。
这套Compose配置里挂载:
./config:/config./thumbs:/thumbs./photos:/pictures
原始图片、配置和缩略图分开保存。
对已经整理好NAS文件夹的人来说,不需要为了使用Web相册再重新建立一套完全独立的照片库。
4 Damselfly能做哪些事
这次实操重点放在:
- 自动生成缩略图;
- 读取照片元信息;
- 按关键词搜索;
- 调节缩略图大小;
- 多条件筛选;
- 浏览本地照片。
- 月份;
- 相机;
- 镜头;
- 文件大小;
- 人员;
- AI标签;
这些能力更适合解决:
照片已经许多以后,怎么快速找到。
5 先在飞牛开启SSH
进入:
设置 → SSH
开启服务:
继续按页面确认:
搞定:
后面的Docker命令都通过SSH终端执行。
6 验证Docker环境
执行:
docker -v
systemctl status -v
也可以直接在飞牛主页查看Docker状态:
确认环境正常以后,再开始创建Damselfly目录。
7 创建Damselfly部署目录
执行:
mkdir -p /docker/Damselfly && cd /docker/Damselfly
结果:
这次部署目录使用:
/docker/Damselfly
后面会在这里保存Compose配置和相关数据目录。
8 创建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
配置页面:
这里最关键的是两部分。
端口:
7100:6363
目录:
./config:/config./thumbs:/thumbs./photos:/pictures
7100
9 拉取Damselfly镜像
执行:
docker pull webreaper/damselfly
结果:
本次镜像:
webreaper/damselfly
10 启动Damselfly
执行:
docker-compose up -d
结果:
启动以后继续检查容器状态。
11 查看容器是否正常运行
执行:
docker ps
结果:
容器正常以后,再进入浏览器验证Web页面。
12 浏览器访问7100
访问:
http://飞牛IP:7100
页面:
能正常打开以后,可以确认:
浏览器 → 飞牛7100 → Damselfly容器6363
这一层已经跑通。
13 先登录Damselfly
进入登录页面:
登录以后,下一步才是把照片真正放进Damselfly读取的目录。
14 照片目录要和Compose挂载对应
Compose里已经配置:
./photos:/pictures
所以本地照片需要放进:
photos
目录。
这次还保留了目录权限处理命令:
# 进入damselfly目录
cd /docker/damselfly
# 给photos目录读写权限
chmod 777 photos
# 或者更安全的,修改目录属主
chown -R 1000:1000 photos
页面:
这里有一个实际使用时要注意的细节:
前面创建目录使用的是:
/docker/Damselfly
而这段命令里写的是:
/docker/damselfly
Linux路径区分大小写,所以实际进入目录时,应以自己真正创建的目录名称为准。
代码块本身保持这套流程记录不变。
15 上传照片到photos目录
接下来往:
photos
目录上传图片:
上传搞定后刷新Damselfly。
16 首页已经能看到新照片
刷新页面:
照片已经出现在首页。
这一步可以确认:
NAS photos目录 → 容器/pictures → Damselfly页面
已经打通。
17 调整缩略图显示大小
页面支持调整照片显示尺寸:
照片许多的时候,这个功能比较实用。
想快速扫图库时可以缩小。
想看细节时可以放大。
18 关键词搜索照片
继续测试搜索:
可以通过关键词缩小照片范围。
这比单纯按照文件夹一层层翻更适合大图库。
19 多条件筛选更适合长期照片库
筛选页面:
这里可以看到多个维度。
包括:
- 月份;
- 相机;
- 镜头;
- 文件大小;
- 人员;
- AI标签;
- 关键词。
20 AI标签应当理解成“辅助检索”
但AI识别结果不应当被理解成百分百准确。
更适合的定位是:
帮各位缩小范围,再由人确认。
另外,这篇部署里照片文件本身仍然挂载在NAS本地目录中。
如果以后接入其他外部服务或额外插件,再单独判断对应数据路径。
21 本地使用到这里已经完整跑通
现在已经搞定:
飞牛Docker → Damselfly → photos目录 → 图片浏览 → 搜索筛选
如果只在家里局域网里使用,做到这里已经够了。
只有确实需要在外面浏览相册时,再继续配置公网入口。
22 私人相册做远程访问要注意什么
相册和普通工具不太一样。
里面可能包含:
- 家庭照片;
- 原图;
- EXIF;
- 拍摄时间;
- GPS信息;
- 人物内容。
“能不能打开。”
还需要考虑:
- Damselfly账号;
- 公网地址传播范围;
- 是否需要隐藏或清理敏感EXIF;
- 不同用户是否需要不同权限。
23 安装cpolar
执行:
sudo curl https://get.cpolar.sh | sh
安装结果:
随后检查服务状态:
sudo systemctl status cpolar
结果:
确认服务正常以后,再进入Web管理页面。
24 打开cpolar管理界面
浏览器访问:
飞牛IP:9200
页面:
登录以后,开始给Damselfly配置公网隧道。
25 给7100创建HTTP隧道
创建参数:
- 隧道名称:
Damselfly - 协议:HTTP
- 本地地址:
7100 - 域名类型:随机域名
- 地区:
China Top
这里映射的是Damselfly实际提供Web服务的7100端口。
26 先用随机公网地址测试
进入在线隧道列表:
从外部网络打开生成的地址:
能正常进入Damselfly以后,可以确认:
外部浏览器 → 公网地址 → 飞牛7100 → Damselfly
已经跑通。
27 随机域名更适合先验证
如果只是临时查看相册,随机地址已经够用。
如果准备长期保存到手机、平板或浏览器书签里,再继续配置固定二级子域名。
28 保留固定二级子域名
进入预留页面:
这次示例使用:
Damselfly
页面:
实际使用时,以自己账号最终成功保留的名称为准。
29 编辑Damselfly隧道
回到隧道列表:
进入编辑。
修改:
- 域名类型:二级子域名;
- Sub Domain:已经保留的名称;
- 地区:
China Top。
30 查看固定地址是否生效
进入在线隧道列表:
可以看到原来的随机地址已经切换成固定二级子域名。
31 最后从外部设备再访问一次
使用固定地址打开:
页面能正常进入以后,长期远程入口完成。
整条链已经变成:
外部设备 → 固定公网地址 → 飞牛7100 → Damselfly → NAS照片目录
32 自托管相册真正带来的是什么
更准确的说法不是:
“自托管以后就绝对不会有隐私风险。”
而是:
照片文件放在自己的NAS里,存储位置、备份方式和访问入口都由自己管理。
这会带来更高的可控性。
但同时也意味着:
- 磁盘损坏要自己负责;
- 备份策略要自己做;
- 账号安全要自己维护;
- 公网访问范围要自己控制。
而是:
风险和控制权更多回到自己手里。
33 Damselfly适合什么人
比较适合:
- 已经有NAS;
- 已经有大量本地照片;
- 不想重复复制原图;
- 更重视浏览、归档和检索;
- 摄影素材许多;
- 希望通过浏览器统一查看照片。
34 最后把完整技术链重新看一遍
基础环境:
飞牛 → SSH → Docker
部署:
Docker Compose → Damselfly
端口:
7100:6363
目录:
config / thumbs / photos
照片:
photos → /pictures → Damselfly
本地功能:
浏览 → 缩略图 → 搜索 → 多条件筛选
随机远程:
公网随机地址 → 7100
固定远程:
固定二级子域名 → 7100
实际完成:
- 飞牛SSH;
- Docker环境确认;
- Damselfly目录;
- docker-compose.yml;
- 镜像拉取;
- 容器启动;
- 7100本地访问;
- photos目录权限;
- 照片上传;
- 图片浏览;
- 关键词搜索;
- 多条件筛选;
- cpolar安装;
- 随机公网地址;
- 固定二级子域名;
- 外部设备访问。
总结
这次真正跑通的是一条完整的Damselfly使用链:先在飞牛确认SSH和Docker环境,通过Docker Compose启动Damselfly,再把7100映射到容器6363,并把config、thumbs和photos三个目录挂载出来。
本地功能验证没有停在“页面能打开”,而是继续把照片放进photos目录,处理目录权限,实际查看缩略图、调节显示大小,并测试关键词和多条件筛选。这样才能确认Damselfly已经真正读到了NAS里的照片。
远程部分是在本地图库正常以后再增加的能力。随机公网地址先验证链路,固定二级子域名再解决长期入口变化的问题;但照片里可能包含EXIF、位置和家庭内容,公网可达和隐私安全仍然是两件事。
Damselfly更适合已经有大量本地照片、希望直接围绕现有目录做浏览和检索的人。自托管真正带来的不是“绝对安全”,而是让照片存储、访问入口、备份和权限更多掌握在自己手里。
就写这么多吧,内容比较基础,适合入门回顾。有补充的地方欢迎留言一起完善。
评论 (0)
暂无评论