从零搭建私有云相册:使用 Docker 一键部署 Damselfly全攻略
从零搭建私有云相册:使用 Docker 一键部署 Damselfly全攻略
1.1 Damselfly简介
1.2 Damselfly主要特点
2.1 本地环境规划
2.2 本次实践介绍
3.1 检查Docker服务状态
3.2 检查Docker版本
3.3 检查docker compose 版本
5.1 创建部署目录
5.2 docker compose方式部署
5.3 创建Damselfly容器
5.4 查看Damselfly容器状态
5.5 检查Damselfly容器日志
6.1 访问Damselfly首页
6.2 上传图片
6.3 浏览照片
一、Damselfly介绍
1.1 Damselfly简介
Damselfly是一个基于服务器的高性能照片管理应用程序,专为大规模图像集合设计,通过丰富的元数据、AI 视觉识别和快速搜索功能,实现高效的照片组织、检索与协作。
1.2 Damselfly主要特点
广泛格式支持:兼容 JPG、PNG、HEIC、TI TIFF、WebP、BMP 及主流 RAW 格式(如 CR2、NEF、ORF、DNG)。
AI 图像识别:集成面部检测、人脸识别、物体识别与图像颜色分类等计算机视觉能力。
全文与高级搜索:支持关键词短语、部分匹配及按日期、设备、方向、文件大小、标签状态等多维度筛选。
视觉相似性搜索:可查找外观相似的图片,提升内容发现效率。
极速性能:在包含 50 万张图片的库中,搜索响应时间低于 1 秒。
非破坏性关键词标记:使用 ExifTool 更新 IPTC/EXIF 元数据,避免 JPEG 重新编码导致的质量损失。
多用户与权限控制:支持多账户及基于角色的访问控制(如只读用户无法编辑标签)。
地理信息可视化:在地图上显示带有地理位置元数据的照片位置。
选择篮功能:用户可创建私有或共享的图像篮,用于下载、导出至外部工具或上传至 WordPress。
自动后台索引:新增或修改图像时自动更新索引与缩略图,无需手动干预。
跨平台桌面客户端:提供基于 Electron.NET 的 macOS(通用)、Windows 和 Linux 桌面应用,增强本地集成体验。
灵活部署:支持 Windows、Linux、macOS 及 Docker 环境,后端基于 .NET 7,前端采用 Blazor WebAssembly。
媒体排除机制:通过在文件夹中放置
.nomedia文件,阻止 Damselfly 扫描特定目录。安全导出与水印:支持导出带水印的图像,便于社交媒体分享或邮件发送。
二、本次实践规划
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为 Ubuntu 24.04.2 LTS。

2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署Damselfly照片管理系统。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
root@jeven:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-12-02 00:51:31 CST; 1min 11s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 75393 (dockerd)
Tasks: 32
Memory: 34.1M (peak: 34.8M)
CPU: 1.248s
CGroup: /system.slice/docker.service

3.2 检查Docker版本
检查Docker版本
root@jeven:~# docker -v
Docker version 28.5.0, build 887030f
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
root@jeven:~# docker compose version
Docker Compose version v2.39.4
四、拉取Damselfly镜像
下载Damselfly镜像,执行以下命令:
docker pull webreaper/damselfly
五、部署Damselfly服务
5.1 创建部署目录
创建部署目录
mkdir -p /data/damselfly/{config,thumbs,photos} && cd /data/damselfly
目录权限设置:
chmod -R 777 /data/damselfly
5.2 docker compose方式部署
新建及编辑docker-compose.yaml文件,宿主机映射端口可自行设置,注意防止端口冲突。
vim docker-compose.yaml
version: '3'
services:
damselfly:
image: webreaper/damselfly
container_name: damselfly
restart: unless-stopped
ports:
- 7100:6363
volumes:
- ./config:/config
- ./thumbs:/thumbs
- ./photos:/pictures

5.3 创建Damselfly容器
执行以下命令,创建Damselfly容器。
5.4 查看Damselfly容器状态
检查Damselfly容器运行状态,确保Damselfly容器正常启动。
root@jeven:/data/damselfly# docker compose ps
WARN[0000] /data/damselfly/docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
damselfly webreaper/damselfly "sh /damselfly-entry…" damselfly 24 seconds ago Up 23 seconds 0.0.0.0:7100->6363/tcp, [::]:7100->6363/tcp

5.5 检查Damselfly容器日志
检查容器运行日志,确保Damselfly服务正常运行。
六、访问Damselfly服务
6.1 访问Damselfly首页
浏览器地址:
http://<个人的服务器IP>:7100,访问Damselfly初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。

6.2 上传图片
将本地图片上传到/data/damselfly/photos/目录下,如下所示:
root@jeven:/data/damselfly# cd photos/
root@jeven:/data/damselfly/photos# ls
v2-61dca6243b04c6eebc3d0c29891bbd49~resize_1440_q75.png v2-768e5c8c516926c529b73e6c4788a1a0~resize_1440_q75.jpg
v2-6dc50c16c4184fddd69718633cf9f267~resize_1440_q75.png v2-aa1fabee7fefc859930de3fcebbdc6d4~resize_1440_q75.png
root@jeven:/data/damselfly/photos#
6.3 浏览照片
刷新Damselfly页面后,即可看到所有的照片。

七、总结
通过本次实践,我们成功使用 Docker 快速部署了 Damselfly 照片管理系统,验证了其在容器化环境下的易用性与稳定性。借助 docker-compose 编排工具,仅需几条命令即可完成服务搭建,并通过挂载本地目录实现配置、缩略图和照片库的持久化管理。系统启动后,通过 Web 界面可高效上传、浏览和搜索海量图像,AI 识别与元数据功能表现流畅。Damselfly 凭借高性能、跨平台支持和非破坏性编辑特性,非常适合作为个人或团队的私有照片管理中心。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~


