以安全的方式分享您的 Immich 照片和相冊,而不會將您的 Immich 實例暴露給公眾。
設定時間不到一分鐘,而且您無需再次觸摸它,因為您的所有共享都在 Immich 內進行管理。
關於這個項目
使用 Docker 安裝
如何使用
它是如何運作的
附加配置
故障排除
功能請求
Immich 是一款很棒的軟體,但由於它保存了您所有的私人照片,因此最好將其完全鎖定。當您想與某人分享照片或圖庫時,這會出現問題。
Immich 公共代理商在公眾和 Immich 之間提供了安全屏障,並且僅允許透過您公開分享的請求。
它是無狀態的,並且不知道有關您的 Immich 實例的任何資訊。它不需要 API 金鑰,這進一步減少了攻擊面。代理商可以存取的唯一內容是您在 Immich 中公開提供的照片。
查看直接從我自己的 Immich 實例中提供的即時演示庫。
支援分享照片和影片。
支援受密碼保護的共享。
如果共享單一圖像,預設情況下,連結將直接開啟圖像文件,以便您可以將其嵌入普通圖像的任何位置。 (這是可配置的。)
所有使用均透過 Immich 進行 - 初始配置後您無需觸摸此應用程式。
/share/
路徑?要查看 Immich 中的共享相冊,您需要訪問/api/
路徑。如果您要與公眾分享畫廊,則需要將該路徑公開。任何現有或未來的漏洞都有可能危害您的 Immich 實例。
對我來說,理想的設定是讓 Immich 在 mTLS 或 VPN 後面進行私密保護,並且只允許公共存取 Immich 公共代理程式。以下是使用 Caddy 保護 mTLS 後面的 Immich 的範例設定。
下載 docker-compose.yml 檔案。
更新 docker-compose 檔案中IMMICH_URL
的值以指向 Immich 的本機 URL。這不應該是公用 URL。
啟動docker容器。您可以透過造訪https://your-proxy-url.com/healthcheck
來測試它是否正常運作。檢查容器控制台輸出是否有任何錯誤訊息。
docker-compose up -d
將 Immich伺服器設定中的「外部網域」設定為您用於公開服務 Immich 公共代理程式的任何網域:
現在,每當您透過 Immich 共用映像或圖庫時,它都會自動為您建立正確的公共路徑。
重要提示:如果您使用 Cloudflare,請確保將/share/video/*
路徑設定為繞過緩存,否則您可能會遇到視訊播放問題。有關詳細信息,請參閱故障排除。
由於所有 IPP 路徑都位於/share/...
下,因此您可以在同一網域上執行 Immich Public Proxy 和 Immich。
請參閱此處的說明:在單一網域上運行。
除了上面的初始配置之外,其他一切都透過 Immich 進行管理。
您可以像平常一樣透過 Immich 分享您的照片/影片。由於您已在 Immich 設定中將外部網域設定為代理應用程式的 URL,因此 Immich 產生的連結將自動具有正確的 URL:
當代理收到請求時,它將作為以下連結出現:
https://your-proxy-url.com/share/ffSw63qnIYMtpmg0RNvOui0Dpio7BbxsObjvH8YZaobIjIAzl5n7zTX5d6EDHdOYEvo
/share/
之後的部分是 Immich 的共用連結公共 ID(在文件中稱為key
)。
Immich 公共代理程式獲取該金鑰並透過本機網路對您的 Immich 實例進行 API 調用,以詢問該共享 URL 中共享了哪些照片或影片。
如果它是有效的共用 URL,則代理程式僅透過本機 API 取得這些資產,並將它們作為單一圖像或圖庫傳回給訪客。
如果共享連結已過期或任何資產已放入 Immich 垃圾箱,則不會返回這些資產。
所有傳入的資料都經過驗證和清理,任何意外的資料都會被 404 錯誤丟棄。
您可以變更一些其他配置選項,例如圖庫的設定方式。
在與docker-compose.yml
相同的資料夾中建立 config.json 的副本。
透過新增以下磁碟區將配置傳遞到您的 docker 容器:
卷: - ./config.json:/app/config.json:ro
重新啟動容器,您的自訂配置應該處於活動狀態。
選項 | 描述 |
---|---|
responseHeaders | 變更隨網路回應一起傳送的標頭。預設情況下新增了cache-control 和 CORS。 |
downloadOriginalPhoto | 如果您只希望人們能夠下載「預覽」品質的照片,而不是您的原始照片,請設定為false 。 |
showGalleryTitle | 在圖庫頁面上顯示標題。 |
allowDownloadAll | 允許訪客以 zip 形式下載所有檔案。 |
該畫廊是使用 lightGallery 創建的。您可以在這裡找到 lightGallery 的所有設定:https://www.lightgalleryjs.com/docs/settings/
例如,要停用圖片的下載按鈕,您可以編輯lightGallery
部分並將download
更改為false
:
{ "lightGallery": { "controls": true, "download": false, "mobileSettings": { "controls": false, "showCloseIcon": true, "download": false } } }
如果您使用 Cloudflare 並遇到影片無法正常播放的問題,請確保您的/share/video/
路徑設定為繞過快取。我自己也遇到了這個問題,並在這裡找到了一些有用的建議。
您可以在此處新增功能請求,但是我這個專案的目標是盡可能保持精簡。
由於 Immich 中包含的資料的敏感性,我希望任何具有一定編碼知識的人都能夠閱讀此程式碼庫並完全理解它所做的一切。
此項目不考慮的事項有:
以任何方式修改 Immich 或其文件的任何行為。如果它需要 API 金鑰或特權訪問,則不會被視為新功能。
上傳照片(見上)。