バックグラウンド実行 + ログ(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) 起動 / 停止
起動(バックグラウンド):疎通チェック
簡易チェック: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 による堅牢なログ保持
lnd の cert/macaroon が home 配下にある場合に推奨):
~/.config/systemd/user/lcpd-grpcd.serviceを作成:
- 起動 + enable:
- ログ:
Option C: launchd(macOS)
launchd は macOS の service manager です。バックグラウンド + 自動再起動には LaunchAgent(ユーザーとして起動)を使います。~/Library/LaunchAgents/com.bruwbird.lcpd-grpcd.plistを作成(絶対パスは調整):
- ロード:
- ステータス確認:
- plist では
direnv execを使うことで、認証情報を plist に埋め込まずに済みます(.envrcに置く)。 - macOS はこれらのログファイルを自動ローテーションしません。
newsyslogを使うか、定期的にアーカイブ/削除してください。