飞图 FlyPic 使用教程
它是什么、适合谁
FlyPic 飞图是一个本地图片素材库:把你散落在 NAS 各处的几十万张图片集中浏览、检索和管理,瀑布流滚动不卡,搜文件名之外还能搜图片里的文字——截图、海报、扫描件里写了什么,输入关键词就能翻出来(中英文都认)。
它原本是飞牛 fnOS 应用商店里的应用,上游开发者停更归档后,这个分支把它改成了普通 Docker 容器:不依赖飞牛应用框架,任何装了 Docker 的 Linux 机器都能跑。所有数据都在你自己的目录里(素材库下的隐藏目录 .flypic),不上传任何云端,也不会动你的原图。
快速开始
- 编辑仓库里的
docker-compose.yml,把volumes里的示例路径换成你的图片目录(容器内路径与宿主机保持一致,中文路径直接填):
yaml
volumes:
- /vol2/1000/HD2/壁纸:/vol2/1000/HD2/壁纸
- /vol1/1000/HD1/docker/flypic/config:/root/.flypic
- 启动:
bash
docker compose up -d --build
- 浏览器打开
http://<主机IP>:15002,首次访问设置管理员密码。 - 进入后添加素材库(填刚才挂载的目录),对它执行扫描——扫描会建索引、生成缩略图并提取图片内文字,只有扫描完成后 OCR 文字才能被搜到。
- 之后日常更新:加新目录就在
volumes加一行挂载再docker compose up -d;升级程序用git pull && docker compose up -d --build。
界面速览
打开面板看到的第一屏是访问密码页:淡色背景正中一张卡片,写着「FlyPic 飞图 / 请输入密码访问」,输入「访问密码」后点渐变的「登录」按钮进入素材库,卡片底部是「轻量 · 快速 · 稳定的图片素材管理」的标语。
常用操作
- 按文件名搜索:在搜索框输入关键词,多个词是 AND 关系(全部命中才显示)。
- 搜图片里的文字:同一个搜索框即可——索引同时匹配文件名与
ocr_text(图片内中英文文本)。识别不出来或刚加的图搜不到时,先对该素材库重新扫描。 - 多选与预览:单击选中,
Ctrl/Shift连续多选,双击放大预览;右键菜单有批量操作,误操作可撤销。 - 添加更多素材库:支持多个目录,只要在 compose 里把每个目录按「同路径」挂进去,重启后在界面里逐个添加。
- 只读挂载:v1.1.0 起添加素材库只校验目录「可读」、不再要求可写,因此
:ro挂载的目录也能正常添加进列表。 - 换机器 / 重装:素材库里的
.flypic是全部索引,删掉它再重新扫描就能重建;应用配置(管理员密码、素材库列表)在挂载的config目录里,备份它就保住了登录与配置。
常见问题
- 新加的图片搜不到? 索引不是实时全量的:新增素材库或新增文件后需要触发扫描,扫描同时负责 OCR 提取,没扫过的图片没有
ocr_text。 - OCR 一直不出结果? 镜像里已预装
tesseract-ocr与chi-sim、eng语言包;OCR 失败不会中断扫描(文件名搜索仍正常),可先确认容器日志里 OCR 是否报错,再对该库重新扫描。 - 提示
Path does not exist? 挂载路径必须与容器内路径一致(compose 里写成- 宿主机路径:容器内相同路径),中文目录名没问题。 - 添加素材库报
Internal server error? 这是旧版本缺require的 bug,v1.1.0 已修复,先升级到当前版本。 - 哪些文件能浏览? 完整支持 JPG、PNG、WebP、GIF、BMP、TIFF、SVG;视频(MP4/MOV/AVI…)、音频、PDF/TXT 文档、PSD/AI 设计文件可以识别列出,但不是图片预览的主力格式。
- 会改动我的原图吗? 不会。它只在素材目录建
.flypic隐藏目录(缩略图 + SQLite 索引),原图一个字节都不碰。
更新与版本
- v1.1.0(2026-08-05):Docker 独立部署版——多阶段 Dockerfile + compose,脱离飞牛应用框架;新增 OCR 图片文字搜索;修复添加素材库
Internal server error、只读挂载目录添加失败、中文路径提示Path does not exist三个问题;瀑布流交互补注释(单击选中 / Ctrl·Shift 多选 / 双击放大)。 - v1.0.0(2026-03-27,上游):修复筛选不生效、优化拖入文件上传速度,上游 README 加上停更说明(原开发者不再使用飞牛,项目归档)。
升级命令就是 git pull && docker compose up -d --build,索引和配置都在挂载卷里,升级不会丢。