為什麼選擇 Pocket ID?
在 Self-hosted 的旅程中,隨著服務越來越多,SSO (單一登入) 成為了剛需。相比於功能繁複的 Keycloak,Pocket ID 提供了一個極致輕量且現代化的選擇。它專注於 OIDC (OpenID Connect),並且原生支援 Passkey (FaceID/TouchID),這正是我所需要的。
Docker Compose 部署
部署 Pocket ID 非常直覺,只需要持久化資料庫與上傳的 Logo 圖片。
services:
pocket-id:
image: pocketid/pocket-id
container_name: pocket-id
ports:
- "8080:80"
volumes:
- ./data:/app/backend/data
- ./uploads:/app/uploads
restart: unless-stopped
實戰:與 Immich 完美整合
我目前最主要的使用場景,就是將 Pocket ID 作為 Immich 的登入驗證中心。Immich 原生支援 OIDC,這讓整合過程變得非常順滑。
1. Pocket ID 端設定
在 Pocket ID 新增一個 Application:
- Name: Immich
- Redirect URI:
https://<你的-immich-網域>/auth/login
注意:Redirect URI 是最關鍵的設定,Immich 驗證成功後會透過這個路徑回調。
設定完成後,你會獲得 Client ID 和 Client Secret。
2. Immich 端設定
進入 Immich 管理後台 -> Settings -> OAuth & OpenID Connect:
- Enabled: 開啟
- Issuer URL:
https://<你的-pocket-id-網域> - Client ID: (填入 Pocket ID 產生的 ID)
- Client Secret: (填入 Pocket ID 產生的 Secret)
- Button Text: Login with Pocket ID
- Auto Register: 建議開啟 (讓 Pocket ID 驗證通過的使用者自動在 Immich 建立帳號)
3. 整合成果
設定完成後,Immich 的登入畫面就會出現 “Login with Pocket ID” 的按鈕。點擊後跳轉至 Pocket ID 進行 Passkey 驗證,瞬間完成登入。這不僅提升了安全性,也省去了輸入密碼的麻煩。