Nodaro ドキュメント
ドキュメントノードリファレンスモデルAI エージェント(MCP)開発者向けセルフホスティングリサーチ

設定

セルフホスティングの Nodaro のすべての環境変数を、目的別に説明します。デフォルト値、Compose スタックで .env から設定できるかどうか、変数で変わる内容をまとめています。

このページは、セルフホスティングの Nodaro の設定リファレンスです。運用者が設定するすべての環境変数を、目的別に、デフォルト値とあわせて説明します。同梱の Compose スタックでは、どの変数にもそのまま動くデフォルト値があるので、変えたいものだけを設定します。Nodaro Cloud にだけ関係する変数は載せていません。

変数の設定方法

Compose スタックでは、変数を次の 2 か所のどちらかで設定します。

  • .env で設定する:docker-compose.community.yml と同じ場所にある .env です。Compose ファイルがアプリに渡す変数には、この方法が使えます。以下の表では、そうした変数の .env 列がはいになっています。
  • Compose ファイルで設定する:それ以外のすべての変数に使います。nodaro サービスの environment: に追加します。
  nodaro:
    environment:
      # ...the variables already listed...
      MCP_ENABLED: "true"
      MCP_PUBLIC_URL: https://mcp.nodaro.example.com

そのあと、変更を適用します。

docker compose -f docker-compose.community.yml up -d

Nodaro は、起動時に環境変数を読み込みます。唯一の例外は /setup で貼り付けたプロバイダーキーで、これはすぐに適用されます。Compose スタックを使わない場合は、利用しているプラットフォームの環境変数の設定で変数を設定します。

Compose スタックを使わない場合に必須の変数:SUPABASE_URL、SUPABASE_SERVICE_ROLE_KEY、INTERNAL_ORCHESTRATOR_SECRET です。これらがないと、API は起動せず、不足している変数や無効な変数を一覧表示します。

インスタンス

変数デフォルト.env内容
EDITIONcommunityいいえcommunity、business、cloud のいずれかです。Compose ファイルでは community に固定されています。エディションとサーフェスプロファイルを参照してください。
PUBLIC_URLhttp://localhost:3000はい環境の公開オリジンです。ログインと OAuth のコールバック、メディアの URL、CORS のチェックに使われます。
PUBLIC_URL_SAME_ORIGIN未設定いいえtrue にすると、ブラウザーに渡す API のアドレスが PUBLIC_URL ではなく / になり、ストリームが、訪問者が開いたホスト名のまま維持されます。複数のホスト名で応答する環境向けです。有効になるのは、厳密に true という値だけです。
CORS_ORIGIN空はい追加で許可するブラウザーのオリジンを、カンマ区切りで指定します。PUBLIC_URL は常に許可されます。これらのホストでは、SSO のランディングのリダイレクトが相対パスになります。
DEFAULT_LOCALE空(ブラウザーの言語)はい新しい訪問者が最初に使う言語です。デフォルトの言語を参照してください。
NODARO_SURFACE_PROFILE空(すべてのインターフェース)はいBusiness エディションの環境で、インターフェースを絞り込みます。サーフェスプロファイルを参照してください。
NODARO_TUTORIAL_PACKS空(組み込みのチュートリアルのみ)はい追加のチュートリアルパックのディレクトリを、カンマ区切りで指定します。チュートリアルパックを参照してください。
RUNTIME_ENVlocalいいえ2 つの環境が 1 つのデータベースを共有し、Redis は共有しない場合に、環境を区別する名前です。スケーリングを参照してください。Railway では、RAILWAY_ENVIRONMENT_NAME がこの値を設定します。
PORT, HOST8000、0.0.0.0いいえAPI が待ち受ける場所です。イメージの中では、API は 9000 で待ち受け、その前段で Web サーバーが 3000 で待ち受けます。
NODE_ENVdevelopmentいいえどのイメージでも production です。

シークレット

