RHEL 9 安装和使用照片管理工具Immich
这篇文章介绍我最近使用的一个照片整理工具Immich 并把它和我以前使用的另一个软件PhotoPrism根据我的个人体验做个比较。
为什么使用照片工具
随着岁数增长,家里积累的照片也越来越多,来源也分多种,早起都是使用数码相机拍摄后传到电脑里保存,现在都是手机为主了,随着手机的更换,照片也越来越多,迫切需要一个地方来保存和整理照片和视频。因为我自己就开设了服务器,所以想着如果能把所有照片和视频都集中在一起就好了。虽然我也使用iCloud用来存储照片,但是总觉着还是要在本地做个本分才安心,毕竟放在云端的东西,你能访问,别人通过一些手段也能访问到,万一遇到什么故障之类的,照片丢了就麻烦了。这些照片对别人可能意义不大,但对于我们自己,这毕竟代表了一段珍贵的家庭生活记忆。所以我对这类软件有如下要求:
- 支持self host,这个是必须,所有照片和视频文件都必须保存在本地,我必须对本地资源能有完全控制。
- 支持按时间线顺序显示,这样方便查看显示
- 支持一处集中显示,用户界面友好,比如通过一个网页或者文件夹来查看所有照片。
- 最好支持重复照片自动去重功能,因为历时多年,有些照片可能被备份到了多处,需要去重。
- 具备地理位置显示功能,能通过照片里的信息在一个地图上显示(老照片没有地图信息,只有新的手机拍的会带位置信息)
- 具备分享功能,可以方便分享给亲朋好友。
Photoprism和Immich
这两个软件我都用过,都是类似的安装部署步骤和使用方法:
- 都可以使用docker方式安装。
- 都提供了一个网页,按照时间分类,登录后可以上传,浏览或下载照片。
- 都提供了人脸识别,地图位置标注等。
- 都有手机端app可供使用
我最开始使用的是PhotoPrism,最近切换到了Immich,主要是有两个原因: - PhotoPrism的地图显示功能收费了,每月要至少2欧,钱倒不多,只是额外支付,并且是向欧洲的公司付钱,还是嫌麻烦。
- 它把所有上传的图片都重新命名了,以它能识别的时间格式,比如20220105-123456.jpg,这个我不喜欢,我想保留照片原来的文件名,因为保留原来照片名可以方便我在将来迁移到别的照片工具。iCloud提供了原文件下载功能。
- Immich支持一个Node.js版本的CLI工具,使用它可以批量上传照片而不需要通过网页手动上传,这点在我把PhotoPrism里的照片迁移到Immich时特别高效,要知道我可是在操作几百G的文件,手动网页上传得到什么年月才能结束。
- Immich备份和还原非常容易,容易迁移到别的电脑
安装Immich
使用docker-compose的方式安装,很简单,只要建1个文件夹,然后它在里面配置一下docker配置文件,接着启动docker运行,就会自动下载所需docker镜像并安装到该文件夹下了,整个过程不会安装任何程序到系统,不会影响现在系统的运行。习惯了docker的方式后,我对那些直接安装到系统的程序现在都是有些顾虑了。因为有过多次使用经历,系统本来运行好好的,新安装了一个程序后,它安装或更新了一些依赖库的版本,从而导致某些依赖不同版本库的软件报错了。
照着官方的安装指导,几步就可以完成了:
- 创建1个文件夹以保存
docker-compose.yml
and.env
文件夹。1
2mkdir ./immich-app
cd ./immich-app - 下载模版
docker-compose.yml
and.env
到这个文件夹里:1
2
3
4
5
6# Get docker-compose.yml file
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
# Get .env file
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
cd ./immich-app - 修改下载完的两个文件。这个按需配置,可以设置immich的访问端口等。
- 启动运行:然后就可以通过网页和配置的端口进行访问了。
1
2
3
4docker compose up -d
# 停止
docker compose down
升级Immich
1 |
|
备份Immich
这个我是我喜欢Immich的一点,它的备份和还原操作比较简单,而且有详细的操作指导页面
备份主要分两块:
- 照片资源文件
- 照片数据库信息
照片备份这个就是直接把immich-app整个文件夹备份下来就行了。可以使用rsync
1 |
|
照片数据库使用的是postgres,所以使用传统方式备份数据即可:
1 |
|
还原Immich
还原文件很容易,只是注意要路径匹配,我没有试验如果还原到不同文件夹下是否仍然有效(即数据库里照片路径是绝对路径还是相对路径),如果是相对路径那还好办,如果数据库保存的是绝对路径,那么就要求还原后的文件路径必须和备份前的原始路径一直。我是从一台电脑迁移到另一台电脑,我直接创建了相同用户名并在home目录下使用了相同的immich文件夹名,来避免任何可能的路径不一致带来的麻烦。
还原数据库这块有些注意点,原作者写了这个note:
1 |
|
基本就是删掉已使用的data,然后单独启动Postgres docker,导入备份的数据库后,再启动整个Immich app,因为Postgres 数据库的 docker容器早已启动,所以可以直接使用:
1 |
|
配置Nginx作为反向代理访问Immich
Immich默认使用3001端口接受网络请求,因此我们可以通过Nginx作为反向代理把它重定向到本机的80和443端口。下面举个例子:
1 |
|