コンテンツにスキップ

CLI コマンド

Paideia LMS が提供するコマンドラインインターフェース(CLI)を使用して、サーバーを実行し、データベースマイグレーションを管理し、ターミナルウィンドウから管理タスクを実行できます。

Paideia LMS は、Web サーバーとコマンドラインインターフェースの両方として機能するデュアルモードバイナリです。デフォルトでは、引数なしで paideia を実行するとサーバーが起動します。CLI コマンドは paideia <command> を実行することで利用できます。

サーバーを起動(デフォルトの動作):

ターミナルウィンドウ
# サーバーを起動(デフォルトの動作)
paideia
# または明示的に
paideia server

ヘルプを取得:

ターミナルウィンドウ
# ヘルプ情報と利用可能なコマンドを表示
paideia help

ターミナルに次のメッセージが表示されます:

╔═══════════════════════════════════════════════════════╗
║ ║
║ ██████╗ █████╗ ██╗██████╗ ██████╗██╗ █████╗ ║
║ ██╔══██╗██╔══██╗██║██╔══██╗██╔═══╝██║██╔══██╗ ║
║ ██████╔╝███████║██║██║ ██║██████╗██║███████║ ║
║ ██╔═══╝ ██╔══██║██║██║ ██║██╔═══╝██║██╔══██║ ║
║ ██║ ██║ ██║██║██████╔╝██████╗██║██║ ██║ ║
║ ╚═╝ ╚═╝ ╚═╝╚═╝╚═════╝ ╚═════╝╚═╝╚═╝ ╚═╝ ║
║ ║
║ Learning Management System ║
║ ║
╚═══════════════════════════════════════════════════════╝
Paideia LMS - 0.5.5
Paideia CLI Commands
┌────────────────────────┬───────────────────────────────────────────────────────────────┐
│ Command │ Description │
├────────────────────────┼───────────────────────────────────────────────────────────────┤
│ paideia help │ Show help │
│ paideia server │ Start the Paideia server │
│ paideia migrate status │ Show migration status │
│ paideia migrate up │ Run pending migrations │
│ paideia migrate fresh │ Drop all database entities and re-run migrations from scratch │
│ paideia migrate dump │ Dump database to SQL file │
│ paideia sandbox reset │ Reset sandbox database (only when SANDBOX_MODE is enabled) │
└────────────────────────┴───────────────────────────────────────────────────────────────┘

Paideia LMS Web サーバーを起動します。これは引数なしで paideia を実行したときのデフォルトの動作です。

ターミナルウィンドウ
# サーバーを起動
paideia server
# または単純に(デフォルトの動作)
paideia

サーバーは設定されたポートで起動し、リッスンします(デフォルト:バックエンド 3001、フロントエンド 3000)。サーバーは Ctrl+C で停止するまで無限に実行されます。

ASCII ロゴ、紹介、および利用可能なコマンドを表示します。これにより、Paideia LMS の機能とすべての CLI コマンドの概要が提供されます。

ターミナルウィンドウ
paideia help

Paideia LMS のバージョン番号を表示します。

ターミナルウィンドウ
paideia version

Paideia LMS は、データベーススキーマを管理し、管理タスクを実行するための包括的なデータベースマイグレーションコマンドのセットを提供します。

すべてのデータベースマイグレーションの現在の状態を表示します。これにより、どのマイグレーションが実行されたか、どのマイグレーションが保留中かを表示します。

ターミナルウィンドウ
paideia migrate status

出力例:

Migration Name Status
────────────────────────────────────────
1234567890_initial_schema ✅ Applied
1234567891_add_users_table ✅ Applied
1234567892_add_courses_table ⏳ Pending

すべての保留中のマイグレーションを実行します。これにより、まだ実行されていないマイグレーションが適用されます。

ターミナルウィンドウ
paideia migrate up

使用例:

  • Paideia LMS を更新した後、データベーススキーマの変更を適用
  • 本番環境で新しいマイグレーションを実行
  • コード変更をプルした後、データベース構造を更新

すべてのデータベースエンティティを削除し、最初からすべてのマイグレーションを再実行します。これは破壊的な操作で、すべてのデータとスキーマを削除してから、すべてを再構築します。

