為什麼選擇 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 IDClient 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 驗證,瞬間完成登入。這不僅提升了安全性,也省去了輸入密碼的麻煩。