oauth2-proxy を使って ChatGPT UI に認証をかける

ChatGPI UI というオープンソースの ChatGPT の UI があるので使ってみた。認証の仕組みがなさそうなので、oauth2-proxy を使って認証を機能をつけてみた。

github.com

今回は、IdP として Google を使用。以下の手順で、Client ID と Secret を作成。 support.google.com 承認済みリダイレクト URL に http://localhost:8000/oauth2/callback を指定

./docker-compose.yml を以下のように作成

version: '3.8'
services:
  oauth2-proxy:
    image: quay.io/oauth2-proxy/oauth2-proxy:v7.4.0
    ports:
      - 8000:4180
    env_file:
      - oauth2-proxy.env
  chatgpt-ui:
    image: chatgpt-ui
    env_file:
      - chatgpt-ui.env
  redis:
    image: redis
    volumes:
      - redis:/data
volumes:
  redis:

./oauth2-proxy.env を作成

OAUTH2_PROXY_HTTP_ADDRESS=0.0.0.0:4180
OAUTH2_PROXY_PROVIDER=google
OAUTH2_PROXY_CLIENT_ID=xxxxxxxxxx.apps.googleusercontent.com
OAUTH2_PROXY_CLIENT_SECRET=xxxxxxx
OAUTH2_PROXY_REDIRECT_URL=http://localhost:8000/oauth2/callback
OAUTH2_PROXY_EMAIL_DOMAINS=gmail.com
OAUTH2_PROXY_UPSTREAMS=http://chatgpt-ui:3000/
OAUTH2_PROXY_SESSION_STORE_TYPE=redis
OAUTH2_PROXY_REDIS_CONNECTION_URL=redis://redis/
OAUTH2_PROXY_COOKIE_SECURE=false
OAUTH2_PROXY_COOKIE_SECRET=xxxxxxxxxx
  • OAUTH2_PROXY_CLIENT_ID, OAUTH2_PROXY_CLIENT_SECRET は前の手順で取得した、Client ID と Secret を指定。
  • OAUTH2_PROXY_REDIRECT_URL には「承認済みリダイレクト URL」に指定した URL を指定。
  • OAUTH2_PROXY_COOKIE_SECRET は、 Overview | OAuth2 Proxy に記載の方法で生成する

./chatgpt-ui.env を作成。

OPENAI_API_KEY=xxxxxxxx

API キーは以下で作成 https://platform.openai.com/account/api-keys

docker-compose を実行して、http://localhost:8000/ にアクセスする

docker-compose up

Google の認証が終わったあと、ChatGPT UI の画面が表示される、はず。