ターミナルウィンドウ
# フレッシュマイグレーション(確認プロンプトが表示されます)
paideia migrate fresh
# または強制フラグを使用して確認をスキップ
paideia migrate fresh --force-accept-warning

使用例:

  • 開発中のデータベースの完全なリセット
  • クリーンなデータベースから開始
  • 最初からデータベースを再構築

データベース全体を SQL ファイルにダンプします。これにより、後で復元できるデータベースのバックアップが作成されます。

ターミナルウィンドウ
# 自動生成されたファイル名でダンプ
paideia migrate dump
# カスタムファイル名でダンプ
paideia migrate dump -o my-backup.sql
# または長い形式を使用
paideia migrate dump --output my-backup.sql

出力場所: すべてのダンプファイルは、プロジェクトルートの paideia_data/ ディレクトリに保存されます。ディレクトリが存在しない場合は、自動的に作成されます。

ファイル名形式: ファイル名が指定されていない場合、ダンプファイルは paideia-dump-{timestamp}.sql という名前になります。

使用例:

  • 大きな変更を行う前にデータベースのバックアップを作成
  • 別のサーバーへの移行のためにデータベースをエクスポート
  • 災害復旧のためのバックアップを作成
  • cron ジョブやスクリプトによるバックアップの自動化

出力例:

ターミナルウィンドウ
paideia migrate dump
# ✅ データベースダンプ完了: paideia_data/paideia-dump-2025-11-02T10-30-45-123Z.sql

Paideia LMS は、開発およびテスト環境用のサンドボックス管理コマンドを提供します。

SANDBOX_MODE が有効な場合、サンドボックスデータベースを手動でリセットします。このコマンドは、システムテーブル(ジョブログ、マイグレーションなど)を保持しながら、すべてのユーザーデータ(学生、コースなど)を削除し、リセットプロセス中にゼロダウンタイムを実現します。

ターミナルウィンドウ
# サンドボックスデータベースをリセット(SANDBOX_MODE が有効な場合のみ動作)
paideia sandbox reset

要件:

  • SANDBOX_MODE 環境変数は "1" または "true" に設定する必要があります
  • サンドボックスモードが無効な場合、コマンドは静かに終了します

機能:

  • すべてのユーザーデータコレクション(ユーザー、コース、登録、提出物など)を削除
  • システムテーブル(payload-jobspayload-jobs-logpayload-migrations など)を保持
  • seed.json(利用可能な場合)から新しいデータでデータベースを再シード
  • ゼロダウンタイムを実現 - アプリケーションはリセット中も動作を継続

使用例:

  • 開発中の手動データベースリセット
  • データベースリセット機能のテスト
  • サーバーを再起動せずにテストデータをリセット
  • システム状態を保持しながらユーザーデータをクリア

出力例:

ターミナルウィンドウ
paideia sandbox reset
╔═══════════════════════════════════════════════════════╗
██████╗ █████╗ ██╗██████╗ ██████╗██╗ █████╗
██╔══██╗██╔══██╗██║██╔══██╗██╔═══╝██║██╔══██╗
██████╔╝███████║██║██║ ██║██████╗██║███████║
██╔═══╝ ██╔══██║██║██║ ██║██╔═══╝██║██╔══██║
██║ ██║ ██║██║██████╔╝██████╗██║██║ ██║
╚═╝ ╚═╝ ╚═╝╚═╝╚═════╝ ╚═════╝╚═╝╚═╝ ╚═╝
Learning Management System
╚═══════════════════════════════════════════════════════╝
🔄 サンドボックスデータベースをリセット中...
サンドボックスデータベースのリセットが正常に完了しました!

ゼロダウンタイム

サンドボックスリセットプロセスは、リセット中にシステムテーブルを保持することでゼロダウンタイムを実現します。アプリケーションは、ユーザーデータがクリアされ、再シードされている間も正常に動作を継続します。これは、データベース全体を削除してダウンタイムを引き起こす migrate fresh とは異なります。

すべてのコマンドは、次のグローバルフラグをサポートしています:

指定されたコマンドのヘルプ情報を表示します。

ターミナルウィンドウ
paideia migrate --help

マイグレーションコマンドフラグ

Section titled “マイグレーションコマンドフラグ”

破壊的な操作の確認プロンプトをスキップします。注意して使用してください。

利用可能:

  • paideia migrate fresh

:

ターミナルウィンドウ
paideia migrate fresh --force-accept-warning

-o または --output(migrate dump 用)

Section titled “-o または --output(migrate dump 用)”

データベースダンプのカスタム出力ファイル名を指定します。ファイル名は paideia_data/ ディレクトリを基準にします。

:

paideia_data/backup-before-update.sql
paideia migrate dump -o backup-before-update.sql

データベースマイグレーション

Section titled “データベースマイグレーション”
  1. 常に最初にバックアップ: 本番環境でマイグレーションを実行する前にデータベースダンプを作成

    ターミナルウィンドウ
    paideia migrate dump -o backup-before-migration.sql
    paideia migrate up
  2. ステータスを確認: マイグレーションを適用する前後でマイグレーションステータスを確認

    ターミナルウィンドウ
    paideia migrate status
  3. 開発環境でテスト: 常に最初に開発環境でマイグレーションをテスト

  4. Fresh を慎重に使用: 開発環境でのみ migrate fresh を使用

  1. 定期的なバックアップ: 定期的なデータベースダンプをスケジュール

    ターミナルウィンドウ
    # 毎日のバックアップ用の cron ジョブの例
    0 2 * * * cd /path/to/paideia && paideia migrate dump -o daily-$(date +\%Y-\%m-\%d).sql
  2. 大きな変更の前: 常に次の操作の前にダンプ:

    • マイグレーションの実行
    • Paideia LMS の更新
    • 重要なスキーマ変更の実行
  3. ストレージ: 長期保存のためにダンプを外部ストレージ(S3 など)に移動

  4. テスト: バックアップが有効であることを確認するために、定期的に復元手順をテスト

  • ダンプ場所: すべてのデータベースダンプは paideia_data/ ディレクトリに自動保存されます
  • ディレクトリ作成: paideia_data/ ディレクトリが存在しない場合は、自動的に作成されます
  • Git 無視: paideia_data/ ディレクトリは git によって自動的に無視されます
  • Docker 無視: paideia_data/ ディレクトリは Docker ビルドから除外されます

Paideia CLI コマンドは、適切な終了コードを返します:

  • 0: コマンドが正常に完了
  • 1: コマンドがエラーで失敗

これにより、スクリプトや自動化ツールとの簡単な統合が可能になります:

#!/bin/bash
if paideia migrate up; then
echo "マイグレーションが正常に適用されました"
else
echo "マイグレーションが失敗しました"
exit 1
fi

コンパイル済みバイナリサポート

Section titled “コンパイル済みバイナリサポート”

すべての CLI コマンドは、コンパイル済みの単一バイナリデプロイメントとシームレスに動作します:

  1. 開発: コマンドを直接実行

    ターミナルウィンドウ
    bun server/index.ts migrate status
  2. 本番: 単一バイナリにコンパイルして実行

    ターミナルウィンドウ
    bun build server/index.ts --compile --outfile paideia
    ./paideia migrate status

CLI モードはコンパイル済みバイナリで動作します。理由:

  • マイグレーションはコンパイル時にバイナリにバンドルされます
  • マイグレーションユーティリティにファイルシステム依存関係がありません
  • すべてのコマンドは、コンパイル済みモードと非コンパイルモードで同じように動作します

マイグレーションコマンドが動作しない:

  • 正しいプロジェクトディレクトリにいることを確認
  • データベース接続が正しく設定されていることを確認
  • DATABASE_URL 環境変数が設定されていることを確認

ダンプコマンドが失敗する:

  • プロジェクトディレクトリに書き込み権限があることを確認
  • 十分なディスク容量があることを確認
  • データベース接続がアクティブであることを確認

サーバーが起動しない:

  • 必要なポートが既に使用されていないことを確認
  • 環境変数が正しく設定されていることを確認
  • 特定のエラーメッセージについてログを確認
Ask DeepWiki
貢献する コミュニティ スポンサー