すべてのページ
このページの内容

トラブルシューティング

何かがうまく動かないときは、ここから始めてください。最初のセクションは、ほぼすべての問題に当てはまる確認です。その後の表は、目にしている症状から対処法の載ったページへ案内します。それらのページの多くは、末尾に独自のトラブルシューティングのセクションがあります。このページではその内容を繰り返しません。

最初の手順 #

リレーのマシンで、ターミナルから次を実行します。

oar status
oar doctor
  1. oar status は、リレーが応答するかどうかを示します。最初の数行を下の表と照らし合わせてください。
  2. oar doctor は、インストール、設定ファイル、見つかったプロバイダーの CLI を表示します。何も変更せず、終了コードは常に 0 なので、出力の各行を読んでください。
  3. ブラウザーを確認します。 ステータスドットとバナーから、問題がブラウザーとリレーの間にあるのか、リレーの先にあるのかがわかります。
  4. 問題に対応するログを読みます(ログ)。
  5. 効果がありそうな最小の単位を再起動します(再起動)。

どちらのコマンドも oar コマンドで説明しています。

oar status の読み方 #

行 示している内容
Not set up yet — run: oar setup このインストールには設定ファイルがありません。oar setup を実行します。初回起動
The relay is running on port <port> (<access>): <url> リレーは正常です。URL を開きます。oar url はトークン付きの URL を表示します。問題があるとすれば、ブラウザー、サインイン、またはセッションにあります
The relay is stopped (port <port>, <access>). Start it with: oar start そのポートで何も応答していません。oar start を実行し、失敗する場合はインストールと起動を読んでください
Port <port> is held by another program, or by a relay with another token. 別のプログラムがそのポートを使っているか、以前のトークンを持つ古いリレーがまだ動いています。起動しないときを参照してください
The relay runs with its earlier settings; restart it to apply the new ones. oar setup でポート、トークン、またはアクセス範囲を変更しました。oar restart を実行します
Service: <state> ログイン時に起動するサービスです。ログイン時の起動を参照してください
Tunnel: <state> 組み込みの Cloudflare トンネルです。Cloudflare Tunnel を参照してください

終了コード 3 は、リレーが実行されていない、ポートが別のものに使われている、または設定ファイルがないことを示します。終了コード 0 は、リレーが実行中であることを示します。

oar doctor の読み方 #

行 わかること
OAR <version> と node OAR のバージョンと、oar を実行している Node.js です。報告にはどちらも含めてください
mode git checkout(git チェックアウト):この場合、oar update と oar service は動作を拒否します。通常は global install(グローバルインストール)です
state root と config コマンドがどのインストールを見ているかを示します。1 台のマシンに 2 つのインストールがあれば、それぞれが 2 つずつあります。設定ファイルのパスの後に (missing — run: oar setup) とあれば、設定ファイルはありません。その場合 port、auth token、tunnel は表示されません
port ポートと、そこに接続できる範囲です。localhostOnly: yes はこのマシンからのみという意味です。他のデバイスには oar setup --lan かトンネルが必要です
auth token MISSING はトークンが設定されていないことを示します。oar setup を実行します
tunnel disabled、managed (cloudflared: <path>)、または managed, cannot start: <reason> です。理由には何が問題かが示されます。例:cloudflared がない
database このインストールが使うデータベースと、そのサイズです。(not created yet) は、このインストールからリレーが一度も実行されていないことを示します。会話が見当たらない、またはメッセージが pending のままのときは、これが想定どおりのデータベースか確認してください(データフォルダーごとに 1 つのリレー)
provider CLIs gh (Copilot)、claude、grok はそのバージョンか not found を表示します。doctor はターミナルの PATH で探します。サービスはインストールした時点の PATH を持っています(ログイン時の起動)。cursor は、キーが保存されているかどうかにかかわらず、常に bundled (@cursor/sdk) と表示されます
warning WSL では、リレーのポートを Windows が使っています。oar setup --port <port> で別のポートを選んでください

