前言

停用了google photos,虽然很早很早就开始用这个服务,但最近碰到了几件事,让我选择停用它。

  1. 权益缩水。从最初原图免费无限空间,缩水到高品质压缩图片免费无限空间,再缩水到免费15GB空间。不要相信云存储空间厂商的任何免费永久的承诺,哪怕是google这样的大厂背书。
  2. 祸及gmail。存储空间缩水到15GB以后,这个15GB由gmail、photos、driver三个服务共享使用,意味着,如果因为photos上传图片过多,或者driver上传文件过多,耗尽了这15GB空间,会导致gmail无法使用,因为没有多余空间来收发邮件了。这种情况只有两个方案可选,清理photos和driver腾出空间给gmail使用,或者订阅google one扩充空间。如果选择订阅google one,一定要留意,如果哪个月订阅费用扣款失败,gmail会因为没有剩余空间而无法使用。

以上两点原因,尤其是第二点,导致我必须、立刻开始寻找替代方案。

其实几个月前开始折腾nas的时候我就有考虑自建相册服务,几个方案:群晖自带的photo station、moments、synology photo,或者第三方的lychee、piwigo、photo prism、librephoto、photoview。但了解和体验下来,有几个核心问题一直无解:

  1. 不支持h265/hevc的图片和视频。因为h265复杂的版权关系,h265的图片和视频(heic、heif)基本不支持查看和生成缩略图。群晖有解决方案,但需要登录群晖账号才能在套件商店下载解码包。黑群可以自己安装ffmpeg来实现对h265媒体的支持,但网上看到很多人反馈时灵时不灵,很让人头疼。
  2. 不支持自定义图库位置。我有一个庞大的、积累多年的照片文件夹,有自己的目录结构,如果想要导入到这些相册服务中去,只有一个办法:通过相册的导入入口。而且这些相册一般都会把媒体文件按照日期进行归档,破坏掉原有的目录结构。

目前我从google photos切换到了immich,不仅解决了我的所有痛点,而且它的web和app界面都几乎1:1的模仿google photos,上手使用毫无难度。


安装

我的安装环境是debian 12 stable(bookworm)。因为跑docker服务需要root权限(可以通过一些设置用非root跑),关于权限、用户的问题这里不再赘述,需要自行解决。

immich的安装步骤在【官网】有文档,英语阅读无障碍的话可以直接看官网。

注意事项:

  • 安装需要占用5GB存储空间
  • immich自带的机器学习(图像主体识别、人脸识别)、视频转码非常占用资源,内存至少4GB
  • cpu性能无要求,但更强的cpu,上传、转码、机器学习就会更快更效率,使用体验会更好
  • immich的视频转码支持qsv、nvenc、vaapi硬件加速
  • 因为docker-hub被封,部署的时候拉镜像根本没速度,请改用国内镜像站,或者用VPN
  • 写这篇文章的当下(2023/10/05),immich版本1.81,实测支持自定义图库位置,edit user界面有个external path设置项,可以填入自定义图库的位置。填写以后,immich从图库读取图片的metadata、生成缩略图、图像识别,不会变动原图库的目录结构和原图。
  • 批量导入图片的方法请查看官网,入口:Bulk Upload (Using the CLI)

第一步:安装docker和docker compose。

apt install docker.io

apt install docker-compose

第二步:在本地创建immich目录

这个目录只是用来下载immich的docker-compse配置文件和env配置文件,随便建在那边都行。

mkdir immich

cd immich

第三步:下载两个配置文件

wget https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml

wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

第四步:编辑参数。

用文本编辑器打开.env文件,1.81.1版本的默认内容如下

# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables

# The location where your uploaded files are stored
UPLOAD_LOCATION=./library

# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release

# Connection secrets for postgres and typesense. You should change these to random passwords
TYPESENSE_API_KEY=some-random-text
DB_PASSWORD=postgres

# The values below this line do not need to be changed
###################################################################################
DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

REDIS_HOSTNAME=immich_redis

在最简单的配置模式下,只需要修改三个地方,其它都可以用默认设置。

  • UPLOAD_LOCATION,上传的文件的保存路径,根据自己的实际存储路径修改
  • TYPESENSE_API_KEY,搜索引擎的api key,可以自行用命令生成随机字符串后填入
  • DB_PASSWORD,数据库密码,可以自行用命令生成随机字符串后填入
  • 生成32位随机字符串的命令:openssl rand -base64 32

第五步:拉取镜像,启动容器。

到这一步执行以下命令以后,就会开始自动拉取镜像安装,等进度条跑完即可。

docker-compose up -d

本地一共会安装7个服务,明细如下:

REPOSITORY                                   SIZE
ghcr.io/immich-app/immich-server             1.77GB
ghcr.io/immich-app/immich-web                243MB
ghcr.io/immich-app/immich-machine-learning   1.74GB
ghcr.io/immich-app/immich-proxy              46.2MB
redis                                        27.4MB
postgres                                     235MB
typesense/typesense                          799MB

第六步:访问web。

等上述步骤都完成后,在浏览器中访问immich,默认端口2283,地址:http://host_ip:2283,移动端app的服务器地址:http://host_ip:2283/api


参考文章

  1. 【实用的开源项目】使用服务器部署Immich,高颜值高性能的自托管照片和视频备份方案 https://zhuanlan.zhihu.com/p/645242381
  2. Docker Compose [Recommended] https://immich.app/docs/install/docker-compose