変数デフォルト.env内容
INTERNAL_ORCHESTRATOR_SECRETCompose スタックでは起動時に生成はいオーケストレーターを API に対して認証します。32 文字以上が必要です。Compose スタックを使わない場合は必須です。
NODARO_ENCRYPTION_KEYCompose スタックでは初回起動時に生成し、app-data ボリュームに保持はい保存する認証情報を暗号化する、64 文字の 16 進数のキーです。対象は、貼り付けたプロバイダーキー、SNS のログイントークン、Webhook 出力(Webhook Output)用に保存した HTTP の認証情報です。
SOCIAL_ENCRYPTION_KEY空はいNODARO_ENCRYPTION_KEY の以前の名前です。どちらでも動作します。

シークレットは openssl rand -hex 32 で生成します。暗号化キーは、データベースと一緒にバックアップしてください。バックアップとリストアを参照してください。

データベースとログイン

変数デフォルト.env内容
SUPABASE_URLCompose スタックでは http://localhost:3000/supabaseはいAPI が使う Supabase の URL です。Compose スタックを使わない場合は必須です。
SUPABASE_SERVICE_ROLE_KEYCompose スタックでは公開済みのデフォルトキーはいAPI が使う service-role キーです。Compose スタックを使わない場合は必須です。
SUPABASE_ANON_KEYCompose スタックでは公開済みのデフォルトキーはいブラウザーとログインサービスに渡す anon キーです。
FRONTEND_SUPABASE_URL同梱のスタックでは PUBLIC_URL/supabaseはいブラウザーが使う Supabase の URL で、起動時に /config.js に書き込まれます。マネージドの Supabase プロジェクトを使う場合に設定します。
SUPABASE_JWT_SECRET公開済みのデフォルトのシークレットはい同梱のスタックで、anon キーと service-role キーに署名するシークレットです。3 つとも node tools/generate-selfhost-keys.mjs で生成します。
POSTGRES_PASSWORDnodaro-postgres-pwはい同梱のデータベースのパスワードです。内部ロールのパスワードがこの値に合わせられるのは、データベースの初回起動時だけです。
DATABASE_URLpostgres://postgres:nodaro-postgres-pw@db:5432/postgresはいPostgres に直接接続する URL で、起動時にマイグレーションを適用するためだけに使います。パスワードは POSTGRES_PASSWORD と一致させてください。
RUN_MIGRATIONS_ON_BOOTfalse(Compose スタックでは true)はいAPI の起動前に supabase/migrations/ を適用します。マネージドの Supabase プロジェクトを使う場合は false にします。
SUPABASE_MANAGED_PROXY未設定いいえtrue にすると、マネージドの Supabase プロジェクトを、アプリ自身のオリジン経由で提供します。データベースを参照してください。
SUPABASE_PROXY_UPSTREAM未設定いいえ上記のプロキシで使う、マネージドプロジェクトのオリジンです。パスは含めません。

キュー

変数デフォルト.env内容
REDIS_URLredis://localhost:6379(Compose スタックでは redis://redis:6379)いいえキューと共有キャッシュに使う Redis です。クラスターや Sentinel の URL も使えます。

ストレージ