doctor が表示するのは状態フォルダーで、ログフォルダーではありません。また、リレーが実行中かどうかも表示しません。それは oar status の役割です。ログの場所はファイルとフォルダーにあります。

ログ #

問題 読むもの
リレーが起動しない、または停止する ログフォルダーの server-err.log。ただし、oar start がリレー自体をバックグラウンドで起動した場合に限ります。Linux のサービスでは、起動時のエラーは server-err.log ではなくジャーナル(journalctl --user -u oar)にあります。状態とログを参照してください
リレーが行ったすべてのこと:プレビュー、トンネル、更新、再起動 relay-console.log。アクセストークンは [token] と表示されます
1 つの会話が応答しない、またはそのエージェントが止まる その会話のワーカーの worker-<session>.log。Copilot の拡張機能エンジンにはこのログがありません。ext-debug.log と Copilot のターミナルを見てください
サービスが起動しない systemctl --user status oar、次に journalctl --user -u oar

すべてのログファイル、そのローテーション、git チェックアウトでのログフォルダーについてはファイルとフォルダーにあります。

ブラウザーで #

  • ステータスドット:会話リストの上部にあります。グレーは Web relay unreachable(Web リレーに到達できません)で、ブラウザーがリレーに到達できない状態です。緑は Web relay reachable(Web リレーに到達できます)、琥珀色は接続中の Cloudflare トンネル経由でリレーに到達している状態です。ツールチップには、作業中のワーカーの数など、より詳しい情報が表示されます。ステータスドット
  • バナー CLI is offline — messages will queue until it reconnects と、サイドバーの CLI offline(CLI オフライン)は、10 秒間どのセッションワーカーからも報告がないことを示します。アイドル状態のリレーではこれは正常です。メッセージを送るとバナーは消えます。消えない場合は、ワーカーのログを読んでください。エージェントに接続できないとき

再起動 #

対象 使う場面 方法
1 つの会話のエージェント 会話が止まった、Stop(停止)が効かない、またはエージェントに新しい設定を反映させたい ⋯ メニューの ☠️ Kill session(セッションを強制終了)。履歴とキューは残り、次のメッセージで新しいワーカーが起動します。Kill session
リレー 新しいバージョン、設定ファイルの変更、新しくインストールしたプロバイダーの CLI リレーのマシンで oar restart、または ⋯ メニューの 🌄 Restart web relay(Web リレーを再起動)。どちらも実行中のターンを待ちます。ただし Linux のサービスでは、oar restart は実行中のターンを終了させます。リレーの再起動

症状 #

インストールと起動 #

