大家好,這里是Cherry,喜愛折騰、撿垃圾、玩數(shù)碼,熱衷于分享NAS、docker玩耍經(jīng)驗~
前言
家庭相冊管理一直是我們?nèi)粘I畹男枨?,不論是為了緩解“岌岌可?!钡氖謾C容量,還是打造家庭、兒童成長相冊,或者是對攝影圖片進行保存、匯總,都不可避免的需要接觸到種類繁多的數(shù)碼相冊軟件。
一般來說,蘋果用戶會選擇icloud作為手機存儲和管理工具,安卓用戶則會選擇google photos,也有一部分用戶選擇網(wǎng)盤工具來管理和上傳照片,雖然方便,但是卻有幾個缺點。一個是相冊上云,隱私不在;二是存儲越來越多,費用越來越高。
那么,如何避免這些問題呢?答案很簡單,那就是自建免費的相冊管理工具,讓全家的照片統(tǒng)統(tǒng)存在NAS或電腦里。
一、NAS原生相冊和開源相冊怎么選?
1、哪些NAS的自帶相冊比較不錯。
有NAS的人都知道,無論是群暉、極空間、威聯(lián)通,還是綠聯(lián)、海康、華為等,都擁有自己的相冊管理軟件,并且擁有配套的APP和客戶端。
其中,Cherry比較推薦的原生相冊管理軟件有群暉、極空間、威聯(lián)通,這三款NAS自帶的相冊軟件無論是適配性、易用性都很不錯,其中極空間的極相冊最優(yōu)秀,支持家庭相冊、兒童成長相冊等多功能,支持高性能的AI分析功能;威聯(lián)通支持快速檢測、使用方便程度稍遜極空間一些;群暉新版的photos則是萬金油應(yīng)用,沒有太出色,但是各方面都可圈可點。如果購買了這三款NAS的,基本用自己的系統(tǒng)就可以了。
綠聯(lián)的話APP本身功能是足夠的了,挺好用,不過AI自定義模型訓(xùn)練上依舊有些問題??梢栽俚鹊裙俜絻?yōu)化再使用。剩下的NAS品牌相冊功能就比較一般了,開源完全可以代替。
2、開源相冊怎么選?
目前主流的開源相冊分別是immich、photoprism、ente、荔枝、piwigo等。這里主要可以拿來說一下的就是immich、photoprism、ente三款,剩下的比較簡易和輕量化,適合照片數(shù)量不多的人使用。
Photoprism:
在幾年前photoprism用的人還是挺多的,和immich可以一較上下,雖然支持AI分類、搜索,但是不支持clip,導(dǎo)致使用人數(shù)已經(jīng)越來越低了,而且其亞洲人臉識別率很低。
Ente:
Google Photos的模仿者,擁有端對端加密的特點,本身可以看作是一款商用軟件,支持空間付費等。不過成也蕭何敗也蕭何,端對端加密讓應(yīng)用幾乎無法和其它應(yīng)用去聯(lián)動,所以對于個人用戶而言,反而不是很友好。
Immich:
開源相冊系統(tǒng)中的T0,也幾乎是用戶的唯一選擇。7月19日,immich宣布了關(guān)于軟件收費的公告,不過說收費,更多的應(yīng)該是捐贈后給予一個身份認證的意思,就算普通用戶不捐贈,依舊可以無償使用immich的所有服務(wù)。
之后,immich新版本中,在左下角增加了未經(jīng)授權(quán)的字樣,雖然這個未經(jīng)授權(quán)不是強制的,但是讓用戶感覺很不舒服,于是有大佬給出了自定義CSS修改方案,同時,這個決定這讓開發(fā)團隊在github上被狠狠的吐槽了一番。
不過好的是,immich聽取了社區(qū)的意見,在隨后的更新中決定取消未授權(quán)字樣。目前最新的v1.111版本中,已經(jīng)完全沒有相關(guān)提示了。
本文基于immich最新v1.111.0版本,重新介紹如何安裝這一套開源相冊管理工具,并且通過一系列的DIY手段,解決外部存儲、中文Clip、人臉識別、顯卡轉(zhuǎn)碼加速、中文地圖等等問題。
二、Immich系統(tǒng)部署方法
1、導(dǎo)入鏡像
如果無法訪問docker下載地址的,可以通過本網(wǎng)盤下載鏡像壓縮包(exe格式),解壓為tar格式以后上傳至NAS的自定義路徑。然后通過NAS的鏡像導(dǎo)入功能導(dǎo)入,或通過ssh輸入以下指令導(dǎo)入??
阿里:/kK4M9gHgFz7
提取碼: tr40
# path代表真實路徑,XXX.tar代表鏡像壓縮包
docker load -i /path/XXXX.tar
2、compose代碼
新建文件夾路徑/volume1/docker/immich,在目錄下新建或上傳【docker-compose.yml】文件,復(fù)制compose代碼并修改
version: "3.8"
name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
# 如果怕修改原有照片,最后加上ro,否則刪除ro
- ${PHOTOS_LOCATION}:/usr/src/app/external:ro
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- 2283:3001
depends_on:
- redis
- database
restart: always
immich-machine-learning:
container_name: immich_machine_learning
# 不同硬件可以在鏡像后增加[armnn, cuda, openvino] 標簽,比如支持cuda的獨立顯卡加速,可以為 ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
# 下面的代碼開啟核顯轉(zhuǎn)碼加速
# devices:
# - /dev/dri:/dev/dri
volumes:
# 這個目錄存放AI模型
- /volume1/docker/immich/model:/cache
restart: always
redis:
container_name: immich_redis
image: library/redis:6.2-alpine
restart: always
database:
container_name: immich_postgres
image: tensorchord/pgvecto-rs:pg14-v0.2.0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
#自定義data位置
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
restart: always
command: ["postgres", "-c" ,"shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"]
同一個路徑下,增加【.env】文件,代碼如下
TZ=Asia/Shanghai
IMMICH_VERSION=release
HF_ENDPOINT=https://hf-mirror.com
# 自定義的上傳照片存放路徑,群暉需要先創(chuàng)建好
UPLOAD_LOCATION=./library
# 自定義的數(shù)據(jù)庫存放路徑,群暉需要先創(chuàng)建好
DB_DATA_LOCATION=./postgres
# 自定義的外部庫存放路徑
PHOTOS_LOCATION=/volume1/homes/name/Photos/
# 下面修改數(shù)據(jù)庫賬號密碼等信息
DB_PASSWORD=postgres
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
3、各NAS系統(tǒng)部署項目方法
方法一:通用SSH部署compose(NAS、服務(wù)器、PC通用)
# 來到文件夾目錄
cd /volume1/docker/容器名/
# 啟動容器
docker-compose up -d
方法二:群暉部署compose
打開Container Manager,選擇項目,點擊新建,選擇路徑,點擊下一步即可
方法三:威聯(lián)通部署compose
打開Container Station,選擇【應(yīng)用程序】,點擊【創(chuàng)建】,將代碼復(fù)制進去,點擊驗證后部署即可
方法四:鐵威馬部署compose
打開Docker Manager,選擇【項目】,點擊【+】,選擇文件路徑以后,填入代碼即可
三、Immich完整版配置方法
Storage Template功能建議大家不要開啟,這樣可以保持原有的文件格式。
首先我們來切換中文界面,點擊右上角賬號,選擇【Account Settings】-【Language】,把【English】切換成【Chinese (Simplified)】
一、外部庫解決群暉重復(fù)照片問題
接著,我們來引入外部圖庫,即原來通過其它方式傳入NAS的圖片,我們都可以將它們引入為immich的外部圖庫,進行集中管理。
點擊新建圖庫最右側(cè)的【…】,選擇【編輯導(dǎo)入路徑】,然后把我們在compose代碼里設(shè)置的容器內(nèi)路徑填入,比如本文中的【/usr/src/app/external】。
完成以后,針對群暉用戶,點擊【掃描設(shè)置】,填入【**/SYNOPHOTO_*.** 】、【**/@eaDir/*】等等,這個是群暉photos默認生成的縮略圖、縮略視頻。如果不排除,immich會把群暉的低質(zhì)量照片掃描4份左右,而且無法通過重復(fù)文件刪除,特別麻煩。其它系統(tǒng)可以根據(jù)自定義忽略內(nèi)容,比如、【**/tmp/*】。
這兩個設(shè)置好以后,點保存,然后依舊點【…】,選擇【掃描新的圖片文件】
然后捏,我們就可以在immich里看到含群暉原有相冊在內(nèi)的照片啦。
二、解決模型無法下載,以及無法使用中文clip問題
目前的版本,不論是clip還是人臉都需要從hugging face下載,國內(nèi)網(wǎng)絡(luò)不通,加上鏡像庫也無法下載。因此要使用AI功能,我們需要先下載模型。
支持中文clip的模型【XLM-Roberta-Large-Vit-B-16Plus】,人臉識別的模型【buffalo_l】,國內(nèi)可以通過下面的鏡像站訪問,也可以通過cherry的網(wǎng)盤下載。
# 網(wǎng)盤
阿里云盤:s/kK4M9gHgFz7
提取碼: tr40
# 抱臉蟲的鏡像站
https://hf-mirror.com/immich-app/
最終的路徑如下
# 自然語言檢索的路徑
.../cache/clip/XLM-Roberta-Large-Vit-B-16Plus
# 多模態(tài)CLIP
.../cache/Multilingual CLIP/XLM-Roberta-Large-Vit-B-16Plus
文件夾路徑示例,可以參照這個
保存以后如果日志有提示說明正確
完成以后,記得到任務(wù)里去跑一下智能搜索,如果照片多的話,會使用很長時間,而且因為是cpu跑的,基本NAS就做不了其他事情了。
分別搜索【女孩】、【馬】、【太陽】,可以正確檢索出相關(guān)的圖片并排序。
三、增加顯卡加速
顯卡加速一共有2個用途,一個是給AI算法加速(之前代碼備注了,有cuda鏡像可以下載,這里就不討論了),一個是給轉(zhuǎn)碼加速。常規(guī)的NAS因為無法外置顯卡,采用的都是核顯,所以只能轉(zhuǎn)碼加速,方法和emby等一樣,增加/der/dri即可。
在代碼里已經(jīng)說明了,需要核顯加速的取消#備注即可
重新創(chuàng)建immich堆棧,完成以后,來到【設(shè)置】-【視頻轉(zhuǎn)碼設(shè)置】
打開【硬件加速】-【加速器API】-【快速同步(Quick Sync)】就ok了,記得保存哦
四、增加中文地圖
給immich增加中文地圖的方法,是對地圖樣式進行修改。根據(jù)值友@范先森94的方法,注冊MapTiler并生成樣式即可。
登錄并注冊MapTiler,選擇【newmap】
在頁面上選擇右下角的【CUSTOMIZE】。進入下面的頁面后,點擊左側(cè)把語言更改為中文
選擇自己所在地區(qū),點擊【定位】按鈕固定默認位置
點擊右上角Save保存
點擊publish發(fā)布地圖
完成以后退回上一頁,選擇紅框內(nèi)的style,點擊復(fù)制
回到immich,路徑【管理】-【設(shè)置】-【地圖與GPS設(shè)置】,把地圖復(fù)制到淺色模式下保存。
可以看到,已經(jīng)默認為我們設(shè)置的地圖樣式和定位了
作者聲明本文無利益相關(guān),歡迎值友理性交流,和諧討論~
,