変数デフォルト.env内容
R2_ENDPOINTCompose スタックでは http://minio:9000はいストレージの S3 API の URL です。Compose スタックでは、空の値は MinIO にフォールバックします。
R2_FORCE_PATH_STYLECompose スタックでは trueはいパス形式のアドレス指定です。セルフホスティングのストレージの多くで必要です。
R2_ACCOUNT_ID空はいCloudflare のアカウント ID です。Compose スタックを使わない場合、R2_ENDPOINT が未設定なら、R2 のエンドポイントはこの値から決まります。
R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY同梱の MinIO の認証情報はいストレージの認証情報です。Compose スタックでは、MinIO の root の認証情報も兼ねます。
R2_BUCKET_NAMECompose スタックでは nodaro-assetsはいバケットです。Compose スタックを使わない場合のデフォルトは scenenode-assets なので、必ず設定してください。
R2_PUBLIC_URLCompose スタックでは http://localhost:3000/storage/nodaro-assetsはいバケットの公開 URL です。
R2_REGIONautoはいS3 のリージョンです。AWS、DigitalOcean Spaces(nyc3 など)、ローカルの Supabase(local)では、実際のリージョンを設定します。
STORAGE_OBJECT_ACL空(ACL ヘッダーなし)はいアップロードするすべてのオブジェクトに付ける既定 ACL(canned ACL)です。バケットポリシーを受け付けないストレージ向けです。インストールを参照してください。
R2_PUBLIC_FALLBACK_DOMAIN空いいえメディア用の 2 つ目の公開ホストです。たとえば、CDN のドメインと並べて使う、r2.dev の生のアドレスです。
R2_SHARED_WITH_RELAY_TARGETfalseいいえR2_PUBLIC_URL が、Nodaro Cloud のホストが書き込むのと同じバケットを指している場合にだけ true にします。Nodaro Cloud に接続するを参照してください。

モデルプロバイダー

これらのキーは、どれも /setup で貼り付けることもできます。環境変数で設定したキーが優先されます。プロバイダーキーを参照してください。

変数デフォルト.env用途
NODARO_API_KEY空はい個人用 API トークンを使った、プロバイダーとしての Nodaro Cloud です。
KIE_API_KEY空はいメディアとテキストのモデルを、最も幅広くカバーします。
KIE_API_BASE_URLプロバイダー自身の API ホストはいそのプロバイダーへの通信を、自分のプロキシ経由にします。KIE_API_KEY で動く Claude と Gemini のテキストの通信も、プロキシ経由になります。
REPLICATE_API_TOKEN空はい別のカタログです。Flux 2 のモデルも含まれます。
ANTHROPIC_API_KEY空はいテキストノード用に、Claude を直接使います。
GEMINI_API_KEY空はいGemini を直接使います。Gemini のモデルを参照してください。
ELEVENLABS_API_KEY空はい音声、ボイス、吹き替えです。
ELEVENLABS_BASE_URLhttps://api.elevenlabs.ioはいElevenLabs への通信を、自分のプロキシ経由にします。
FAL_KEY空はいSync Lipsync v3 などのモデルです。
HEYGEN_API_KEY空はいAI アバター(AI Avatar)とシネマティックアバター(Cinematic Avatar)です。
BEEBLE_API_KEY空はいリライティングと差し替え(Relight & Switch)です。
APIFY_API_TOKEN空はいWeb スクレイピング(Web Scrape)です。
HEYGEN_CATALOG_REFRESH_HOURS24いいえHeyGen のアバターとボイスの共有リストを更新する間隔です。

Nodaro Cloud への接続

変数デフォルト.env内容
NODARO_CLOUD_URLhttps://app.nodaro.aiはいnodaro.ai を接続で登録する先の Nodaro Cloud のホストで、NODARO_API_KEY を使った呼び出しの送信先でもあります。変更するのは、環境が Nodaro の専用デプロイメントに属している場合だけです。起動時に読み込まれます。

NODARO_API_KEY と R2_SHARED_WITH_RELAY_TARGET も、接続に関わる変数です。Nodaro Cloud に接続するを参照してください。

ワーカーとパフォーマンス

