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

erpc worker が表示したメッセージの書き出しを下の表で探し、その行の対処を行ってください。
このページは、プレリリースの ERPC CLI v0.1.0-rc.4 について説明しています。

エラーメッセージと対処

ワーカーの失敗は、erpc のエラーコードと終了ステータスを使います。エラーと終了コードを参照してください。
メッセージ(書き出し)原因対処
<app> cannot start without <SETTING>run.requires が挙げる設定を、どこも設定していませんerpc worker secret put <SETTING> を実行するか、[vars] に設定するか、その設定を用意する回線(--grpc、--unlimited)を付けてデプロイします
your key was added but does not get inSSH エージェントが署名しませんでした。1Password がロックされているか、その要求が許可されていません1Password のロックを解除し、要求を許可してから、同じコマンドをもう一度実行します。続きから進みます
1Password could not …: authorization timeout1Password が承認を求めましたが、誰も応答しませんでした1Password で要求を許可し、もう一度実行します
<NAME> is empty; nothing was keptsecret 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 で、キーの期限とプランを確認でき、新しいキーも作れます。サーバーのアドレスに限ったキーなら、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 でサーバーを作り直し、もう一度デプロイします。
作り直しでサーバーの SSH ホスト鍵が変わったときは、固定した鍵を更新するまで、erpc はそのサーバーに接続しません。デプロイで戻るのはコードで、アプリの状態データは戻りません。状態データを戻せるのはバックアップだけです(アプリの状態データをバックアップする)。

erpc が決してしないこと

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