症状 よくある原因 対処法
npm install -g @oar-sh/oar が EACCES で失敗する npm のグローバルフォルダーに root 権限が必要です sudo ではなくインストーラーを使います。インストール
Node.js が古い、または見つからない。oar: command not found になる。PowerShell で oar がブロックされる Node.js が 22.13 未満か、PATH が再読み込みされていません インストール
node-gyp または prebuild のエラーでインストールが失敗する 使っているプラットフォーム向けのビルド済み better-sqlite3 がありません インストール
npm 12 でインストールした後、better-sqlite3 のエラーでリレーが起動しない npm 12 がインストールスクリプトを省略しました --allow-scripts=@oar-sh/oar,better-sqlite3,koffi を付けて再インストールします。--ignore-scripts は決して使わないでください。インストール。エラーは、oar start がリレーを起動した場合は server-err.log に、それ以外はジャーナルにあります
Port 3333 is in use by another program ... 別のプログラムか古いリレーがポートを使っています 起動しないとき
The relay did not come up — see …/server-err.log リレーは起動しましたが、終了しました 起動しないとき
Relay already running または Relay appears to be owned by another live process と表示され、終了コードが 78 同じデータフォルダーで 2 つ目のリレーを起動しようとしています 行末のヒント(oar stop, or end process <pid>)に従います。データフォルダーごとに 1 つのリレー
[data] Not starting: each database has changes newer than the other's 0.9.14 で追加 リレーが以前に使っていたデータベースを見つけ、どちらにも作業が含まれています 一方を残し、もう一方の copilot.db、-wal、-shm を自分で用意したフォルダーに移してから、oar start を実行します。0.9.14 のアップグレードの注意点
[oar] The relay … is bringing over the database it ran on until now … 0.9.14 で追加 更新後の最初の起動で、大きなデータベースをコピーしています 待ってください。完了すると応答します。2 つ目のリレーは起動しないでください。0.9.14 のアップグレードの注意点
更新後、Windows の自動起動のリレーや gh copilot のリレーの会話が消えた 0.9.14 より前は、そのリレーはデータをパッケージの中に保存していました 0.9.14 のアップグレードの注意点
[startup] Cannot create … または … is a file, not a folder と表示され、終了コードが 78 0.9.14 で追加 データフォルダーまたはアップロードフォルダーを作成できません。たとえば、そのドライブがありません ドライブまたはフォルダーを使える状態にします。TEMP とデータドライブの待機
No systemd user session here、Could not enable lingering、再起動後にリレーが消えている systemd のユーザーセッションがないか、lingering がオフです ログイン時の起動
WSL:Windows のブラウザーに別のページが表示される、またはトークンが拒否される Windows がそのポートを使っています oar setup --port <port>。起動しないとき
サービスで動かすと、セッションでツールや node が見つからない サービスはインストールした時点の PATH を持ち続けます ログイン時の起動
Nothing changed: OAR does not delete or overwrite an autostart entry it did not make.(Windows) 0.9.15 で追加 手作業で作成または編集したスタートアップのエントリ、起動タスク、ランチャーが、切り替えの妨げになっています 自分で削除するか、--replace を付けて切り替えを実行します。この場合はコピーが残ります。OAR が作成していないエントリ
Nothing changed: the boot task could not be read (…)(Windows) 0.9.15 で追加 タスクはありますが、OAR が読み取れません。別のアカウントのパスワードを保存しているため、Access is denied(アクセスが拒否されました)になることがよくあります 管理者としてタスク スケジューラで確認します。OAR が作成していないエントリ
oar uninstall が Not done: … で止まる 0.9.15 で追加 いずれかの手順が失敗しました。リレーが停止しなかった、管理者の確認が拒否された、フォルダーを削除できなかった、などです その前の行の問題を解決してから、同じコマンドをもう一度実行します。oar uninstall
削除したパッケージの横に、隠しフォルダー .oar-* が残っている 0.9.15 で追加 npm がパッケージを削除したとき、セッションワーカーがまだそのパッケージから動いていました それらのプログラムが終了してから、遅くとも再起動の後に、そのフォルダーを削除します。oar uninstall

サインインとリレーへの接続 #

症状 よくある原因 対処法
サインイン欄に Invalid token(無効なトークン)と表示される トークンが古いか、間違っています oar url のトークンを使います。起動しないとき
Too many failed sign-in attempts. Try again in … seconds.(サインインの失敗が多すぎます。… 秒後にもう一度お試しください。) このアドレスから 1 分以内に 10 回、間違ったトークンが送られました 1 分たってから、正しいトークンを使います。別のマシンのプロキシの背後では trustProxy を設定してください。設定しないと、すべての訪問者が 1 つのロックアウトを共有します。サインインの保護
?token= を付けた API やファイルのアドレスで、スクリプトが 401 を受け取る 0.9.11 以降、?token= でサインインできるのはページだけです Authorization: Bearer <token> を送ります。提示する方法
すべてのデバイスでトークンを再び求められる oar setup --new-token はすべてのデバイスをサインアウトさせます トークンをなくしたとき
ステータスドットがグレー:Web relay unreachable リレーが停止しているか、アドレスが間違っています リレーのマシンで oar status を実行します。ステータスドット
スマートフォンでアドレスを開けない アクセス範囲が this machine only(このマシンのみ)です oar setup --lan かトンネルを使います。スマートフォンから
トンネルがオフ(cloudflared is not installed)、または再接続を繰り返す cloudflared がない、トークンが間違っている、または SSH のログインに失敗しています Cloudflare Tunnel、SSH トンネル
メッセージがキューに入ったままで、キューが一時停止している トンネルが required に設定されていて、接続されていません 上と同じ 2 つのセクション
Caddy や nginx の背後で、ページが再接続を繰り返す、プレフィックスの下で空白になる、またはトークンを何度も求める プロキシが WebSocket をブロックしている、プレフィックスを取り除いている、または追加の設定が必要です リバースプロキシ
プロキシの背後でページは読み込まれるがライブで何も更新されず、リレーのログに Refused a handshake from origin とある プロキシが Host ヘッダーを書き換えています 公開オリジンを allowedOrigins に記載します。allowedOrigins