変数デフォルト.env内容
MAX_CONCURRENT_NODES_PER_EXECUTION6(最大 20)いいえ1 回のワークフローの実行で、同時に実行できるノードの数です。
VIDEO_WORKER_CONCURRENCY50いいえメディアワーカーの並列ジョブ数です。メディアワーカーは、主にプロバイダーの応答を待っています。
ORCHESTRATOR_CONCURRENCY20いいえオーケストレーターの並列ジョブ数です。
RENDER_WORKER_CONCURRENCY2(最大 10)いいえ並列のレンダリング数です。各レンダリングは、ヘッドレス Chrome を 1 つ動かします。
REMOTION_CONCURRENCY3D シーンでは 2、それ以外のレンダリングでは CPU コア数の半分いいえ1 回のレンダリングで使うブラウザーのタブ数です。値を設定すると、両方に適用されます。複数の 3D ジョブを実行するときは、低い値にしてください。WebGL のタブはそれぞれスレッドを増やし、コンテナのプロセス数の上限に数えられます。
FFMPEG_CONCURRENCY4(最大 32)いいえすべての動画とオーディオの編集ノードを通じて、同時に動かす ffmpeg のプロセス数です。
RAILWAY_DEPLOYMENT_DRAINING_SECONDS未設定いいえRailway でのみ使います。置き換えるコンテナに停止シグナルを送ってから、強制停止するまでの時間です。メディアワーカーは、この時間から 5 秒を引いた時間だけドレインします。未設定の場合は、25 秒ドレインします。

これらの値を上げる前に、スケーリングを読んでください。

エディター

変数デフォルト.env内容
FREECUT_URL空(ホスティング版のエディター)はいEdit video で開く動画エディターです。off にすると、この操作がなくなります。
AUDIOMASS_URL空(オーディオエディターなし)はいEdit audio で開くオーディオエディターです。off は空と同じ動作です。

動画とオーディオのエディターを参照してください。

アップデート

変数デフォルト.env内容
NODARO_IMAGEghcr.io/nodaroai/nodaro-community:latestはいCompose ファイルが実行するアプリのイメージです。リリースのタグは、ここで固定します。
NODARO_UPDATE_CHECKオンいいえoff にすると、毎日のアップデートの確認が止まり、環境から外部へのリクエストがなくなります。エアギャップ環境向けです。
NODARO_UPDATE_CHECK_TOKEN空(匿名)いいえアップデートの確認に使う GitHub トークンです。スコープは不要です。

アップデートを参照してください。

MCP

変数デフォルト.env内容
MCP_ENABLEDオフいいえtrue または 1 にすると、MCP エンドポイントを提供します。
MCP_PUBLIC_URL空(Nodaro Cloud の MCP ホスト)いいえ自分の MCP ホストの公開アドレスです。
MCP_DYNAMIC_REGISTRATIONallowlistいいえMCP クライアントの動的クライアント登録です。allowlist、open、off のいずれかです。
MCP_DCR_ALLOWLIST既知のクライアント 14 個いいえallowlist モードで登録を許可するクライアント名です。

MCP を参照してください。

ログインとロール

変数デフォルト.env内容
EXTERNAL_SSO_PROVIDERS空(SSO はオフ)いいえ信頼する ID プロバイダーです。インラインの JSON か、@/path/to/file.json で指定します。形式が正しくない値の場合、起動が止まります。
EXTERNAL_SSO_LINK_EXISTINGfalseいいえシングルサインオンを、既存のローカルアカウントにリンクできるかどうかです。
PLATFORM_OWNER_EMAIL空いいえBusiness エディション:オーナーのアカウントです。このアカウントのロールは、ほかの管理者には変更できません。

シングルサインオンと最初のユーザーと管理者を参照してください。

連携

変数デフォルト.env内容
FIGMA_PLUGIN_OAUTH_CLIENT_ID空(プラグインの接続はオフ)いいえFigma プラグインが接続に使う開発者アプリのクライアント ID です。
SNS の変数空いいえSNS のアプリを参照してください。

Figma プラグインを使うには、環境に開発者アプリを登録します。リダイレクト URI には <PUBLIC_URL>/v1/oauth/plugin/callback を、スコープには jobs:read、assets:read、assets:write、credits:read を指定します。そのあと、アプリのクライアント ID をこの変数に設定します。この変数が空の場合、プラグインの接続用ルートは 503 を返し、それ以外に変わることはありません。OAuth アプリを参照してください。

ビルド時の設定

これらの設定は、イメージのビルド時に決まります。Compose ファイルの build: args: で変更し、ビルドし直してください。

ビルド引数デフォルト内容
VITE_EDITIONCompose ファイルでは communityエディターが表示するエディションです。空の値や不明な値では、ビルドが失敗します。
VITE_STUDIO_URLhttps://studio.nodaro.aiStudio で開くリンクのアドレスです。
VITE_PERSON_URLhttps://person.nodaro.aiホーム画面の Person を開くカードのアドレスです。

動画とオーディオのエディター

動画の結果で Edit video を使うと NodarCut 動画エディターが、オーディオの結果で Edit audio を使うと AudioMass エディターが開きます。メディアがエディターのサーバーに送られることはありません。アプリが自分のストレージからファイルを読み込み、ブラウザーの中でエディターに渡します。編集と書き出しも、ブラウザーの中で行われます。

  • 動画:FREECUT_URL が空の場合、エディターは freecut.nodaro.ai から読み込まれます。freecut.nodaro.ai は、http://localhost:3000 からの埋め込みしか許可していません。LAN のアドレスやドメインなど、ほかのオリジンではブラウザーが埋め込みを拒否し、パネルにその理由が表示されます。許可してもらうには、配信している URL を添えて GitHub で issue を作成してください。または、自分で FreeCut を運用します。FreeCut は MIT ライセンスで公開されており、Dockerfile も含まれています。そのあと、FREECUT_URL=https://freecut.example.internal を設定します。
  • オーディオ:公開されているホスティング版の AudioMass はないため、設定するまで、Edit audio には設定内容を説明するパネルだけが表示されます。Nodaro のフォーク版 AudioMass を運用してください。フォーク版は、オリジナルの AudioMass にはない、ブラウザー内での受け渡しに対応しています。そのあと、AUDIOMASS_URL=https://audiomass.example.internal を設定します。

変更したら、スタックを再起動します。ビルドし直す必要はありません。

デフォルトの言語

DEFAULT_LOCALE は、新しい訪問者が最初に使う言語を設定します。値は he、ar、de、fr、es、hi、ja、ko、pt-BR、ru、zh-CN、en のいずれかです。ユーザー自身が保存した選択が、常に優先されます。値が空、空白のみ、または不明な場合は、訪問者のブラウザーの言語にフォールバックします。適用するには再起動します。言語を参照してください。

チュートリアルパック

セルフホスティング環境では、ビルドし直さずに、組み込みのチュートリアルに独自のチュートリアルを追加できます。各パックは 1 つのディレクトリで、次のものを含みます。

  • manifest.json:パックの name と、そのチュートリアルが使う categories です。各カテゴリーには slug と name があり、任意で sortOrder と description も指定できます。任意のキーは locale、version、forbiddenPromptTerms、creatorDisplayName です。creatorDisplayName は、パックのすべてのカードに表示される作成者名です。
  • チュートリアルごとに 1 つの *.json ファイル:ノード、接続、作成済みの結果を含むワークフローのスナップショットです。そのため、複製すると、実行が完了した状態で開きます。カードの任意のデータとして、カードのチップに表示する estimatedCredits、nodeTypesUsed、providersUsed、チュートリアルごとの creatorDisplayName、listedIn を指定できます。listedIn は、チュートリアルタブ用の ["tutorial"](デフォルト)か、テンプレートのマーケットプレイス用の ["marketplace"] です。この値が反映されるのは、最初のシード時だけです。

チュートリアルで使うメディアファイルは、すべて公開された https:// の URL にする必要があります。各チュートリアルのカテゴリーはマニフェストで宣言する必要があり、カテゴリーは初回起動時に作成されます。

パックのディレクトリを読み取り専用でコンテナにマウントし、コンテナ内でのパスを列挙します。

  nodaro:
    volumes:
      - ./tutorials/acme:/data/tutorials/acme:ro
NODARO_TUTORIAL_PACKS=/data/tutorials/acme

