Skip to main content

バックグラウンド実行 + ログ(lcpd-grpcd)

このドキュメントでは、実用的な方法として以下を説明します:
  • lcpd-grpcd をバックグラウンドで動かす
  • ログをディスクに残す(簡易ローテーション付き)
注意: ログはセンシティブです。lcpd-grpcd は生のプロンプト/出力をログに残さない設計ですが、ログにはメタデータ(peer id / job id / 価格 / 時間など)が残ります。詳細は ログとプライバシー を参照してください。 長期運用のインフラでは service manager(systemd/launchd)を使ってください。 「ターミナルを閉じても動き続けてほしい」程度なら、このリポジトリのスクリプトで十分な場合が多いです。

Option A(手軽で推奨): リポジトリのスクリプト + ログファイル

このリポジトリには小さな runner スクリプトがあります:

0) daemon バイナリをビルド(初回のみ)

1) 環境変数の設定

起動パラメータと秘密情報をシェル履歴に残さないため、direnv(.envrc)で管理するのがおすすめです。 direnv を使わない場合は、シェルや service manager 側で LCPD_* を export してください。

Option A: direnv(.envrc

その後 .envrc を編集して LCPD_* を追加してください。 Requester のみ(Provider 実行なし)のヒント:
  • config.yaml があるディレクトリで実行すると、lcpd-grpcd はデフォルトでそれを使います。
  • このリポジトリの go-lcpd/config.yaml は、デフォルトで Provider を無効にしています。
  • Provider を有効にする別の config.yaml を使っている(または別の作業ディレクトリで実行している)場合は、 LCPD_PROVIDER_CONFIG_PATH=/dev/null(空 YAML)を指定して Provider 無効を強制できます。

2) 起動 / 停止

起動(バックグラウンド):
ステータス:
ログを tail:
停止(graceful SIGINT):

疎通チェック

簡易チェック:
ポートレベルのチェック(どちらか):
LCPD_GRPCD_GRPC_ADDR=127.0.0.1:15051 のように listen アドレスを変更した場合は、ポート番号も合わせてください。

ログとローテーションの挙動

  • ログのリンクパス(デフォルト): ./.data/lcpd-grpcd/logs/lcpd-grpcd.log(gitignored)
  • PID ファイル: ./.data/lcpd-grpcd/pids/lcpd-grpcd.pid
  • 起動ごとに日時付きのログファイルを作成します(例: lcpd-grpcd.YYYYmmdd-HHMMSS.<pid>.<rand>.log)。
  • lcpd-grpcd.log は、現在の run のログファイルを指す symlink です。
  • LCPD_GRPCD_LOG_KEEP_ROTATED 個の最新 run ログだけを保持します(デフォルト 10)。

Option B: systemd(Linux)

systemd でできること:
  • クラッシュ時の自動再起動
  • 起動時の自動起動
  • journald による堅牢なログ保持
最小の user service 例(lnd の cert/macaroon が home 配下にある場合に推奨):
  1. ~/.config/systemd/user/lcpd-grpcd.service を作成:
  1. 起動 + enable:
  1. ログ:
ログインしていない状態でも user service を動かし続けたい場合、以下が必要になることがあります:

Option C: launchd(macOS)

launchd は macOS の service manager です。バックグラウンド + 自動再起動には LaunchAgent(ユーザーとして起動)を使います。
  1. ~/Library/LaunchAgents/com.bruwbird.lcpd-grpcd.plist を作成(絶対パスは調整):
  1. ロード:
  1. ステータス確認:
補足:
  • plist では direnv exec を使うことで、認証情報を plist に埋め込まずに済みます(.envrc に置く)。
  • macOS はこれらのログファイルを自動ローテーションしません。newsyslog を使うか、定期的にアーカイブ/削除してください。