会話が始まらない、またはエージェントが応答しない #

各プロバイダーのページの末尾には、そのプロバイダーで起こりうる失敗がまとめてあります。失敗した返信には通常その原因が書かれていて、それを解決するボタンが付いていることもよくあります。

プロバイダー よくある失敗 対処法
GitHub Copilot COPILOT_SDK_PATH did not resolve(COPILOT_SDK_PATH を解決できませんでした)と表示されて SDK の保存が拒否される、ランタイムが認証できなかった、AI クレジットが残っていない、oar copilot が GitHub CLI がないと表示する GitHub Copilot、SDK の保存が拒否されたとき
OpenAI OpenAI API key is not configured、モデルの検出に失敗した、OpenAI image API failed (401) OpenAI
Claude New Chat(新しいチャット)にない、Not logged in、課金について述べた返信、0.9.18 で追加 relay.subscription-key-source Claude
Claude API 0.9.18 で追加 キーがワークスペースの外にある(HTTP 400)、月間上限に達した(relay.claude-api-cap-reached)、または上限に達して New Chat に Start on subscription(サブスクリプションで開始)が表示される、キーが受け付けられない(relay.claude-api-key)、アカウントのクレジットや支出の上限(relay.claude-api-credit、relay.claude-api-spend-limit)、カードにモデルの no price known が表示される Claude API、エラーコード
Claude Cloud ログインの期限が切れた、GitHub が接続されていない、クラウド環境がない Claude Cloud
Cursor Cursor API key is not configured、Cursor model "…" is not available Cursor
Grok Grok CLI was not found on PATH、Grok authentication failed Grok
DeepSeek 0.9.17 で追加 残高を使い切った(relay.deepseek-balance)、キーが受け付けられない(relay.deepseek-api-key)、同時のリクエストが多すぎる(relay.deepseek-rate-limit)。その他の失敗は relay.deepseek-… の形で表示されます(例:relay.deepseek-api-error) DeepSeek、エラーコード
症状 よくある原因 対処法
New Chat にプロバイダーがない 無効になっているか、キーやログインがありません 上の表にあるそのプロバイダーのページ。無効にしたプロバイダー
最初の画面に Set up a provider(プロバイダーを設定)が表示される 使える状態のプロバイダーがありません 最初の画面
モデルの一覧が古い、または間違っている モデルの検出をもう一度実行する必要があります 🤗 Select Models → Refresh(モデルを選択 → 再読み込み)。プロバイダーごとの方法は上の表の各ページにあります
返信の下に使用状況の行がない プランの使用状況を記録するのは Copilot のターンだけです GitHub Copilot
Check Usage(使用状況の確認)のカードに Error(エラー)、Unavailable(利用不可)、または推定値だけが表示される ライブでの読み取りに失敗し、カードは手元にある情報で代用しています 再読み込みと数値の鮮度

ターンが止まる、失敗する、やり直される #

