ディレクトリに戻る

dsh-ui-auth

キュレーションリスト掲載メンテナンス: 活発

0qwq0/dsh-ui-auth

DeepSeek Harness Web UI 向けの認証ゲート。ログイン門禁・ユーザー管理・管理者専用モデル/API キー設定・データ分離を提供。

GitHub で見る
$ npm から導入:`dsh plugin --profile web add dsh-ui-auth`

14

スター

6

フォーク

JavaScript

言語

MIT

ライセンス

2026-08-23

作成日

2026-10-16

最終プッシュ

MIT ライセンスのネイティブ dsh バンドル。DSH の HTTP サーバーをルートディスパッチ前にラップし、未ログイン時は 302/401/WS アップグレード切断で止めます。TOTP、パスキー、招待制の登録、ユーザー単位のセッション・ワークスペース・モデルキー分離を備えます。

DSH 統合

ネイティブ実行

作者による申告

安全性監査

未監査

最終検証日

2026-11-10

ライセンス

MIT

01どんなタスクに使えるのか?

  • LAN やインターネットへ公開する DeepSeek Harness Web UI の手前にユーザー名/パスワードの入場ゲートを置く

    ログインページとセッション cookie。未ログイン時はページ要求がログインへ 302、API は 401、WebSocket アップグレードは切断

    DSH パネルを localhost の外へ公開し、パネル自体の前に認証層を必要とする運用者

  • 1 つの DSH 配備を複数人で使うとき、互いのセッション・ワークスペース・モデルキーを見せない

    セッションとワークスペースにログインユーザーの所有権を記録(他人のオブジェクトは 403)、モデルの provider / キーはユーザーごとに分離しパスフレーズ由来鍵で封筒暗号化、管理者共有のキーは選択できるが秘密は見えない

    1 台の DeepSeek Harness を共有するチームや家族で、単一ログインではなくアカウント単位の分離を必要とする人

02DeepSeek Harness への導入方法

前提条件

  • web profile の DSH `>=0.2.0-rc.2 <0.3.0`——v0.7.0 でレガシーな `0.1.1-rc.2` トランスポートを削除し、現代のトランスポート能力が無い場合はフェイルクローズします
  • Node.js `^22.19.0 || >=24.0.0`(DSH と同じ)
  • パスキーを使う場合は WebAuthn 対応の現行ブラウザと、`http://localhost:3080` またはドメイン + HTTPS でのアクセスが必要(IP アドレスは RP ID にできません)

インストール手順

  1. 01

    $ npm から導入:`dsh plugin --profile web add dsh-ui-auth`

  2. 02

    GitHub リリースを固定:`dsh plugin --profile web add github:0QwQ0/dsh-ui-auth#v0.7.0`

    $ dsh plugin --profile web add github:0QwQ0/dsh-ui-auth#v0.7.0

  3. 03

    ローカルディレクトリから導入:`dsh plugin --profile web add <本插件目录的绝对路径>`

    $ dsh plugin --profile web add <本插件目录的绝对路径>

  4. 04

    パネルを 1 回再起動する——バンドル層は起動時に適用されます

導入成功の確認

  • パネルを開くと `/auth/login` へリダイレクトされる
  • `admin` とランダムパスワードでログイン。パスワードはパネルのコンソールログ(`[dsh-ui-auth]` で始まる行)と、パネルプロセスの作業ディレクトリにある `dsh-ui-auth-bootstrap.txt` の両方に出力されます

ロールバック

  • `dsh plugin --profile web remove dsh-ui-auth` の後にパネルを再起動すると、ゲートウェイ・設定パネル・クライアントモジュールが消え、profile の依存とバンドル一覧が自動で戻ります
  • アンインストールしてもアカウントデータは削除されません。併せて消す場合は README のリセット手順に従ってください

03DSH 統合と能力の範囲

DSH 統合ネイティブ実行

