自從google相片不在提供無限空間上傳後,就開始在想要怎麼備份照片。我是沒特別愛拍人照,但我習慣用手機記錄我去過的地方。而那時候還沒出現這麼好用的軟體,我也繼續使用google提供的15G空間。如今發現了immich,他可以說是完完全全的滿足我要的需求。

其操作方式跟功能幾乎跟google相片差不多外,從某種角度,我還覺得還比google相片好用,就是它可以直接指定外部存放相片的路徑。可透過網頁瀏覽也可以透過app(AndroidiOS)。

有時間軸索引照片、頭像索引照片、地區索引照片,還有我最愛的從地圖直接看你在那裡有拍過照(不過要記得開啟手機的定位才會寫入經緯度到Exif)

透過官方的步驟我是安裝不起來,以下是我安裝過程遇到的問題與解法

1.前面步驟與官方一樣
建立新目錄放置所有immich的docker組態與immich環境設定
[c]mkdir ./immich-app
cd ./immich-app[/c]
下載docker的設定檔
[c]wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml[/c]
下載immich-app的設定檔
[c]wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env[/c]
2. 重新命名example.env成.env
3. 改成docker-compose
官方是使用docker compose up -d來運行,但我的docker卻沒有compose參數
因此改用docker-compose來執行,以下是安裝方式
[c]sudo apt-get update
sudo apt install docker-compose[/c]
4. 安裝好後運行出現以下錯誤
[c]docker-compose up -d
ERROR: In file ‘./docker-compose.yml’, service ‘name’ must be a mapping not a string.[/c]
原來是版本的問題
[c]docker-compose –version
docker-compose version 1.25.0, build unknown[/c]
移除舊版本(如果有):
[c]sudo rm /usr/local/bin/docker-compose[/c]
下載最新版本:
[c]sudo curl -L “https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose[/c]
設置可執行權限:
[c]sudo chmod +x /usr/local/bin/docker-compose[/c]
5. 再執行一次,還是出現以下錯誤
[c]docker-compose up -d
[+] Running 0/0
⠋ Container immich_redis Creating 0.1s
⠋ Container immich_postgres Creating 0.1s
⠋ Container immich_machine_learning Creating 0.1s
can’t set healthcheck.start_interval as feature require Docker Engine v25 or later[/c]
這個錯誤提示是由於你的 Docker 引擎版本太舊,無法支持 healthcheck.start_interval 配置。start_interval 是在 Docker 引擎 1.29 版本之後引入的,而你的版本低於此版本
如果你暫時無法升級 Docker 引擎,你可以移除 start_interval 配置,Docker 仍然可以運行 healthcheck,但不會有 start_interval 的延遲設置。
從 docker-compose.yml 文件中移除或注釋掉 start_interval

這裡我稍微講一下docker-compose.yml和.env需要注意的地方
以下是docker-compose.yml的部分內容
[c]
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
– ${UPLOAD_LOCATION}:/usr/src/app/upload
– /etc/localtime:/etc/localtime:ro
– /yourpath/photos:/yourpath/photos:ro
env_file:
– .env
ports:
– ‘2283:2283’
depends_on:
– redis
– database
restart: always
healthcheck:
disable: false
[/c]
其中要有一個觀念就是,docker是一個容器,要跑的東西都會是在docker,所以會有mapping的關係
volumes:是設定你硬碟路徑,Immich提供很好用的直接掃描外部硬碟上的既有像片。

因此加入的- /yourpath/photos:/yourpath/photos:ro,左邊紅色的部分是主機上的實體路徑,右邊綠色的部分是掛載到docker容器裡的路徑,而且設定成ro唯讀。

同理ports:的設定抑是如此,- ‘2283:2283‘,左邊紅色的部分是主機上的實體port,因此如果你主機上2283 port已經被占用的話,可以考慮將紅色的地方改成其他port,而右邊綠色則是docker裡Immich的預設port,可以不用更改。

以下是.env的部分內容
[c]
# 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 location where your database files are stored
DB_DATA_LOCATION=./postgres
[/c]
這個檔案原則上是不用做任何修改,主要是要注意UPLOAD_LOCATION=./library是你相片如果是透過上傳的方式,就會存放在這裡。包含掃描指定路徑照片所產生的thumbs也是。若怕預設的地方空間太小,可以另外指定到其他硬碟路徑。DB_DATA_LOCATION=./postgres則是Immich的使用者一些設定存放的地方,也會隨著你相片變多而增大,但原則上是不會太大,差不多就幾百MB左右。

最後如果要停用Immich只要到放置docker-compose.yml的目錄下docker-compose down指令即可。

[2024.10.29更新]使用 Apache 作為反向代理來為 Immich 配置 HTTPS

以前都是用google相片的空間來貼我blog的圖片或旅遊的照片。現在自然就要轉到Immich了,好在Immich也有提供一樣的功能,建立分享鏈結允許知道鏈結的人查看照片。

但這時如果是使用SSL憑證的連接方式,會出現如下錯誤

這時候你就要幫你的憑證,憑證申請方式請參閱-設定Apache VirtualHost加入Let’s Encrypt SSL

以下是申請完後要做反向代理的apache conf設定
[c]

ServerName your.domain.com.tw

# 將所有 HTTP 請求重定向到 HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


ServerName your.domain.com.tw

# 設定 SSL 證書路徑
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/your.domain.com.tw/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your.domain.com.tw/privkey.pem

# 設定反向代理到 Immich 服務
ProxyPreserveHost On
ProxyPass / http://localhost:2283/
ProxyPassReverse / http://localhost:2283/

[/c]
這樣就大功告成囉~之後連自己的相簿也不用在後面加port號,直接就用443 port就可以導到2283 port囉!!

Leave a comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *