メンテナンスのコマンド

🌐 言語: 🇻🇳 Tiếng Việt · 🇬🇧 English · 🇯🇵 日本語(現在)

メンテナンスのコマンド:アカウント、暗号鍵、バックアップ、整理

はじめに

このページでは、サイトの運用中に使うコマンドをまとめています。失った管理者パスワードの再設定、機密情報の暗号鍵の変更、 バックアップと復元、期限切れカートの削除です。対象は、サーバーにアクセスできるサイトオーナーです。各セクションでは、 コマンドの内容と入力方法を説明し、作業が長い場合は詳しいガイドへ案内します。読み終えると、よくあるメンテナンスの場面に 管理画面なしで対応できます。

ひと目でわかる

場面 コマンド 安全度
管理者パスワードを失い、「パスワードをお忘れの方」も使えない gp247:admin-password ⚠️
暗号鍵が漏れたので、鍵を変える必要がある gp247:encryption-key-rotate ⚠️
大きな変更の前にバックアップする gp247:backup-run ✅
サイトが壊れたので、データを取り戻したい gp247:backup-restore 🛑
カートのテーブルが大きくなり続ける gp247:shop-clear-cart ✅
  • 機密情報(バックアップのパスワード)が必要なコマンドは、実行時に必ず尋ねます。引数では受け取りません — コマンド履歴に 残らないようにするためです。
  • 削除や上書きをするコマンドは、実行前にバックアップの ID をもう一度入力させます。
  • 定期的な作業(スケジュールバックアップ、メールのキュー)に必要な cron は 1 行だけです — 定期実行のジョブ を参照してください。

管理者パスワードの再設定

gp247:admin-password は、パスワードを失い(例:インストール時に一度だけ表示されたパスワードを控え忘れた)、 「パスワードをお忘れの方」でも解決できない場合 — アカウントのメールがインストール時の admin@gp247.local のまま、または サイトがまだメールを送れない場合 — に、管理者アカウントへ新しいパスワードを設定します。実行できるのはサーバーにアクセスできる人だけです。

ℹ️ 対応バージョン: gp247/core 3.11.0

引数/オプション 値 意味
username 必須 アカウントのユーザー名(通常は admin)
--password 任意 新しいパスワード — 現在の管理者のパスワードポリシーを満たす必要があります。省略すると、コマンドがランダムに生成します
--force 0(既定)または 1 1:確認しない — スクリプトや --json では必須
  1. 次のように入力します。

    php artisan gp247:admin-password admin
    
  2. コマンドが確認を求めます(既定はいいえ)。yes と入力します。

  3. 最後のブロックに、ユーザー名と**新しいパスワード(一度だけ表示されます)**が表示されます。すぐに控えてログインし、次回から 「パスワードをお忘れの方」を使えるよう、アカウントのメールアドレスを実在するものに変更してください。

再設定の後:

  • REST API を使うすべてのアプリケーションと、アカウントのすべての MCP トークンが無効になります。「ログインしたままにする」を 選んだブラウザーは、ログインし直す必要があります。開いているセッション(ログイン保持なし)は、セッションの期限で終了します。
  • ロックされたアカウントのロックは解除されません — 「ユーザー」画面で解除します。
  • サイトのログに 1 行記録されます(アカウント名のみで、パスワードは含みません)。

--json では、生成されたパスワードは data.password にだけ入ります。自分で指定したパスワードが表示されることはありません。 アカウントと権限 も参照してください。

機密情報の暗号鍵を変更

GP247 は、設定に保存した機密情報(SMTP のパスワード、決済ゲートウェイの鍵など)を GP247_ENCRYPTION_KEY で暗号化しています。 gp247:encryption-key-rotate は、各機密情報を古い鍵で読み、新しい鍵で書き直します。データを失わずに鍵を変える唯一の方法です。

オプション 意味
--dry-run 変換する行数を数えるだけで、書き込まない

必ず次の順序で行います(8 つの手順の詳細は 機密データの暗号化 にあります)。

  1. .env とデータベースをバックアップします。

  2. 現在の鍵を GP247_ENCRYPTION_PREVIOUS_KEYS に入れ、新しい鍵を GP247_ENCRYPTION_KEY に設定します。

  3. 設定のキャッシュを消します:php artisan config:clear。

  4. 暗号化し直します。

    php artisan gp247:encryption-key-rotate
    

    成功すると、列ごとに admin_config.value: 5 converted, 0 already current, 0 undecryptable のような行が表示されます。

  5. 確認:php artisan gp247:doctor — secret_decryptable のチェックが PASS になっている必要があります。

再実行しても安全です。すでに新しい鍵の行は飛ばされ、復号できない行は上書きされません。

バックアップと復元

gp247:backup-* 系のコマンドは、「バックアップと復元」画面でできることをすべて行え、管理画面に入れないときでも動きます。 <id> はバックアップの ID に置き換えてください(gp247:backup-list で確認できます)。

コマンド 内容 安全度
gp247:backup-run 暗号化したバックアップを作成し、検証。--kind=snapshot|selective|full(既定 full)、--group=、--files=、--exclude-logs ✅
gp247:backup-run --scheduled スケジュールバックアップ。内容は「バックアップ設定」に従い、スケジュールがオフなら何もしない ✅
gp247:backup-list バックアップを一覧表示(バックアップフォルダーで見つかったものも含む) ✅
gp247:backup-verify <id> バックアップの完全性を再検証 ✅
gp247:backup-pin <id> 自動整理で消されないよう固定。--unpin で固定解除 ✅
gp247:backup-import <ファイル> .gp247bak ファイルを確認して一覧に追加 ✅
gp247:backup-offsite test|list|push|fetch 外部の保存先:接続確認、一覧、バックアップのコピー、取り戻し ✅
gp247:backup-export-sql <id> データを暗号化されていない .sql ファイルに書き出す(--output=) ⚠️
gp247:backup-restore <id> データ・ファイルを復元:--level=、--files=、--preview、--undo、--post-incident 🛑
gp247:backup-delete <id> バックアップを削除 🛑

例:全体バックアップを作成し、一覧を表示する:

php artisan gp247:backup-run
php artisan gp247:backup-list

実際に復元する前にプレビューする:

php artisan gp247:backup-restore <id> --level=full --preview
  • バックアップのパスワードは実行時に尋ねられます。スクリプトでは --secret-stdin を付け、標準入力の 1 行で渡します (渡すものがリカバリーキーなら --recovery-key)。
  • 削除/復元/.sql の書き出しは、バックアップの ID をもう一度入力させます。対話できない場合は --confirm=<id> を渡します。
  • 書き出した .sql ファイルは暗号化されていません — データベースそのものと同じように守り、使い終わったら削除してください。

詳しいガイド:バックアップと復元 · 状況別の復元ガイド · 外部の保存先。

期限切れカートの削除

gp247:shop-clear-cart は、保存期間を過ぎたカート、お気に入り、比較リストを削除し、カートのテーブルが大きくなり続けるのを 防ぎます。日数は設定 gp247-config.shop.cart_expire(cart、wishlist、compare)で決まります。このコマンドは、サイトに gp247/shop があるときに使えます。

php artisan gp247:shop-clear-cart

cron で毎日実行します。例えば午前 2 時:

0 2 * * * cd /path-to-site && php artisan gp247:shop-clear-cart >> /dev/null 2>&1

定期実行のジョブ

GP247 は、自分の定期ジョブ(メールキューの処理、「決まった時刻」モードのスケジュールバックアップ)を Laravel のスケジューラーに 自動で登録します。サーバーに必要なのは、毎分スケジューラーを呼び出す cron の 1 行だけです。

* * * * * cd /path-to-site && php artisan schedule:run >> /dev/null 2>&1

cron のないホスティング、VPS、Docker の場合は スケジュールとキュー を参照してください。

条件と制約(操作の前に確認)

パスワードを再設定するとき

  • 自分で指定するパスワードは、管理者のパスワードポリシーを満たす必要があります — 満たさないと invalid_password を報告し (メッセージにパスワードは含まれません)、何も変えません。
  • 存在しないユーザー名 → user_not_found。
  • スクリプト/--json には --force=1 が必要です → ないと confirmation_required になり、何も変わりません。

暗号鍵を変更するとき

  • コマンドの実行中は、古い鍵を GP247_ENCRYPTION_PREVIOUS_KEYS に残しておく必要があります — ないと機密情報を読めず、 暗号化し直せません(「undecryptable」と表示されます)。
  • 先に config:clear を実行します — キャッシュされた設定には古い鍵が残っているためです。

バックアップと復元

  • バックアップのパスワードが未設定 → not_set_up を報告します。初回の設定は「バックアップと復元」画面で行います。
  • バックアップのパスワードが違う → wrong_secret。バックアップには何も起きません。
  • 出どころを確認できないバックアップ(別のサイトで作ったもの)は、--accept-unverified を付けたときだけ復元できます。

よくある質問(Q&A)

Q1: コマンドラインのないホスティングで、管理者パスワードを失いました。

→ ログインページの「パスワードをお忘れの方」を使います。アカウントのメールが実在するアドレスで、サイトがメールを送れる 必要があります。だからこそ、インストール直後に管理者のメールアドレスを変更してください。

Q2: パスワードを再設定したら、API を使うアプリケーションが止まりました。

→ 仕様どおりです。古いパスワードを手に入れた人が使えないよう、アカウントの API と MCP のトークンは無効になります。管理画面で 新しいトークンを作成してください。

Q3: GP247_ENCRYPTION_KEY を変えたのに、鍵の変更コマンドを実行し忘れました。

→ 古い鍵を GP247_ENCRYPTION_PREVIOUS_KEYS に入れ、php artisan config:clear の後に gp247:encryption-key-rotate を 実行します。直ったかどうかは gp247:doctor の secret_decryptable で分かります。

Q4: コマンドラインのバックアップは、画面のボタンと何が違いますか?

→ 同じ仕組み、同じファイル形式です。コマンドラインは Web リクエストの時間制限を受けないので、大きなサイトではより安全です。

Q5: スクリプトで backup-restore を実行すると confirmation_required になります。

→ --confirm=<id>(バックアップの ID をそのまま)を付け、バックアップのパスワードは --secret-stdin で渡してください。

Q6: shop-clear-cart は、買い物中のお客様のカートも削除しますか?

→ いいえ。cart_expire で決めた日数を過ぎたカートだけを削除します。

Q7: backup-run --scheduled 用に別の cron の行が必要ですか?

→ いいえ。共通の schedule:run の行で十分です。GP247 が「バックアップ設定」に従ってバックアップの時刻を自動で登録します。


📅 最終更新: 2026-11-08 · ✍️ 作成者 (Author): GP247