ネイティブな dsh profile バンドル。`dsh.bundle.patch` と `dsh.client` を宣言しているため、`dsh plugin` が自動で profile のバンドル一覧へ追加します。DSH の HTTP サーバーをルートディスパッチ前にラップし、`/api/*`・`/plugins/*`・HMR・SPA フォールバック・WebSocket アップグレードを対象に認証ゲートを掛けます。

  • 全サーフェスのインターセプト

    DSH に届く任意の HTTP リクエスト/WebSocket アップグレード→未ログインならページは 302、API は 401、WS アップグレードは切断。ログイン後は元のリクエストをそのまま通す

  • TOTP 二要素とパスキー

    認証アプリ(RFC 6238)または WebAuthn 資格情報→パスワード + 動的コードでのログイン、またはパスキーによるパスワードレスログイン。1 アカウントに複数のパスキーを登録可能

    秘密鍵は端末から出ず、サーバーは公開鍵のみを保存する
  • ユーザーごとのモデルキー

    各ユーザーが【設定】→【モデル】で管理する provider / モデル / API キー→マスクされたキーと残高を表示する表。秘密キーはパスフレーズ由来鍵で暗号化され、ロック中はサーバーも復号できない

    残高照会には先にロック解除が必要管理者の共有設定は選択でき残高も見えるがキーは見えず、取り消しは即時反映
  • WebSocket mux の透過プロキシとフレーム単位のフィルタ

    ログイン済みクライアントからの `/api/remote.mux` アップグレード→透過プロキシとして、他人の `baseline.items`・`upsert.workspace`・`order.workspaceIds`・セッションイベントを破棄またはトリムし、自分のものはそのまま転送

    `DSH_AUTH_MUX_PROXY=0` はトラブルシュート用の直通に退避でき、その場合リークが再現する
  • 中国語/英語のログイン・登録 UI

    DSH のロケール設定、またはブラウザの `Accept-Language`→中国語/英語のログイン・登録・登録案内ページ。DSH の locale サービスに追従して即座に切り替わる

04誰に向いているのか?使うべきでない場面は?

向いている用途

  • DSH パネルを localhost の外へ公開し、パネル自体の前に認証層を必要とする運用者
  • 1 台の DeepSeek Harness を共有するチームや家族で、単一ログインではなくアカウント単位の分離を必要とする人

不向きな用途

  • v0.7.0 は DSH 0.2.0 系のみをサポートします。現代のトランスポート能力が無い場合はフェイルクローズし、ゲートウェイを確立せずパネルへ到達できなくなります。旧トランスポートへ戻したり、認証なしで通したりはしません。
  • ブラウザは IP アドレスをパスキーの RP ID にできません。`http://127.0.0.1:3080` や `http://<LAN IP>:3080` ではパスキーを使えません。ローカルでは `http://localhost:3080`、それ以外はドメイン + HTTPS を使ってください。
  • 分離の対象は DSH のセッション/ワークスペースをログインユーザー単位に区切ることです。DSH 自体のプロセス権限モデルは変えず、サードパーティプラグイン固有のデータは分離できません。マルチテナント級の強分離には DSH 側の対応が必要です。

05互換性・メンテナンス・セキュリティ上の注意

  • v0.7.0 は DSH 0.2.0 系のみをサポートします。現代のトランスポート能力が無い場合はフェイルクローズし、ゲートウェイを確立せずパネルへ到達できなくなります。旧トランスポートへ戻したり、認証なしで通したりはしません。
  • ブラウザは IP アドレスをパスキーの RP ID にできません。`http://127.0.0.1:3080` や `http://<LAN IP>:3080` ではパスキーを使えません。ローカルでは `http://localhost:3080`、それ以外はドメイン + HTTPS を使ってください。
  • 分離の対象は DSH のセッション/ワークスペースをログインユーザー単位に区切ることです。DSH 自体のプロセス権限モデルは変えず、サードパーティプラグイン固有のデータは分離できません。マルチテナント級の強分離には DSH 側の対応が必要です。
  • 公開配備では HTTPS リバースプロキシの背後に置き、プロキシで TLS を終端して Host を保持し、その構成では `DSH_AUTH_TRUST_PROXY=1` を設定してください。設定しないとログインのレート制限がプロキシ IP 単位に集約されます。
  • 初回起動時に管理者のランダムパスワードを含む `dsh-ui-auth-bootstrap.txt` が生成されます。README は使用後すぐ削除するよう求めており、いずれかのユーザーがパスワード変更に成功すると自動で削除されます。
