Naidan
ガイド一覧

外部への接続を制限して、ローカルAIを使う

端末内のAIサーバーを使いながら、Naidanのページが接続できる先を絞りたいときは、ローカルのみ版を開きます。ページとともに届くContent Security Policy(CSP)をブラウザが適用します。

使い始める前にHosted版を選ぶ

ローカルのみ版

このURLで開くと、以下の接続制限がブラウザで働きます。通常版のアプリ内でローカルの接続先を選ぶだけでは、CSPは切り替わりません。

https://naidan-local-only.pages.devローカルのみ版を開く(外部サイト)

Curated版

ローカルサーバーに加え、CSPの許可リストにある外部サービスも使う場合に選びます。現在の対象はWikipedia、Wikimedia、Hugging Faceです。許可リストは今後変わる可能性があります。

https://naidan-curated.pages.devCurated版を開く(外部サイト)

通常のHosted版

モデルの取得など、外部サービスを使う機能も利用したい場合に選びます。ローカルのみ版の接続制限は適用されません。

https://naidan.pages.dev通常版を開く(外部サイト)

それぞれの版はオリジンが異なるため、ブラウザに保存した会話は切り替え先に自動表示されません。以前の会話を使う場合は、ZIPの書き出しと読み込みを行います。 会話データをバックアップ・復元する

各ページの接続先と制限connect-src
ブラウザのページ
ローカルのみ版naidan-local-only.pages.dev開いたサイト自身も許可
端末内のAIサーバーlocalhost / 127.0.0.1CSPで許可
外部サービス例:Hugging Faceからモデルを取得CSPでブロック
ブラウザのページ
Curated版naidan-curated.pages.dev開いたサイト自身も許可
端末内のAIサーバーlocalhost / 127.0.0.1CSPで許可
外部サービスWikipedia · Wikimedia · Hugging FaceCSPで許可
ブラウザのページ
通常のHosted版naidan.pages.dev追加のconnect-src制限なし
端末内のAIサーバーlocalhost / 127.0.0.1追加のconnect-src制限なし
外部サービス例:Hugging Faceからモデルを取得追加のconnect-src制限なし
線はページから試せる接続先を比較したもので、通信中や応答の成功を示しません。端末内のAIサーバーは別プロセスです。

ローカルのみ版とCurated版の公開時には、GitHub Actionsが版ごとのCSPを_headersファイルに書き込み、サイトとともにCloudflare Pagesへデプロイします。Cloudflare PagesはCSPをHTTPレスポンスヘッダーで返し、ブラウザが適用します。実際に届いたヘッダーは後述の手順で確認でき、設定の元となる手順も公開されています。 デプロイの設定を見る(外部サイト)

端末内で動くAIサーバーに接続する

Ollamaやllama.cpp serverなどのAIサーバーを端末内で起動し、Naidanで対応するAPIプロバイダーとローカルURLを選びます。ローカルのみ版が接続を許可する先は次のとおりです。

'self'
ローカルのみ版のページを開いたサイト自身へのリクエスト。通常版やCurated版のサイトは含みません。
http://localhost:*
この端末で指定のポートを使って動くHTTPサービス。
http://127.0.0.1:*
ループバックIPアドレスから接続する、この端末のサービス。

接続には、入力したURLでサーバーが動き、選んだAPIに対応し、CORSでこのページのオリジンを許可している必要があります。別の端末やLANのアドレスは、このCSPの許可先に含まれません。モデルを選ぶ前にNaidanで接続を確認します。 ローカルAIサーバーへの接続手順を見る

何を制限するのか

ページのCSPにあるconnect-srcは、fetchやXMLHttpRequestなどを使うブラウザからのAPI通信先を制限します。スクリプトや画像などには別のCSP指示が適用されます。Hugging Faceなどの外部サービスからモデルを直接取得する通信はローカルのみ版の許可先にないため、必要な機能は失敗する場合があります。

ローカルのみ版の初回アクセスや、未保存のアプリファイルの取得には通信が必要です。このブラウザでPWAのアプリファイルを準備済みなら、同じアドレスからNaidanの画面をオフラインでも開けます。ローカルAIサーバーは独立したプロセスで、独自の権限や通信があります。ページのCSPはそのプロセスを制御しません。Naidan内の接続先設定を変えても、ブラウザが許可する先は増えません。

ブラウザで制限と実際の通信を確認する

  1. ページに届いたCSPを確認する

    ローカルのみ版のURLを開きます。ブラウザの開発者ツールでネットワークを開いてページを再読み込みし、メインの文書のリクエストを選びます。ヘッダー内のレスポンスヘッダーにあるContent-Security-Policyのconnect-srcに、上記3種類の許可先が並んでいるか確認します。

  2. 使う機能の接続先を見る

    ネットワークの記録を続けたまま、Naidanでローカルサーバーの接続を確認を選びます。リクエストURLと結果を確認します。この操作中に試した接続先が分かります。応答が成功するかはサーバーとブラウザのオリジンの規則にも左右されます。

  3. 失敗時の原因を読む

    接続できない場合は、コンソールにCSP違反やCORSエラーが出ていないか確認します。CSP違反ならページのポリシーがその接続先を止めています。ローカルへの通信失敗は、サーバーの停止、API URLの誤り、CORSの設定も原因になります。

ネットワークに表示されるのは、記録中に実行した操作によるリクエストです。ページの通信を調べる手掛かりになり、別プロセスで動くローカルサーバーの通信までは監査できません。