症状 よくある原因 対処法
バナー CLI is offline どのワーカーからも報告がありません エージェントに接続できないとき
長いターンがキューに戻り、最初からやり直される Max turn duration(ターンの最大時間)の時間(既定は 60 分)か、無活動の時間枠(10 分)が過ぎました Settings → General(設定 → 一般)で Max turn duration を引き上げるか、空にします。ターンが停滞したとき
System note: the … runtime sent nothing for Ns ... Copilot の SDK エンジン、Cursor、または Grok の無出力の監視がターンを終了させました メッセージをもう一度送ります。ターンが失敗したとき
Relay timeout after 5 attempts または Relay recovery limit reached 試行回数を使い切るまで、ターンがキューに戻されました ターンが失敗したとき
会話が動かなくなったように見え、Stop が効かない ワーカーが応答しなくなっています ☠️ Kill session を使い、メッセージをもう一度送ります。Kill session
メッセージが pending のまま 再起動が予約されていて新しいメッセージを保留しているか、別のリレーがそのデータベースを使っています 再起動の待機、データフォルダーごとに 1 つのリレー
新しいメッセージがキューに入ったままで、バナーに Relay restart queued — waiting for N sessions(リレーの再起動を予約済み — N 個のセッションを待機中)と表示される 再起動が予約されていて、関係するセッションの実行中のターンを待っています。それまでは、どのメッセージもセッションに渡されません 待つか、バナーの Restart now(今すぐ再起動)か Cancel restart(再起動を取り消す)を押します。Ask after a queued relay restart has waited(キューに入れたリレー再起動の待機後に確認する)の時間(既定は 30 分)が過ぎると、バナーは待ち続ける代わりに確認を求めます。再起動の待機
リレーの再起動後、1 つの会話へのメッセージがキューに入ったままになる その会話のワーカーがまだ再接続していません。ワーカーは最大 8 秒間隔で自動的に再試行し、0.9.13 以降は接続がハングしたときも再試行します その会話の worker-<session>.log には、失敗した試行ごと(最初の 3 回、その後は 1 分に 1 回)に、理由を示す worker ws disconnected の行があります。☠️ Kill session で新しいワーカーが起動します。エージェントに接続できないとき
リレーの再起動後、セッションがターンの途中で止まり、その後何もしない エージェントがすでにメッセージを受け取っていたため、ターンをやり直せませんでした 短く「続けて」と送るか、Settings → General で After a relay restart, tell interrupted sessions to carry on(リレーの再起動後、中断されたセッションに続行を指示する)をオンにします。リレーが再起動したことを伝える relay(リレー)の行が、その指示です。中断されたセッションに続行を指示する
送信が This conversation's model "…" is no longer available. Choose a model and send again.(この会話のモデル「…」は利用できなくなりました。モデルを選んで再送信してください。)で失敗する 送信でモデルが指定されておらず、会話に設定されていた Copilot のモデルがカタログからなくなりました。0.9.13 以降、リレーは自動で別のモデルに切り替えません 入力欄でモデルを選び、もう一度送ります。モデルと推論
Restart web relay や Empty queue(キューを空にする)でエラーが表示される リレーが要求を拒否してその理由を示したか、応答しませんでした Restart web relay、Empty queue
リレーに設定した環境変数がエージェントに反映されない tmux では、決まった一覧の変数だけがエージェントに届きます エージェントに届く変数
返信が Paused(一時停止中)のメモとともに止まった 使用量の上限です 使用量の上限に達したとき
バックグラウンドのエージェントやシェルがひとりでに止まった Background task timeout(バックグラウンドタスクのタイムアウト)の時間(既定は 4 時間)に達しました Background task timeout
タスクの行に琥珀色で no output for N min と表示される コマンドが Mark a background task as quiet after(バックグラウンドタスクを無出力と見なすまでの時間)の設定(既定は 10 分)より長く何も書き込んでいません コンソールを開いて最後の数行を確認します。長い間出力のない手順もあります。設定を引き上げるか、タスクがハングしている場合は Stop で停止します。無出力のタスク
コマンドのコンソールに This session did not report an output file for this task.(このセッションはこのタスクの出力ファイルを報告していません。)と表示される 0.9.12 への更新より前にエージェントが起動したセッションか、Copilot の SDK エンジンで Stop のないシェルです 後者の場合は、アイドル状態のセッションで ☠️ Kill session を使います。以降のコマンドにはコンソールがあります。プロバイダー別
コンソールに This task's output is no longer available.(このタスクの出力はもう利用できません。)と表示される タスクが終了してから 1 時間以上たったか、0.9.13 への更新より前に実行され、その後リレーが再起動しました 終了したコマンド、リレーの再起動後
コンソールが Output stops here: this command pipes into tail(出力はここで止まります:このコマンドは tail にパイプしています)で止まる tail にパイプしたコマンドは、終了するまで何も書き込みません。出力はそのときに届きます そのような実行をライブで追うには、ファイルにログを出力させ(> run.log 2>&1)、そのファイルを追います。tail にパイプしたコマンド
リレーの再起動後、コンソールにワーカーを待っていると表示され、Stop がない リレーはコマンドの出力を保持していますが、コマンドがまだ実行中かどうかはそのワーカーにしかわかりません 数秒待ちます。ワーカーが戻らなかったコマンドは、約 1 分半後に終了済みとして扱われます。リレーの再起動後
長い会話に切り替えて戻ると、読み込んでいた以前のメッセージがすべては戻らない 直近の 8 つの会話について、表示位置の周辺で保持されるのは Messages kept per conversation for switching back(切り替えて戻るために会話ごとに保持するメッセージ数)の件数(既定は 200 件)だけです Settings → General でこの値を引き上げます。再読み込み、切り替え、回転
会話を削除またはアーカイブできない ターンかバックグラウンドタスクがまだ実行中です 削除
失敗した返信にボタンが表示される リレーが対処法を把握しています 失敗した返信のボタン
リレーが停止または再起動し、ログに JavaScript heap out of memory と出ている 0.9.19 で追加 リレーのメモリがヒープ上限に達しました リレーは自動で再び起動します。リレーのメモリ不足

