中文互联网上搜索immich,出来的内容基本都是大同小异的immich介绍,最多再带点安装的简单说明。其实immich的安装根本不是啥难事,完全可以算得上傻瓜级别。
然而更深入一步,就鲜有中文内容的介绍了。一是这个immich系统目前没有中文界面,国内用户少;二是大神们懒得对简单问题作更多解释。
但对于计算机小白而言,现实的困难还是有的。为解决这些困难与问题花费了笔者不少时间。为了避免更多的人浪费时间,特在此把几个问题一并说清楚。(以下内容建立在您已经通过docker安装完immich的基础上。如果不会安装,请自行百度,网上中文教程还是有的。)
一、导入原有相册、外部资料库及immich CLI的使用
相信大部分用户在安装完immich后都有一堆照片视频等着导入。如果这些照片视频全部都在手机上,那么用immich移动app的备份功能很容易就能办到。但如果您像笔者一样打算把mac照片app中存放了十多年的庞大图库迁移到immich,就没有这么容易了,网页版不适合大量图片视频的上传,最简单的办法是利用外部资料库来导入。如何建立外部资料库?仅仅三步:1、修改您部署immich的docker compose文件,找到下面这部分,按照您指定的path增加一行volume参数。
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
command: [ "start.sh", "immich" ]
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
- (您指定的path):/usr/src/app/external
2、点击右上角“Administration”,然后点击编辑用户的按钮,确认“External Path”这一栏的内容与下图一致
3、点击右上角圆形图标并在弹出框中点击“Account Settings”,找到“Libraries”一栏并点击“Create External Library”,然后点击右侧圆形三点图标,编辑输入path,一般来说也是/usr/src/app/external/
。
注意,第2步与第3步中的Path不是必须完全一致,第3步Path的应当属于/usr/src/app/external/
内。完成上述步骤后,点击“Scan New Library Files”就开始导入文件了。
当然,如果您像笔者一样有一点点整齐强迫,那么一定会用某种有组织且系统的方式来管理相册,比如建立相簿。mac照片可以把所有相簿作为文件夹导出照片及视频,然而经过笔者的实际测试发现,外部资料库导入的方式并不会根据文件夹名称生成album,而在immich中重新去组织照片并形成album也不太现实,所以必须祭出大杀器:immich CLI了。
immich CLI是通过命令行导入相册的工具。官方说明其实挺容易理解,链接在这里。这里只有两点要补充,一是immich upload的“directory/”是宿主机上的位置,不是immich容器内的位置。所以如果要使用immich CLI最好先把相册数据放到宿主机的指定位置上。二是immich upload –album –recursive命令其实一点都不好用,会莫名其妙把单个照片变成一个album,而真正要的album却是空的。最合理的方式是用immich upload –album-name命令,一个文件夹一个文件夹地导入。
二、immich机器学习功能的开启
immich的一大特色功能就是引入了AI模型去对照片的人物、内容进行标识,并对人物面部进行识别。导入照片后,当您兴冲冲打开“People”,会发现里面空无一人。网上可能也能搜到说这是国内网络的原因,给出的解决方案无非是代理等不是办法的办法。实际上,机器学习功能不工作的原因,是因为提供大模型的Huggingface的网站打不开,没有了大模型,自然也就不能进行机器学习。而解决的办法也很简单,把原有下载的路径改成Huggingface的镜像站网址即可。——前面就是笔者在中文网页上搜到的信息,大神的解决方案很好,但对于小白而言完全没有价值,所有这些信息都没有说应该如何操作去解决这个问题。
幸而最后找到了这里,找到了简单易行的解决办法:打开docker/immich-app目录里的.env文件,在最后添加一行:HF_ENDPOINT=https://hf-mirror.com
。重新部署后就会发现immich_machine_learning容器正在下载大模型文件。下载完成后会对照片进行识别与分析。而人脸识别则是要等识别与分析全部完成后才会开始。
三、immich数据库的备份与恢复
immich使用postgres数据库来存放用户、照片信息及其他数据,一旦docker所在磁盘出现问题,物理迁移文件可能并不会将数据库资料一并迁移,你得到的将会是一个空白的数据库——对于存放大量照片视频的用户而言,这绝对是一场巨大灾难。为此,我们需要及时对数据库进行备份,并在灾后以正确方式重建。
1、备份数据库
在docker中安装immich,自然还是通过docker进行备份更合理。把以下代码加入你的docker-compose.yml文件并部署,运行容器实现postgres数据库的自动备份。
services:
...
backup:
container_name: immich_db_dumper
image: prodrigestivill/postgres-backup-local:14
env_file:
- .env
environment:
POSTGRES_HOST: database
POSTGRES_CLUSTER: 'TRUE'
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: ${DB_DATABASE_NAME}
SCHEDULE: "@daily"
POSTGRES_EXTRA_OPTS: '--clean --if-exists'
BACKUP_DIR: /db_dumps
volumes:
- ./db_dumps:/db_dumps
depends_on:
- database
2、恢复数据库
如果需要恢复数据库,前提是删除docker中整个immich项目。如果不完整删除,则不会恢复成功,你所看到的依然会是注册admin新用户的界面。然后在immich项目建立但从未运行的情况下逐条运行下列代码(避免在docker的图形界面操作,防止immich项目自己运行。如果immich项目已经运行过了,删除项目重新操作)。
cd (immich的docker目录)
docker-compose down -v # 注意!所有的原数据库资料都将抹去
# rm -rf DB_DATA_LOCATION # CAUTION! Deletes all Immich data to start from scratch.
docker-compose pull #拉取最新的镜像
docker-compose create
docker start immich_postgres
sleep 10
gunzip < "最新的备份文件路径.dump.sql.gz" \
| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
| docker exec -i immich_postgres psql --username=postgres
docker-compose up -d
以上就是对于immich几个细节问题的说明。经过几日的使用,笔者觉得这个相册系统还是比较好用,打算再测试一段时间没问题就完全替换掉单机的mac照片。最后,感谢您的耐心阅读!
请教下博主,你的网站是用啥搭建的,github+Jekyll吗?
WordPress
想请教个问题,immich备份的话,我发现他的library下,还会有所有图片的略缩图。这样子似乎不太好备份。可以只备份原图片和数据库,然后完成数据的恢复吗?
缩略图与原图应该不是在同一个文件夹里的吧。不过我还是建议依照官方的备份方法操作。
老哥,unraid下用immich-cli教程有吗,我用docker装的,但是运行不了,找了一天资料,没有找到解决办法
运行不了是什么意思
目前,我在使用immich过程中有两个问题,1:微信保存的照片导入后,显示时间里的时区不对,相机拍摄的是能正常显示Shanghai时区。2:手机原来的照片通过外部资料库导入了,用immich客户端同步照片时不能排除已经导入的照片
第一个问题其实是微信导致的,微信中保存的照片不会显示原来的照片信息。
第二个问题无解,只能靠自己避免。
我的时区也有问题,而且本来16点拍摄的照片,会自动+8为22点,然后显示GMT+8区,相机和一部分手机都有,麻了