开源自托管相册服务Immich的安装
前言
停用了google photos,虽然很早很早就开始用这个服务,但最近碰到了几件事,让我选择停用它。
- 权益缩水。从最初原图免费无限空间,缩水到高品质压缩图片免费无限空间,再缩水到免费15GB空间。不要相信云存储空间厂商的任何免费和永久的承诺,哪怕是google这样的大厂背书。
- 祸及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。但了解和体验下来,有几个核心问题一直无解:
- 不支持h265/hevc的图片和视频。因为h265复杂的版权关系,h265的图片和视频(heic、heif)基本不支持查看和生成缩略图。群晖有解决方案,但需要登录群晖账号才能在套件商店下载解码包。黑群可以自己安装ffmpeg来实现对h265媒体的支持,但网上看到很多人反馈时灵时不灵,很让人头疼。
- 不支持自定义图库位置。我有一个庞大的、积累多年的照片文件夹,有自己的目录结构,如果想要导入到这些相册服务中去,只有一个办法:通过相册的导入入口。而且这些相册一般都会把媒体文件按照日期进行归档,破坏掉原有的目录结构。
目前我从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
。
参考文章
- 【实用的开源项目】使用服务器部署Immich,高颜值高性能的自托管照片和视频备份方案 https://zhuanlan.zhihu.com/p/645242381
- Docker Compose [Recommended] https://immich.app/docs/install/docker-compose