一个简单的自托管图片库HomeGallery

什么是 HomeGallery ?

HomeGallery 是一个自托管的开源 Web 图片库,用于浏览个人照片和视频,其中包括标记、对移动端友好和 AI 驱动的图像和面部发现功能。

HomeGallery 的独特功能是自动 相似图像/反向图像搜索功能无数据库架构 (所有搜索和过滤都在客户端浏览器上快速完成)。这会带来快速响应的用户体验,无需任何手动步骤即可导航和探索档案。

官方提供了演示网站:https://demo.home-gallery.org/

命令行安装

采用 docker-compose 安装方式,将下面的内容保存为 docker-compose.yml 文件

这是在官方的 docker-compose.yml 基础上修改的,老苏保留了修改痕迹,方便你知道改了哪些内容;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
version: "3.9"

services:
api:
# custom build via
#build: packages/api-server
image: xemle/home-gallery-api-server
container_name: home-gallery-api
environment:
# TensorflowJS backends
# - cpu: slowest and best support
# - wasm: good perfromance for arm64 and amd64 platforms
# - node: best performance on amd64 platform
#- BACKEND=cpu
- BACKEND=wasm
#- BACKEND=node

gallery:
# custom build via
#build: .
image: xemle/home-gallery
container_name: home-gallery-server
environment:
- GALLERY_API_SERVER=http://api:3000
#- GALLERY_API_SERVER_CONCURRENT=1 # On low powered devices
#- GALLERY_API_SERVER_TIMEOUT=60 # On low powered devices
- GALLERY_OPEN_BROWSER=false
volumes:
- ./data:/data
# Mount your media directories below /data
- /volume2/docker/photoprism/photos:/data/Pictures
ports:
- "3045:3000"
user: "${CURRENT_USER}"
entrypoint: [ 'node', '/app/gallery.js' ]
command: [ 'run', 'server' ]

几个主要变量的说明:

  • BACKEND:这个是配置 TensorflowJS 的环境变量,分为:

    • cpu:这个速度最慢,但是兼容性应该是最好的;
    • wasm:这个在 arm64amd64 平台的都具有良好的性能;
    • node:这个在 amd64 平台上的能获得最佳性能;
      所以,其实按老苏的机器,应该是选 node的。
  • GALLERY_API_SERVER:指 API 服务器的地址,这里用的是相对地址,所以你可以不用管;

  • GALLERY_API_SERVER_CONCURRENT:设置并发数,这个在低功耗的机器上才需要打开,比如树莓派;

  • GALLERY_API_SERVER_TIMEOUT:设置超时,也是低功耗设备才需要设置;

  • /data 卷:用于存放 SQLite、缩略图和设置等;

  • /data/Picture 卷:用于放照片和视频文件,可以指向一个已经存在的图库,也可以是新建的。老苏指向了之前 PhotoPrism 的照片库,省得占用空间 😄

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
11
# 新建文件夹 homegallery 和 子目录
# 如果用现有照片库,可以不建 pictures 目录
mkdir -p /volume2/docker/homegallery/{data,pictures}

# 进入 homegallery 目录
cd /volume2/docker/homegallery

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:3045 就能看到主界面

是不是觉得有点奇怪,为什么明明指定的照片目录已经有文件,但是却是一片空白,不要慌,因为还需要做个初始化操作

1
2
3
4
5
6
7
8
# 进入容器
docker exec -it home-gallery-server /bin/sh

# 进入 app 目录
cd /app

# 初始化目录
./gallery.js init --source /data/Pictures

用上下键选择不同的选项,第一步选 Update and process source files

然后回车,老苏第二步选择了 Process all files (one run)

回车后开始执行,看起来似乎是做了索引和缩略图操作

再回到页面,刷新一下,这下所有的图片都出来了

HomeGallery 支持标记和搜索,也可以按年份查看图片。随便打开一张,识别的物体,当然这显然不是 vase

识别出是人,而且是男性

女性

在右上角的搜索框中输入 person

回车之后

移动端,比如 Android 手机上,用 Edge 浏览器打开网站

打开图片

i 进入详情页

从资源占用看,老苏觉得还好

参考文档

xemle/home-gallery: Self-hosted open-source web gallery to view your photos and videos featuring mobile-friendly, tagging and AI powered image discovery
地址:https://github.com/xemle/home-gallery

HomeGallery - self-hosted web gallery
地址:https://home-gallery.org/