パックはチュートリアルを追加するだけで、組み込みのチュートリアルを変更することはありません。検証に失敗したパックは丸ごとスキップされ、ログに記録されます。検証が失敗するのは、JSON が無効な場合、宣言されていないカテゴリーがある場合、メディアの URL が公開されていない場合、スラッグが既存のチュートリアルと重複する場合です。変更したパックを読み込むには、コンテナを再起動します。

SNS のアプリ

SNS への公開は、ネットワークごとに動作します。各ネットワークは、その OAuth アプリの認証情報を設定すると使えるようになります。認証情報がない場合も、ネットワークは設定 › 連携に利用不可として表示され、不足している変数の名前も表示されます。

ネットワーク変数
InstagramMETA_APP_ID、META_APP_SECRET。任意:Facebook Login for Business 用の META_INSTAGRAM_CONFIG_ID。
Instagram(Facebook ページなし)INSTAGRAM_APP_ID、INSTAGRAM_APP_SECRET。Meta は、これらを Facebook アプリとは別に発行します。トークンは約 60 日ごとに自動で更新されます。
FacebookMETA_APP_ID、META_APP_SECRET。任意:META_FACEBOOK_CONFIG_ID。
TikTokTIKTOK_CLIENT_KEY、TIKTOK_CLIENT_SECRET
YouTubeGOOGLE_CLIENT_ID、GOOGLE_CLIENT_SECRET
LinkedInLINKEDIN_CLIENT_ID、LINKEDIN_CLIENT_SECRET
XX_CLIENT_ID、X_CLIENT_SECRET
RedditREDDIT_CLIENT_ID、REDDIT_CLIENT_SECRET
PinterestPINTEREST_CLIENT_ID、PINTEREST_CLIENT_SECRET
DiscordDISCORD_CLIENT_ID、DISCORD_CLIENT_SECRET、DISCORD_BOT_TOKEN
TwitchTWITCH_CLIENT_ID、TWITCH_CLIENT_SECRET
ThreadsTHREADS_APP_ID、THREADS_APP_SECRET
MastodonMASTODON_CLIENT_ID、MASTODON_CLIENT_SECRET。任意:MASTODON_URL(デフォルトは mastodon.social)。
Telegram不要です。ユーザーが自分のボットトークンを貼り付けます。
Bluesky不要です。ユーザーがハンドルとアプリパスワードで接続します。
Dev.to、Hashnode、Medium不要です。ユーザーが自分の API キーまたはトークンで接続します。
WordPress不要です。ユーザーがサイトの URL とアプリケーションパスワードで接続します。
Lemmy不要です。ユーザーがインスタンス、ログイン情報、コミュニティを指定して接続します。

どの OAuth アプリでも、リダイレクト URI https://<your-domain>/v1/social/callback/<network> を許可する必要があります。Facebook や Instagram のログインで複数のページやアカウントを管理している場合は、接続ウィンドウで、どれを接続するかをユーザーに確認します。SNS への公開を参照してください。

よくある質問

インストール

Nodaro のセルフホスティング環境を順を追ってインストールします。リポジトリのクローン、.env、シークレット、マイグレーション、オブジェクトストレージの設定から、スタックの起動、ログイン、セキュリティの強化までを説明します。

プロバイダーキー

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

エディションとサーフェスプロファイル

Community、Business、Cloud のエディションを比較し、セルフホスティングの Nodaro を Business に切り替えます。NODARO_SURFACE_PROFILE でインターフェイスを絞り込む方法も説明します。

データベース

セルフホスティング環境の Nodaro を、同梱の Supabase スタックかマネージドの Supabase プロジェクトで動かします。マイグレーションの適用方法と、データベースのキーとパスワードの保護も説明します。

トラブルシューティング

セルフホスティングの Nodaro でよくある問題を、/setup から順に解決します。起動エラー、ポート、CORS、マイグレーション、ストレージ、キュー、キーについて、症状と対処法をまとめています。

最終更新

目次