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 にできません)
インストール手順
- 01
$ npm から導入:`dsh plugin --profile web add dsh-ui-auth`
- 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
- 03
ローカルディレクトリから導入:`dsh plugin --profile web add <本插件目录的绝对路径>`
$ dsh plugin --profile web add <本插件目录的绝对路径>
- 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 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 は使用後すぐ削除するよう求めており、いずれかのユーザーがパスワード変更に成功すると自動で削除されます。
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 リバインディング用フェンスは明示的に認証ではありません——本プラグインがその手前の認証層です。
07関連する DSH ワークフロー
cc-safety-net
by kenryu42
AIコーディングエージェント向けの実行前セキュリティガード。Gitやファイル操作の破壊的コマンド、機密ファイルへのアクセスをツール実行前に検知してブロックします。
dsh-uumit-remote
by uumit-ai
別の端末からDSHへ接続し、招待したユーザーにリモート環境を選択的に共有できます。
deltabox-lite
by delta-box
差分の確認、コミット、取り消しに対応した、エージェント向けの軽量サンドボックスです。
tencentmeeting-cli
by tencentcloud
テンセント会議(Tencent Meeting)の CLI ツール。オープンプラットフォームの OAuth2 認証を利用し、会議管理、録画管理、参加者レポートなどに対応
08データと出典
本包是标准的 DSH profile bundle(声明了 `dsh.bundle.patch` 与 `dsh.client`), `dsh plugin` 会自动把它加入 profile 的 bundle 名单:
在 DSH 路由分发之前包装其 HTTP 服务器,覆盖 `/api/*`、`/plugins/*`、HMR、 SPA fallback 与 WebSocket 升级通道,没有旁路。
このページは、プロジェクトの公開ドキュメント、リポジトリのメタデータ、および DSH Plugins の構造化解析に基づいて生成されています。最終検証日:2026-11-10。誤りを見つけた場合は、修正を送信してください。
dsh プラグイン おすすめ
最初に入れたい 12 のプラグイン。全カタログ・全カテゴリから厳選しました。