質問と承認 #

症状 よくある原因 対処法
エージェントが待っていて、何も起こらない 質問カードか承認カードが開いています。別のデバイスで開いていることもあります。カードを待っているターンは、止まっているとは見なされません カードに回答するか、Stop を押します。カードが開いている間
承認カードが入力した回答を受け付けない 入力したテキストでは承認できません Allow(許可)か Deny(拒否)を使います。承認カード
カードが消え、エージェントが先に進んだ 8 時間(Copilot の拡張機能エンジンでは 2 時間)誰も回答しなかったか、Stop でカードが閉じられました カードが開いている間
送信ボタンが Queue(キューに入れる)と表示される カードが開いています。メッセージは回答した後に送られます カードが開いている間
You are offline. Answer queued 回答したときに接続がありませんでした 別の場所から回答する
Grok のエージェントが質問しても、カードが表示されない Grok にはカードがありません 入力欄で回答します。Grok
通知に回答ボタンがない 質問に選択肢がないか、選択肢が長すぎます 通知

他のセッションやリレーと連携するエージェント #

症状 よくある原因 対処法
エージェントにセッション用のツールがない、または REMOTE_RELAY_SESSION_LIMIT、REMOTE_RELAY_NESTED_SESSION、REMOTE_RELAY_PROVIDER_UNAVAILABLE を報告する スイッチがオフか、制限に当たっています エージェントセッション
REMOTE_RELAY_LOCKED この会話でそのリレーに言及していません ペアリングしたリレー
リレーに Offline(オフライン)や Token not accepted(トークンが受け付けられません)と表示される 相手のリレーが停止しているか、そのトークンが変わりました ペアリングしたリレー
別のリレーのエージェントがこちらにプロンプトを送れない(REMOTE_INBOUND_DISABLED) Accept prompts from other relays' agents(他のリレーのエージェントからのプロンプトを受け付ける)がオフです ペアリングしたリレー
ペアリングしたリレーのセッションを監視しようとすると、更新が必要と表示される 相手のリレーが古い OAR を実行しています ペアリングしたリレーのセッション
REMOTE_RELAY_UNKNOWN_MODEL エージェントが、対象のリレーがそのプロバイダーに対して一覧にしていないモデルを指定しました。例:gpt-5.4 のつもりで gpt-5-4 応答には、近い候補と有効な ID が示されます。受け付けられるモデル
シェルコマンドが終了しても、監視しているエージェントが起こされなくなった 0.9.13 以降、既定のイベントには正常に終了したシェルコマンドが含まれません。失敗したときは引き続き起こされます events に task_finished を指定して購読します。既定のイベント
その他の REMOTE_… コード エラー

