# Nodaro Cloud に接続する

> セルフホスティングの Nodaro を Nodaro Cloud アカウントに接続すると、自分のキーがなくても標準モデルを実行でき、Nodaro 専用ノードも使えます。料金はクレジットで請求されます。

Source: https://nodaro.ai/ja/docs/self-hosting/cloud-connect

**Nodaro Cloud への接続**を使うと、Nodaro Cloud が、自分のキーと並ぶモデルプロバイダーの 1 つとして、セルフホスティング環境に加わります。接続すると、標準のモデルは自分のキーがなくても Nodaro Cloud の残高で実行でき、Nodaro Cloud にしかない Nodaro 専用ノードも、自分の環境で動くようになります。使用量は、接続した Nodaro Cloud アカウントにクレジットで請求されます。

## 接続で追加されるもの
- **ワンクリックで始められます**。接続の手順の中で、Nodaro Cloud にログインするか、アカウントを作成します。新しいアカウントには、初回ログイン時に 1 回限りの 1,500 クレジットが付与されます。[無料クレジット](https://nodaro.ai/docs/get-started/free-credits)を参照してください。無料アカウントの出力には、最初にクレジットを購入するまでウォーターマークが付きます。最初の購入で、すべてのモデルも使えるようになります。
- **キーなしで標準モデルを使えます**。画像と動画の生成、音声、テキストモデルが、Nodaro Cloud の残高で実行されます。
- **ベンダーのキーが必要なノードも使えます**。[**AI アバター**（AI Avatar）](https://nodaro.ai/docs/nodes/video/ai-avatar)、[**シネマティックアバター**（Cinematic Avatar）](https://nodaro.ai/docs/nodes/video/cinematic-avatar)、[**リライティングと差し替え**（Relight & Switch）](https://nodaro.ai/docs/nodes/video/relight-and-switch)、[**Web スクレイピング**（Web Scrape）](https://nodaro.ai/docs/nodes/automate/web-scrape)が、それぞれのキーなしで実行できます。
- **Nodaro 専用ノードを使えます**。[Nodaro 専用ノード](#the-nodaro-exclusive-nodes)を参照してください。
- 接続した環境からの使用には、**1 日の使用上限がありません**。

生成のうち、どれだけを接続経由にするかは自分で選べます。[接続の使い方を選ぶ](#choose-how-the-connection-is-used)を参照してください。

## 環境を接続する
関わるアカウントは 2 つだけです。環境自身のデータベースにある**サーバーのログインアカウント**と、**Nodaro Cloud アカウント**です。

### 接続を開始する
環境で `/setup` を開き、ステップ 2 の **nodaro.ai を接続**をクリックします。または、**連携**を開いて **nodaro.ai** を探し、**接続**をクリックします。

### Nodaro Cloud で承認する
ブラウザーで Nodaro Cloud の同意画面が開きます。ログインするかアカウントを作成して、承認します。環境は独自の OAuth 認証情報で自身を登録し、生成に必要なスコープだけを要求します。`assets:write workflows:execute jobs:read credits:read` です。

そのブラウザーがすでに Nodaro Cloud にログインしている場合、同意画面には、これから接続するアカウントが表示されます。これは Nodaro Cloud のアカウントで、サーバーのログインアカウントとは関係ありません。別のアカウントを接続するには、**別のアカウントを使用**をクリックします。

### 環境に戻る
接続が有効になった状態で、環境に戻ります。カードには、Nodaro Cloud の現在の残高が表示されます。続いて、接続の使い方を確認するダイアログが表示されます。

- **接続は環境ごとに 1 つです**。接続はユーザーではなく、環境に属します。**接続**をクリックした人の Nodaro Cloud アカウントに、環境全体が結び付けられます。
- **トークンの有効期間は 90 日です**。環境が受け取るトークンは 90 日間有効で、自動では更新されません。期限が切れても、カードには接続済みと表示されたままですが、クラウドへの呼び出しは `Token expired` で失敗します。**接続を解除**をクリックしてから、もう一度**接続**をクリックしてください。環境は登録を再利用するので、この再接続は接続試行の回数制限に数えられません。
- **すぐに使えます**。アプリのコンテナが接続を完全に読み込むのは、次の起動時です。それまでは、プロバイダーが見つからなかった最初のジョブが自動で接続を確認し直すので、接続した直後の**実行**も動作します。
- **サーバーに保存されます**。環境の認証情報が、ブラウザーに渡ることはありません。認証情報は、貼り付けたプロバイダーキーを保護するのと同じキー、`NODARO_ENCRYPTION_KEY` で暗号化されます。このキーがない場合、認証情報は暗号化されずに保存され、接続時にアプリが警告をログに出力します。

## 接続の使い方を選ぶ
接続した直後に、**nodaro.ai をどのように使用しますか？**というダイアログが表示されます。このダイアログは、**接続**ボタンを使ったあとと、API キーを貼り付けたあとに開きます。何も選ばずに閉じると、事前に選択されたオプションが適用されます。

- **すべてに nodaro を使用**（事前に選択）：接続でカバーされるすべての機能が Nodaro Cloud を通じて実行され、接続したアカウントに請求されます。この中で、自分のキーもある場合にどちらを優先するかを選びます。
  - **nodaro を優先**（事前に選択）：Nodaro Cloud が提供するものについては、ほかのプロバイダーキーは無視され、すべて Nodaro Cloud アカウントに請求されます。
  - **自分のキーを優先**：自分のプロバイダーで実行できるものはそちらで実行し、足りない部分を Nodaro Cloud が補います。
- **Nodaro 専用ノードのみ**：接続を使うのは [Nodaro 専用ノード](#the-nodaro-exclusive-nodes)だけです。それ以外は、後述する 2 つの例外を除いて、接続がないものとして動作します。

選択を変更するには、接続し直します。nodaro.ai タイルの**キーを変更**をクリックするか、接続カードで**接続を解除**をクリックしてから**接続**をクリックします。ダイアログがもう一度開きます。変更のための専用のコントロールはありません。スクリプトからは、ログイン済みのエディターのセッションで、`{ "scope": "all" | "exclusives", "precedence": "nodaro" | "local" }` を指定して `PUT /v1/nodaro-connect/prefs` を呼び出せます。Business エディションでは、管理者として呼び出します。

ルーティングを予測しやすくするためのルールが 2 つあります。

- **以前からの接続は、ルーティングを維持します**。このダイアログができる前に接続した環境は、誰かがダイアログを開くまで、すべてを**自分のキーを優先**で実行し続けます。ルーティングが知らないうちに変わることはありません。
- **「nodaro を優先」はベンダーのノードにも適用されます**。**nodaro を優先**では、アバター、リライティング、Web スクレイピング、文字起こしのノードは、そのベンダーのキーを持っていても Nodaro Cloud を通じて実行されます。**自分のキーを優先**では、自分のベンダーキーが優先されます。

## 接続を使うノード
### ベンダーを直接呼び出すノード
一部のノードは、モデルルーターを通らず、ハンドラーがベンダーを直接呼び出します。該当するノードは次のとおりです。

- [AI アバター](https://nodaro.ai/docs/nodes/video/ai-avatar)と[シネマティックアバター](https://nodaro.ai/docs/nodes/video/cinematic-avatar)
- [リライティングと差し替え](https://nodaro.ai/docs/nodes/video/relight-and-switch)
- [Web スクレイピング](https://nodaro.ai/docs/nodes/automate/web-scrape)
- [**Suno 生成**（Suno Create Music）](https://nodaro.ai/docs/nodes/audio/suno-create-music)などの Suno の音楽ノード
- [**文字起こし**（Transcribe）](https://nodaro.ai/docs/nodes/audio/transcribe)と、キャプションノードの文字起こしのステップ
- [**脚本生成**（Generate Script）](https://nodaro.ai/docs/nodes/video/generate-script)

接続済みの環境にそのベンダーのキーがない場合、ワーカーは Nodaro Cloud アカウントの同じルートでジョブを実行します。そのあと、完成した結果を自分のストレージにコピーし、ローカルのジョブとして記録します。HeyGen のアバターとボイスのピッカーも、同じ仕組みで Nodaro Cloud のカタログを一覧表示します。

| ルーティングの選択 | ベンダーのキーがある場合 | ベンダーのキーがない場合 |
| --- | --- | --- |
| **nodaro を優先** | Nodaro Cloud | Nodaro Cloud |
| **自分のキーを優先** | 自分のキー | Nodaro Cloud |
| **Nodaro 専用ノードのみ** | 自分のキー | ノードを実行できません |

**Suno と脚本生成は、ルーティングの選択に従いません**。自分のキーがあれば、常にローカルで実行されます。Suno では `KIE_API_KEY`、脚本生成では `KIE_API_KEY`、`ANTHROPIC_API_KEY`、`GEMINI_API_KEY` のいずれかです。キーがなければ、常に接続を通じて実行されます。これが、**Nodaro 専用ノードのみ**での 2 つの例外です。

### テキストノード
[**プロンプト**（Prompt）](https://nodaro.ai/docs/nodes/automate/prompt)、[**ベストを選択**（Choose Best）](https://nodaro.ai/docs/nodes/automate/choose-best)、[**画像の説明**（Describe Image）](https://nodaro.ai/docs/nodes/image/describe-image)、[**品質チェック**（QA Check）](https://nodaro.ai/docs/nodes/automate/qa-check)などのテキストノードは、テキストモデルを直接呼び出します。[**モーショングラフィックス**（Motion Graphics）](https://nodaro.ai/docs/nodes/video/motion-graphics)、[**Lottie オーバーレイ**（Lottie Overlay）](https://nodaro.ai/docs/nodes/video/lottie-overlay)、[**3D タイトル**（3D Title）](https://nodaro.ai/docs/nodes/video/3d-title)、ピッカーの分析機能も同じです。ノードを単独で実行しても、ワークフローの中で実行しても、動作は変わりません。

- **テキストモデルのキーがない場合**（`KIE_API_KEY`、`ANTHROPIC_API_KEY`、`GEMINI_API_KEY` のいずれもない場合）、リクエストは Nodaro Cloud アカウントの同じルートに送られます。応答は自分のデータベースにジョブとして記録されるので、実行履歴に表示され、そのジョブ ID は自分の環境で使えます。ワークフローやノードの ID のように、自分の環境の中でしか意味を持たない ID が、環境の外に出ることはありません。
- **テキストモデルのキーがある場合**、ノードはルーティングの選択に従います。**nodaro を優先**では Nodaro Cloud が応答し、**自分のキーを優先**では自分のキーで応答します。

### ローカルでの処理
ffmpeg で動く動画とオーディオの編集ノードは、常に自分のサーバーで実行されます。キャプションノードの文字起こしのステップだけは、[文字起こし](https://nodaro.ai/docs/nodes/audio/transcribe)と同じルールに従います。

## Nodaro 専用ノード
一部のノードは、Nodaro Cloud だけに実装されています。[**動画生成 Pro**（Generate Video Pro）](https://nodaro.ai/docs/nodes/video/generate-video-pro)、[**動画編集 Pro**（Edit Video Pro）](https://nodaro.ai/docs/nodes/video/edit-video-pro)、[**ボイスチェンジャー Pro**（Voice Changer Pro）](https://nodaro.ai/docs/nodes/audio/voice-changer-pro)、[**動画分析**（Video Analysis）](https://nodaro.ai/docs/nodes/video/video-analysis)、[**AI 監査**（AI Audit）](https://nodaro.ai/docs/nodes/video/ai-audit)などです。セルフホスティング環境では、これらのノードはエディターに **NODARO** マーク付きで表示され、接続を通じて、Nodaro Cloud と同じ機能で実行されます。動画生成 Pro の**停止してレンダリング済みの部分を保持**と**続行**も使えます。

- **接続していない場合**：ノードは表示されたままで、ノードには **nodaro.ai を接続**ボタンが表示されます。実行は `503 nodaro_connection_required` で失敗し、同じ案内が表示されます。これらのノードを含むワークフローは、いつでも保存できます。チェックは実行時にだけ行われるためです。
- **請求**：実行は、接続した Nodaro Cloud アカウントに請求されます。**接続**ボタンで接続した場合は、環境の月間上限が適用されます。個人用 API キーの場合は、アカウントがそのまま使われます。無料アカウントには、最初の購入まで通常の制限とウォーターマークが適用され、環境ごとの上限は適用されません。

[**ストーリー → 動画**（Story → Video）](https://nodaro.ai/docs/nodes/video/story-to-video)のパイプラインは、Nodaro Cloud でしか使えません。これは対話型のエンジンであり、接続で中継できるノードではないためです。

## ほかのプロバイダーと同じように API キーを使う
Nodaro Cloud は、通常の意味でのプロバイダーでもあり、ほかのプロバイダーと同じように `/setup` にタイルがあります。OAuth のフローを使わない場合は、次のようにします。

1. app.nodaro.ai で**設定 › APIトークン**を開き、個人用 API トークンを作成します。
2. 自分の環境で、トークンを **nodaro.ai** タイルに貼り付けます。トークンはすぐに適用されて `key set (app)` と表示され、ほかの貼り付けたキーと同じように変更や削除ができます。貼り付けたあとには、ルーティングのダイアログが開きます。

ヘッドレスな環境や Infrastructure as Code の場合は、代わりに `.env` で設定し、アプリのコンテナを再起動します。

```bash
NODARO_API_KEY=ndr_...
```

どちらの方法でも、生成はルーティングの選択に従って、トークンを所有する Nodaro Cloud アカウントを通じて実行されます。

| | **接続**ボタン（OAuth） | 個人用 API キー |
| --- | --- | --- |
| **環境ごとの使用上限** | あり（Nodaro Cloud で設定） | なし |
| **接続済みのインスタンスへの表示** | あり | なし |
| **有効期限** | 90 日後 | なし |
| **取り消し** | Nodaro Cloud で接続を解除 | **設定 › APIトークン**で削除または無効化 |

個人用 API トークンには、スコープ、使用上限、有効期限がありません。1 つのアカウントで持てるトークンは最大 10 個です。トークンでクレジットを使うことはできますが、クレジットの購入、利用枠の割り当て、アカウントの管理はできません。環境に両方がある場合は、OAuth の接続が使われます。

## Nodaro Cloud で接続済みの環境を管理する
app.nodaro.ai で、**請求 › 接続済みのインスタンス**を開きます。アカウントの所有者には、接続中のすべての環境と今月の使用量が表示され、次の操作ができます。

- 環境ごとに**月間の使用上限を設定**します。100〜1,000,000 クレジットの範囲で設定でき、空欄にすると上限なしになります。設定は自動で保存されます。上限を超えると、その環境の実行は `402 instance_cap_reached` で失敗します。
- 環境の**接続を解除**します。その環境のトークンは、すぐに使えなくなります。

自分の環境で**接続を解除**しても、ローカルのトークンが消去されるだけです。環境は登録を保持するので、次に**接続**するときには、その登録が再利用されます。アクセスを完全に断つには、Nodaro Cloud 側で接続を解除してください。

app.nodaro.ai の**設定 › 接続済みアプリ**にも、接続中の各環境が、アカウントにアクセスできるほかのアプリと並んで**セルフホストのインストール**として表示されます。そこで**アクセスを取り消す**を選んでも、その環境のアクセスはすぐに終了します。

## 接続に失敗する場合
- **Nodaro Cloud が接続を受け付けていない、または Nodaro Cloud に到達できない**：ボタンの位置にその旨が表示されます。接続の受け付けが停止されている場合は、`cloud_connect_unavailable` が表示されます。原因は Nodaro Cloud 側か、自分のネットワークにあります。`NODARO_API_KEY` を含め、自分のプロバイダーキーは引き続き使えます。
- **過去 24 時間に、このアドレスからの未完了の接続試行が多すぎる**：**接続**をクリックするたびに、環境が Nodaro Cloud に登録されます。誰も承認しなかった登録は、1 日で期限切れになります。1 つのアドレスから 1 日に 10 件に達すると、Nodaro Cloud はそのアドレスを一時停止します。すでに開いた同意ウィンドウで手続きを完了するか、時間をおいてください。その間も、自分のプロバイダーキーを貼り付ければ使えます。**接続を解除**したあとの再接続は、数に含まれません。
- **クラウドへの呼び出しが `Token expired` で失敗する**：90 日間有効なトークンの期限が切れています。**接続を解除**をクリックしてから、**接続**をクリックしてください。
- **同意画面から自分の環境に戻らない**：`PUBLIC_URL` に、環境の実際のアドレスを設定してください。OAuth のコールバックは `<PUBLIC_URL>/v1/nodaro-connect/callback` として登録されます。

## 設定リファレンス
| 変数 | 内容 |
| --- | --- |
| `NODARO_CLOUD_URL` | 接続先の Nodaro Cloud のホストで、`NODARO_API_KEY` を使った呼び出しの送信先でもあります。デフォルトは `https://app.nodaro.ai` です。起動時に読み込まれます。 |
| `NODARO_API_KEY` | app.nodaro.ai の**設定 › APIトークン**で作成した個人用 API トークンです。Nodaro Cloud を、OAuth のフローなしで通常のプロバイダーとして使います。両方がある場合は、OAuth の接続が優先されます。 |
| `PUBLIC_URL` | 環境の公開アドレスです。Compose ファイルでのデフォルトは `http://localhost:3000` です。必ず設定しておいてください。空の場合は `https://app.nodaro.ai` にフォールバックし、同意画面から環境に戻れなくなります。 |
| `R2_SHARED_WITH_RELAY_TARGET` | デフォルトは `false` です。`R2_PUBLIC_URL` が、Nodaro Cloud のホストが書き込むのと同じバケットを指している場合にだけ、`true` にします。そうすると、接続で得た結果はコピーされず、その場所のまま使われます。これらの結果が環境によって削除されることはなく、環境のストレージ容量にも数えられません。有効になるのは `true` と `1` だけです。 |

`R2_SHARED_WITH_RELAY_TARGET` は、[**ストレージに保存**（Save to Storage）](https://nodaro.ai/docs/nodes/publish/save-to-storage)ノードの動作も変えます。入力がすでにバケット内のオブジェクトである場合、コピーではなく参照を保存します。その場合、入力のライブラリ項目を削除すると、保存した項目が指しているオブジェクトも削除されます。Compose ファイルは、この変数を `.env` から渡しません。`nodaro` サービスの `environment:` に追加してください。

## Frequently asked questions

### セルフホスティング環境を Nodaro Cloud に接続すると、何ができるようになりますか？

画像、動画、音声、テキストのモデルを、自分のキーなしで Nodaro Cloud の残高を使って実行できます。特定のベンダーのキーが必要なノードも、そのキーなしで実行できます。さらに、動画生成 Pro などの Nodaro 専用ノードが使えるようになります。使用量は、接続したアカウントにクレジットで請求されます。

### 接続はユーザーごとですか、それとも環境ごとですか？

環境ごとです。「接続」をクリックした人の Nodaro Cloud アカウントに環境全体が結び付けられ、接続を使った実行はすべてそのアカウントに請求されます。

### クラウドでの実行が「Token expired」で失敗するのはなぜですか？

接続のトークンは 90 日間有効で、自動では更新されません。「接続を解除」をクリックしてから、もう一度「接続」をクリックしてください。環境は登録を再利用するので、再接続はすぐに終わります。

### 「接続」ボタンの代わりに API キーを使えますか？

はい。app.nodaro.ai の「設定 › APIトークン」で個人用 API トークンを作成し、/setup の nodaro.ai タイルに貼り付けるか、.env で NODARO_API_KEY を設定します。キーには環境ごとの使用上限がなく、「接続済みのインスタンス」にも表示されません。

### 接続した環境の使用量を制限できますか？

はい。app.nodaro.ai の「請求 › 接続済みのインスタンス」で、環境ごとに 100〜1,000,000 クレジットの月間の使用上限を設定できます。上限を超えると、実行は 402 instance_cap_reached で失敗します。

### Nodaro Cloud に接続できないと、自分のプロバイダーキーも使えなくなりますか？

いいえ。自分のキーは、接続とは関係なく動作します。Nodaro Cloud に到達できない場合や、Nodaro Cloud が接続を受け付けていない場合は、「接続」ボタンにその旨が表示され、それ以外はすべて動き続けます。
