飞牛部署Damselfly实战:Docker Compose、照片目录、7100访问与固定地址

这两天一直在研究这个话题,踩了几个坑,把遇到的东西整理成文,供有需要的朋友参考。

前言

手机和相机里的照片越存越多以后,最麻烦的往往不是“有没有地方放”,而是几年之后还能不能快速找到。按文件夹翻、按日期猜、靠文件名记,照片少的时候还能应付,一旦积累到几万张,真正需要的是一个能直接读取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信息;
  • 希望按关键词、时间、相机等条件筛选;
  • 想在浏览器里快速查看大量图片;
  • 更重视归档和检索,而不是手机自动备份。
如果需求主要是手机端自动上传和完整移动端体验,Damselfly并不一定是唯一选择。

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;
  • 不同用户是否需要不同权限。
cpolar负责网络入口,照片内容和应用权限仍然由Damselfly及本地文件权限负责。

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才真正从“容器已经启动”变成一套可以长期使用的NAS照片浏览和检索入口。

总结

这次真正跑通的是一条完整的Damselfly使用链:先在飞牛确认SSH和Docker环境,通过Docker Compose启动Damselfly,再把7100映射到容器6363,并把config、thumbs和photos三个目录挂载出来。

本地功能验证没有停在“页面能打开”,而是继续把照片放进photos目录,处理目录权限,实际查看缩略图、调节显示大小,并测试关键词和多条件筛选。这样才能确认Damselfly已经真正读到了NAS里的照片。

远程部分是在本地图库正常以后再增加的能力。随机公网地址先验证链路,固定二级子域名再解决长期入口变化的问题;但照片里可能包含EXIF、位置和家庭内容,公网可达和隐私安全仍然是两件事。

Damselfly更适合已经有大量本地照片、希望直接围绕现有目录做浏览和检索的人。自托管真正带来的不是“绝对安全”,而是让照片存储、访问入口、备份和权限更多掌握在自己手里。


就写这么多吧,内容比较基础,适合入门回顾。有补充的地方欢迎留言一起完善。

评论 (0)

暂无评论