ファイル、プレビュー、共有 #

症状 よくある原因 対処法
返信内のパスをクリックすると File not found(ファイルが見つかりません)と表示される ワークスペース外の絶対パスが、ワークスペース内のパスとして解釈されています 返信内のリンクの行き先、ビューアーで開けるもの
ファイルのリンクが失敗する、またはファイルが開かない そのファイルはビューアーが読み取れる範囲の外にあります ビューアーで開けるもの
ファイルブラウザーでフォルダーを開くと空になっている リレーがそのフォルダーを読み取れません 制限
エージェントにコミット、取り消し、プッシュをさせたいが、Git changes(Git の変更)にボタンがない このビューは変更を表示するだけです できないこと
プレビューのリンクが開かない、No such preview や Preview upstream unreachable と表示される、またはページが空白 レーンがオフになっている、開発サーバーが停止した、またはアプリが絶対パスを書き出しています プレビュー
Preview lane is disabled または Preview lane failed its startup checks レーンがオフになっているか、チェックが失敗しました レーンが起動を拒否するとき
Too many live previews (max 8) 上限です プレビュー
共有リンクで閲覧者にサインインが求められる、古い状態が表示される、または他の人が開けない Cloudflare Access、キャッシュルール、またはこのマシンでのみ待ち受けているリレーが原因です リレーへの接続
共有リンクが 404 を返す 共有が停止された、リンクが更新された、または会話が削除されました Settings → Sharing(設定 → 共有)に、有効なリンクが一覧表示されます。共有中のリンク
共有ビューにパスが表示されたままになる 相対パスか、画像の中のパスです Paths and file names(パスとファイル名)
Settings → Previews(設定 → プレビュー)で、プレビューが配信されていないと表示される リレーの起動時に確認できませんでした 15 秒ごとに再確認されます。再起動後のプレビュー

通知とインストールしたアプリ #

症状 よくある原因 対処法
通知のスイッチがグレーアウトしている ページが HTTPS でも localhost でもありません 通知
通知が止まった、または 1 台のデバイスにしか届かない ブラウザーでブロックされている、デバイスが無効になっている、または別のデバイスで OAR が前面に開かれています 通知
ブラウザーにインストールの案内が出ない リレーが HTTPS でも localhost でもありません 必要なもの
アプリに Enter your access token to connect(接続するにはアクセストークンを入力してください)と表示される アプリ内で有効なサインインがありません アプリ内でのサインイン
Suspend host(ホストをスリープ)がない、または何も起こらない その設定がオフになっている、リレーが Windows 上にない、または何かがまだ実行中です ホストのスリープ

更新 #

症状 よくある原因 対処法
Update(更新)がない、または確認しても何も見つからない git チェックアウトである、そのバージョンを閉じた、または新しいバージョンが知られていません うまくいかないとき
Check for updates(更新を確認)がグレーアウトしている リレーに OAR_NO_UPDATE_CHECK が設定されています うまくいかないとき
oar update が Could not fetch … で終了コード 1 を返す、または --to を案内する マニフェストを取得できないか、確認がオフになっています oar update --to X.Y.Z は引き続き使えます。うまくいかないとき
oar update --to=0.9.2 で最新のリリースがインストールされる --to= は無視されます スペースを入れて --to 0.9.2 と書きます。oar update
更新が EACCES で失敗する npm がパッケージのフォルダーに書き込めません うまくいかないとき
更新後も古いバージョンが動いている 再起動が実行中のターンを待っているか、更新が適用されませんでした 再起動の待機、うまくいかないとき
インストールしたアプリに古いページが表示される アプリは起動時に新しいバージョンに切り替わります 更新

