---
title: "erpc worker が失敗したときの直し方"
description: "erpc worker でよく出るエラーメッセージの意味と対処、乗っ取られたかもしれないサーバーの立て直し方、そして erpc が決してしないことをまとめています。"
canonical: "https://erpc.global/ja/doc/erpc-cli/worker-troubleshooting/"
locale: "ja"
---

# erpc worker が失敗したときの直し方

`erpc worker` が表示したメッセージの書き出しを下の表で探し、その行の対処を行ってください。

このページは、プレリリースの ERPC CLI `v0.1.0-rc.4` について説明しています。

## エラーメッセージと対処

ワーカーの失敗は、erpc のエラーコードと終了ステータスを使います。[エラーと終了コード](https://erpc.global/ja/doc/erpc-cli/commands/#エラーと終了コード)を参照してください。

| メッセージ（書き出し） | 原因 | 対処 |
| --- | --- | --- |
| `<app> cannot start without <SETTING>` | `run.requires` が挙げる設定を、どこも設定していません | `erpc worker secret put <SETTING>` を実行するか、`[vars]` に設定するか、その設定を用意する回線（`--grpc`、`--unlimited`）を付けてデプロイします |
| `your key was added but does not get in` | SSH エージェントが署名しませんでした。1Password がロックされているか、その要求が許可されていません | 1Password のロックを解除し、要求を許可してから、同じコマンドをもう一度実行します。続きから進みます |
| `1Password could not …: authorization timeout` | 1Password が承認を求めましたが、誰も応答しませんでした | 1Password で要求を許可し、もう一度実行します |
| `<NAME> is empty; nothing was kept` | `secret put` が空の標準入力を読みました。シェルがターミナルではありません | ターミナルで実行するか、値をパイプで渡します |
| `the keystore is locked, and nobody is at a terminal …` | ターミナルの無いコマンドがキーストアを必要としていて、ロック解除が保たれていません | ターミナルで `erpc worker secret unlock` を実行してから、コマンドをもう一度実行します |
| `nothing is kept under keystore:… on this machine` | 値は別のマシンのキーストアに保存されています | このマシンで `erpc worker secret put <NAME> --replace` を実行します。鍵の場合は、そのマシンの `keystore` ディレクトリ全体とそのパスフレーズを持ってきます |
| `release <id> failed: …; the server went back to <previous>` | 新しいリリースがヘルスチェックを通りませんでした | `erpc worker logs` を確認してください。前のリリースは動き続けています |
| `… is locked: the trading key has not been handed over` | サーバーが再起動した、エージェントが失敗するか止められて systemd が起動し直した、または `stop --lock` を実行しました | `erpc worker start` |
| `port <n> is taken: …` | 動かし続けている別のワーカーが同じヘルスチェックのポートを使っているか、別のプログラムがそのポートで待ち受けています | `erpc.toml` でアプリに専用のポートを割り当て、もう一度デプロイします |
| `release <id> runs, and its WAF did not come up: …` | WAF が待ち受けを始めませんでした。多くは、別のプログラムが `waf.port` を使っています | `erpc worker logs --waf` を確認し、ポートを空けるか `waf.port` を変えて、もう一度デプロイします。その間もアプリは動いています |
| `waf.<key> …`（`check`、`deploy` が表示） | `[waf]` のキーが範囲の外にあるか、`waf.port` が 1024 未満か、`run.port`・SSH・ヘルスチェックのポートと同じです | `erpc.toml` を直します。`erpc worker check` は問題を一度に全部挙げます |
| `the WAF's port <port> was not opened to …`（`firewall allow`、`deny`、`sync` が表示） | その変更を行うと、サーバーでまだ動いていない WAF のルールの下で、新しい相手を入れることになります | `erpc worker deploy` を実行します。新しいルールを置いてから、ポートを開きます |
| `<kind> line <id> did not become active in <n> minutes` | 回線はまだ準備中です | もう一度デプロイして、さらに待ちます |
| `OUT_OF_STOCK` | そのリージョンに、そのプランの空いているサーバーがありません | `--region <another>` を付けてデプロイします |
| `the start may or may not have gone through: …` | 依頼は送られましたが応答が返らなかったか、応答が 5xx、408、429 でした | 同じコマンドをもう一度実行します。同じ依頼が送られます |
| `this purchase, or another of the account's, is still being made …` | 最初の依頼がまだ処理中か、アカウントの別の購入がロックを持っています | 少し待って、同じコマンドをもう一度実行します。同じ依頼が送られます |
| `… changed in 1Password since this command read it` | その間に、別のマシンが台帳の項目を書き換えました | コマンドをもう一度実行します |
| `the shared RPC takes none of the account's API keys from this machine (<n> tried)`（`secret put --from-account`、`erpc rpc call`、`erpc webhook run` が表示） | アカウントのどのキーも、このマシンからは受け付けられませんでした。キーの期限が切れている、アカウントに有効な共有 RPC のプランが無い、またはキーがサーバーのアドレスなど別のアドレスに限られています | [ERPC Web Dashboard](https://dashboard.erpc.global/ja) で、キーの期限とプランを確認でき、新しいキーも作れます。サーバーのアドレスに限ったキーなら、`erpc worker secret put ERPC_API_KEY` を実行し、値を入力するかパイプで渡します |
| `shared: … HTTP 401`（bench が表示） | 共有 RPC がキーを受け付けませんでした。有効な共有 RPC のプランが無いか、キーが違います | ダッシュボードでプランを確認するか、`ERPC_API_KEY` を設定します |
| `shared: … HTTP 429`（bench が表示） | プランのレート制限です | `--interval 150` 以上を指定します |

### erpc が記録できなかった購入

以前の依頼で、erpc が記録できないままサーバーや回線が開始されたかもしれないときは、ダッシュボードでアカウントのサーバーと回線を確認してください。サーバーは `erpc worker deploy --vps <ID>` で使い始めるか、要らない物の利用を終了します。そのあと、`erpc.toml` の `[env.<name>.starting]` からその項目を手で消してください。erpc にはそれを消すフラグが無く、消すまでは、同じコマンドが同じ依頼を送ります。

## サーバーが乗っ取られたかもしれないとき

1. まず `erpc worker backup off` を実行して、サーバーのバックアップ用のアクセスキーを無効にします。`off` は、サーバーがすでに読んだ物を取り消しません。
2. そのサーバーの取引用の鍵から資金を移し、シークレットを入れ替えます。
3. [ERPC Web Dashboard](https://dashboard.erpc.global/ja) でサーバーを作り直し、もう一度デプロイします。

作り直しでサーバーの SSH ホスト鍵が変わったときは、固定した鍵を更新するまで、erpc はそのサーバーに接続しません。デプロイで戻るのはコードで、アプリの状態データは戻りません。状態データを戻せるのはバックアップだけです（[アプリの状態データをバックアップする](https://erpc.global/ja/doc/erpc-cli/worker-status-and-billing/#アプリの状態データをバックアップする)）。

## erpc が決してしないこと

- 鍵、シークレット、またはそれを含む URL をコマンドラインに載せること。
- 取引用の鍵やアプリのシークレットをファイルに書くこと。例外は 1 つだけで、あなたのマシンのキーストアです。そこでは、それぞれがあなたのパスフレーズで暗号化されています。サーバーでは、`erpc worker backup on` が、サーバー自身のバックアップ用の鍵を root だけが読めるファイルに置きます。
- 料金を表示せずに何かを開始すること。
- サーバーを開いたままにすること。ファイアウォールは、アプリが初めて起動する前から有効です。
- 固定したホスト鍵と一致しないサーバーに接続すること。

[ワーカーのガイド](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/worker.md)に、WAF のものを含め、すべてのメッセージが載っています。