2026-08-232026-10-16v0.7.1

MIT · 継続的にメンテナンス中(最新リリース v0.7.1、2026-10-16)· レガシー DSH 0.1.1-rc.2 のサポートは v0.7.0 で終了

06よくある質問

v0.7.x が対応する DSH のバージョンは?

web profile の DSH `>=0.2.0-rc.2 <0.3.0` です。レガシーな `0.1.1-rc.2` トランスポートは v0.7.0 で削除されました。現代のトランスポート能力が無い場合はフェイルクローズし、ゲートウェイを確立せずパネルへ到達できなくなります(認証なしで通すことはありません)。

初回ログインの手順は?

ユーザー表が空のとき、プラグインが `admin` を作成しランダムパスワードをパネルのコンソールログ(`[dsh-ui-auth]` で始まる行)とパネルプロセスの作業ディレクトリの `dsh-ui-auth-bootstrap.txt` の両方へ出力します。パネルは `/auth/login` へリダイレクトするので、ログイン後すぐに【設定】→【ユーザー管理】でパスワードを変更してください(ブートストラップファイルも削除されます)。

LAN の IP でパスキーが使えないのはなぜですか?

ブラウザは IP アドレスを WebAuthn の RP ID として認めず、平文 HTTP はセキュアコンテキストでもありません。同じマシンなら `http://localhost:3080`、それ以外はドメイン + HTTPS を使ってください。

一般ユーザーが他人のセッションを見ることはありますか?

ありません。セッションとワークスペースは作成時に所有者を記録し、一覧と検索の応答は所有者で絞り込まれ、他人のセッションへの直接アクセスは 403 になります。`/api/remote.mux` の WebSocket はプラグインが透過プロキシし、フレーム単位でフィルタします。管理者はすべて閲覧できます。

DSH 自体の権限モデルは変わりますか?

変わりません。DSH のセッション/ワークスペースをログインユーザー単位で分離しますが、DSH のプロセス権限は変えず、サードパーティプラグイン固有のデータも分離できません。DSH の `/api` に対する DNS リバインディング用フェンスは明示的に認証ではありません——本プラグインがその手前の認証層です。

08データと出典

  • 作者による申告github.com6c5e87b44be4…

    本包是标准的 DSH profile bundle(声明了 `dsh.bundle.patch` 与 `dsh.client`), `dsh plugin` 会自动把它加入 profile 的 bundle 名单:

  • 作者による申告github.com6c5e87b44be4…

    在 DSH 路由分发之前包装其 HTTP 服务器,覆盖 `/api/*`、`/plugins/*`、HMR、 SPA fallback 与 WebSocket 升级通道,没有旁路。

このページは、プロジェクトの公開ドキュメント、リポジトリのメタデータ、および DSH Plugins の構造化解析に基づいて生成されています。最終検証日:2026-11-10。誤りを見つけた場合は、修正を送信してください。

🏆

dsh プラグイン おすすめ

最初に入れたい 12 のプラグイン。全カタログ・全カテゴリから厳選しました。

DSH Plugins は DeepSeek Harness プラグインの独立したコミュニティ ディレクトリです。DeepSeek との提携・公認はありません。サードパーティ製プラグインはセキュリティ監査を受けていません。インストール前にソースコードをご確認ください。

DeepSeek Harnessの新着プラグインを毎週お届け。スパムはありません。