# プロバイダーキー

> セルフホスティング環境の Nodaro に、モデルプロバイダーのキーを /setup か .env で設定します。どのキーでどのノードが動くかと、プロバイダーへの通信を自分のプロキシ経由にする方法も説明します。

Source: https://nodaro.ai/ja/docs/self-hosting/provider-keys

**プロバイダーキー**は、セルフホスティング環境の Nodaro が AI モデルを呼び出すための API キーです。キーはアプリで貼り付けることも、環境変数で設定することもでき、両方の方法を同時に使えます。キーの代わりに、またはキーと併用して、環境を Nodaro Cloud アカウントに接続することもできます。[Nodaro Cloud に接続する](https://nodaro.ai/docs/self-hosting/cloud-connect)を参照してください。

## キーを追加する 2 つの方法
| 方法 | キーの保存場所 | 反映されるタイミング | 変更できる人 |
| --- | --- | --- | --- |
| **アプリで貼り付ける**（`/setup` の**インストールの状態**セクション、または**連携 › モデルプロバイダー**） | 自分のデータベース。インスタンスキーで暗号化されます。キーを返すルートはありません。 | すぐに反映されます。API はすぐに使い始め、ワーカーは約 30 秒以内に読み込みます。再起動は不要です。 | Community：ログインしているすべてのユーザー。Business：管理者。 |
| **環境変数で設定する**（`.env` またはプラットフォームの変数） | 環境変数 | 次回の起動時 | サーバーを管理している人 |

キーを貼り付けた直後に**実行**しても動作します。プロバイダーが見つからないノードは、失敗とする前に、キーを 1 回読み込み直すためです。

キーを貼り付けるには、必ずアプリにログインしたセッションが必要です。API トークンやアプリのトークンでは、キーを変更できません。`/setup` のヘルスカードはログインなしで見られますが、そこでキーを保存するにはログインが必要です。先に、ステップ 1 の**サーバーのログインアカウントを作成**を済ませてください。

## どちらのキーが優先されるか
**環境変数が優先されます**。環境変数で設定したキーは、画面上では読み取り専用です。そのタイルには `set (env)` と表示され、削除すべき変数の名前が示されます。貼り付けたキーが使われるのは、そのプロバイダーのキーが環境変数にない場合だけです。

## タイルでキーを管理する
`.env` から読み込んだキーも含めて、すべてのプロバイダーのタイルは実行中に管理できます。変更は、再起動なしで反映されます。

- **貼り付けたキー**には、`key set (app)` と表示されます。いつでも**キーを変更**または**削除**をクリックできます。
- **`.env` のキー**は、その場では編集できません。**.env のキーを置き換え**を使うと、ファイルを編集せずに、環境変数のキーより優先されるキーをアプリに保存できます。または、`.env` からキーを削除して再起動します。
- **無効にする**を使うと、キーが `.env` からのものでも貼り付けたものでも、もう一度有効にするまでそのプロバイダーを停止できます。生成を別のプロバイダー、たとえば Nodaro Cloud への接続に切り替えたいときに使います。
- **`missing`**（未設定）は、そのプロバイダーにキーがないことを示します。**`disabled`**（無効）は、プロバイダーをオフにしたことを示します。

各タイルには、そのキーで使えるものと、キーの取得先が表示されます。

## すべてのプロバイダーキー
| 変数 | 用途 |
| --- | --- |
| `NODARO_API_KEY` | Nodaro Cloud をプロバイダーとして使います。app.nodaro.ai の**設定 › APIトークン**で作成した個人用の API トークンで、料金はそのアカウントに請求されます。[Nodaro Cloud に接続する](https://nodaro.ai/docs/self-hosting/cloud-connect#or-use-an-api-key-like-any-other-provider)を参照してください。 |
| `KIE_API_KEY` | 最も幅広いモデルに対応します。Suno の音楽ノードを含む、画像、動画、音声、テキストのモデルです。 |
| `REPLICATE_API_TOKEN` | 独自のカタログを持つ、別のプロバイダーです。Flux 2 のモデルも含まれます。 |
| `ANTHROPIC_API_KEY` | テキストノード用の Claude モデルを、直接呼び出します。 |
| `GEMINI_API_KEY` | Gemini モデルを直接呼び出します。Google AI Studio のキーです。[Gemini モデル](#gemini-models)を参照してください。 |
| `ELEVENLABS_API_KEY` | 音声、ボイス、吹き替え、ボイスチェンジャー、強制アライメントに使います。 |
| `FAL_KEY` | 任意です。[Sync Lipsync v3](https://nodaro.ai/docs/models/video/sync-lipsync-v3) などのモデルに使います。設定しない場合、それらのモデルは使えませんが、ほかには何も影響しません。 |

### 特定のノードで使うキー
これらのキーは、記載されているノードを使う場合以外は空のままにします。Nodaro Cloud に接続した環境では、キーが空のとき、これらのノードは Nodaro Cloud を通じて実行されます。

| 変数 | ノード |
| --- | --- |
| `HEYGEN_API_KEY` | [**AI アバター**（AI Avatar）](https://nodaro.ai/docs/nodes/video/ai-avatar)、[**シネマティックアバター**（Cinematic Avatar）](https://nodaro.ai/docs/nodes/video/cinematic-avatar) |
| `BEEBLE_API_KEY` | [**リライティングと差し替え**（Relight & Switch）](https://nodaro.ai/docs/nodes/video/relight-and-switch) |
| `APIFY_API_TOKEN` | [**Web スクレイピング**（Web Scrape）](https://nodaro.ai/docs/nodes/automate/web-scrape) |

`GEMINI_API_KEY` は、`GOOGLE_CLIENT_ID` や `GOOGLE_CLIENT_SECRET` とは別のものです。この 2 つは、YouTube への公開などに使う Google OAuth アプリのものです。[SNS のアプリ](https://nodaro.ai/docs/self-hosting/configuration#social-network-apps)を参照してください。

## キーと Nodaro Cloud への接続
- **接続すると、すべてのタイルが対象になります**。接続した環境では、画像、動画、音声、テキストのモデル、アバター、**リライティングと差し替え**、Web スクレイピングが、Nodaro Cloud アカウントを通じて実行されます。キーを貼り付けるのは、そのプロバイダーを直接呼び出したい場合だけです。
- **どちらを優先するかは、自分で選べます**。接続するときに、Nodaro Cloud ですべてを優先して実行するか、自分のキーを優先して実行するかを確認するダイアログが表示されます。[接続の使い方を選ぶ](https://nodaro.ai/docs/self-hosting/cloud-connect#choose-how-the-connection-is-used)を参照してください。
- **OAuth での接続は、`NODARO_API_KEY` より優先されます**。環境に両方がある場合は接続を使い、キーは無視されます。

## Gemini モデル
Gemini モデルの実行方法は 2 つあります。`GEMINI_API_KEY` がない場合は、`KIE_API_KEY` で実行されます。`GEMINI_API_KEY` がある場合は、次のようになります。

- **Gemini 3.1 Pro** は、まず Google で直接実行され、`KIE_API_KEY` がフォールバックになります。
- **Gemini Flash のモデル**は引き続き `KIE_API_KEY` で実行され、それが失敗したときだけ `GEMINI_API_KEY` を使います。

設定する前に、次の 2 点を確認してください。

- **コスト**：直接呼び出した場合、Google は独自のトークン単価で請求します。これは、同じモデルを `KIE_API_KEY` で使う場合より高くなることがあります。利用量の多いモデルを移す前に、Google の現在の価格を確認してください。
- **メディア**：Google の API は、任意の URL からファイルを取得できません。Nodaro は画像、動画、音声のリファレンスをそれぞれダウンロードし、小さいものはインラインデータとして、大きいものは Gemini Files API を通じて送信します。Files API は、ファイルを 48 時間保持します。

## プロバイダーへの通信を自分のプロキシ経由にする
次の 2 つのプロバイダーでは、キーだけでなくホストも変更できます。

| 変数 | デフォルト | 対象 |
| --- | --- | --- |
| `KIE_API_BASE_URL` | プロバイダー自身の API ホスト | `KIE_API_KEY` を使うすべての呼び出しです。メディアの生成**と**、このキーで実行される Claude と Gemini のテキストの通信の両方が対象です。 |
| `ELEVENLABS_BASE_URL` | `https://api.elevenlabs.io` | ElevenLabs へのすべての呼び出しです。音声合成、文字起こし、ボイス、クローン、吹き替え、強制アライメントが対象です。 |

どちらも設定しなければ、何も変わりません。設定すると、Nodaro はプロバイダーの代わりに、自分のホストと通信します。よくある目的は、キーの保管（本物のキーをプロキシだけに置く）、外部に送るすべての生成リクエストの監査ログ、そしてリージョンごとのルーティングです。

Nodaro が置き換えるのはオリジンだけなので、プロキシは透過的である必要があります。パスも、リクエストとレスポンスのボディも同じにします。末尾のスラッシュは取り除かれるため、`https://proxy.example.com/models/` と `https://proxy.example.com/models` は同じように動作します。

**KIE_API_BASE_URL はテキストモデルの通信も移します:** 
プロンプトの強化、脚本の生成、そのほかのテキスト機能を支える Claude と Gemini の通信も、同じホストを通ります。プロキシは、メディアの API だけでなく、次のパスも転送する必要があります。

- `/api/v1/...`：タスク、ポーリング、残高の確認
- `/claude/v1/messages`
- `/<family>/v1/chat/completions`
- `/<family>/v1/responses`
- `/client/v1/userRecord/...`：クレジットの照会

メディアのパスだけを転送するプロキシでは、画像と動画は動き続けますが、テキストの機能はすべて失敗します。

`ANTHROPIC_API_KEY` と `GEMINI_API_KEY` は、プロキシの影響を受けません。これらのキーを使う場合、それぞれのモデルは Anthropic と Google を直接呼び出します。

## キーが機能するか確認する
- **エディターで確認する**：Welcome Demo を開き、**Scene Image**（シーン画像）ノードの**実行**をクリックします。
- **コマンドラインで確認する**：`--keyed` を付けてプローブを実行します。`KIE_API_KEY` または `REPLICATE_API_TOKEN` で使える最も安いモデルで実際に 1 回生成し、メディアが自分のストレージに保存されることを確認します。

```bash
node tools/community-smoke.mjs http://localhost:3000 --keyed
```

`Missing API key` で失敗するノードは、キーのないプロバイダーを呼び出しています。そのプロバイダーのキーを、`/setup` または `.env` で追加してください。

## 暗号化キー
貼り付けたキーを使うには、インスタンスの暗号化キー `NODARO_ENCRYPTION_KEY` が必要です。同梱の Compose スタックは、初回の起動時にこのキーを生成します。暗号化キーがない場合、タイルには `missing`（未設定）と表示され、`/setup` には解決方法を示す赤い**暗号化**カードが表示されます。環境変数で設定したキーは、引き続き使えます。[インストール](https://nodaro.ai/docs/self-hosting/install#2-generate-the-internal-secrets)を参照してください。

## Frequently asked questions

### セルフホスティング環境の Nodaro では、プロバイダーキーをどこで追加しますか？

/setup の「インストールの状態」セクションか、アプリの「連携」›「モデルプロバイダー」で貼り付けます。または、.env に設定して docker compose up -d を実行します。貼り付けたキーは、再起動なしですぐに反映されます。

### .env のキーと画面で貼り付けたキーでは、どちらが優先されますか？

環境変数のキーが優先されます。そのタイルには set (env) と表示され、その場では編集できません。.env からキーを削除して再起動するか、タイルの「.env のキーを置き換え」を使って、画面からキーを上書きします。

### プロバイダーキーを変更できるのは誰ですか？

Community エディションでは、ログインしているすべてのユーザーです。このエディションは、1 人の運用者での利用を想定しているためです。Business エディションでは、管理者だけが変更できます。API トークンとアプリのトークンでは、キーを変更できません。

### 貼り付けたキーはどこに保存されますか？

自分のデータベースに、インスタンスの暗号化キーを使って AES-256-GCM で暗号化して保存されます。キーを返すルートはありません。暗号化キーがない場合、タイルには missing と表示され、/setup には赤い「暗号化」カードが表示されます。

### 画像と動画は動くのに、テキストの機能がすべて失敗するのはなぜですか？

KIE_API_BASE_URL にプロキシを設定している場合、そのプロキシは、メディアの API だけでなくテキストモデルのパスも転送する必要があります。メディアのパスしか転送しないプロキシでは、テキストモデルを使う機能がすべて動かなくなります。