リレーのメモリ不足 0.9.19 で追加 #

リレーは固定のヒープ上限で起動します。上限はマシンの RAM の 60% で、64 MB 単位、最小 2,048 MB、最大 8,192 MB です。Node.js 自身の既定値を下回ることはありませんが、使えるメモリを超えることもありません。メモリ制限のあるコンテナーでは、RAM の代わりにその制限が使われます。RAM が 4 GB のマシンでは約 2.3 GB です。起動のたびに、上限とその設定元がログに記録されます。

[relay] heap limit 2368 MB (default: 60% of 3.9 GB RAM)

起動時と 10 分ごとに [relay] memory rss=812 heapUsed=640 heapLimit=2560 のような行がログに追加されます。使用中のヒープが上限の 80% を超えたときは、[relay] memory high: … の行がさらに 1 行追加されます。

リレーはメモリが不足すると、ほかのクラッシュのときと同じように自動で再び起動します(連続 2 回まで)。3 回連続でクラッシュすると終了コード 1 で停止し、その後は Linux の systemd サービスがリレーを再び起動します。10 分以上動くと回数はリセットされます。0.9.19 より前は、メモリが不足したリレーは停止したままでした。以前のバージョンから更新した場合、ヒープ上限とこの自動の再起動が働くのは、oar 自体を一度停止して起動し直した後です(0.9.19 のアップグレードの注意点)。

上限を自分で設定するには、config.json に heapLimitMb(MB 単位の整数、512 以上)を書き、リレーを再起動します。NODE_OPTIONS の --max-old-space-size、または server.js を起動する node のコマンドラインにあるものは、heapLimitMb より優先されます。heapLimitMb と違い、シェルで設定した NODE_OPTIONS は、ほかの何かがリレーを再起動すると失われます。

ヒープスナップショット #

ヒープが上限に近づくと、Node.js はリレーのデータフォルダー内の diagnostics フォルダーにヒープスナップショット(Heap.<date>.<time>.<pid>.….heapsnapshot)を 1 つ書き出します(ファイルとフォルダー)。リレーは起動時にこのフォルダーを作成し、そのパスをログに記録します。Linux と macOS では、このフォルダーを開けるのは自分だけです。

  • ディスク:スナップショットのサイズは使用中のヒープとほぼ同じで、最大で上限までです。データフォルダーのドライブの空き容量がヒープ上限の 2 倍未満のときは、リレーはスナップショットなしで起動し、その理由をログに記録します。
  • メモリ:書き出しには、使用中のヒープの約 2 倍までのメモリが必要になることがあり、書き出し中はリレーが応答しません。小さなマシンでは、書き出しが失敗したり、プロセスが終了させられたりすることがあります。その場合、リレーはスナップショットがないときと同じように終了します。
  • 読み方:マシンの外にコピーし、Chrome DevTools の Memory → Load(メモリ → 読み込み)で開いて、Retained size(保持サイズ)で並べ替えると、何がメモリを抱えているかがわかります。以前の正常な実行のスナップショットと比べると、何が増えたかがわかります。

スナップショットには秘密情報が含まれます

ヒープスナップショットには、アクセストークンやプロバイダーの API キーを含め、リレーのメモリにあったすべてのものが入っています。そのまま共有せず、読み終えたら削除してください。リレーがスナップショットを削除することはありません。

問題の報告 #

上記のどれでも解決しない場合は、github.com/oar-sh/oar/issues に issue を登録してください。次のものを含めてください。

  • oar --version の出力
  • oar doctor と oar status の出力
  • 行ったこと、期待したこと、実際に起きたこと(正確なメッセージを添えて)
  • 問題に対応するログ(ログ)の関連する行。ファイル全体ではありません

先に秘密情報を取り除く

投稿する前に、アクセストークン(アドレスの ?token= の部分も)、API キー、トンネルのトークンを取り除き、個人のパス、ホスト名、アカウント名を置き換えてください。issue は公開されます。