SHELLGEI ONLINE JUDGE is a shell one-liner playground: https://shellgei-online-judge.com/
シェル芸オンラインジャッジはシェル芸で問題を解いて遊ぶウェブアプリです。 ブラウザから入力されたコマンドを専用runnerがrootless Dockerのsandboxで実行し、 出力、画像、判定結果をfrontendへ返します。
- 開発手順の目的別入口で、検査だけ行うか、全体を起動するかを選びます。
- 変更対象のbackend・frontendを読み、責務と変更箇所を確認します。
- API変更はAPI仕様、問題変更は作問ガイド、実行・隔離の変更はSECURITY.mdを確認します。
- 変更の反映と検査に従って、レビュー可能なdiffと検証結果を用意します。作業・commitの規約はAGENTS.mdを参照してください。
Compose・sandboxの実行にはrootless Dockerが必須です。提出コマンドをホストやbackendのshellで実行しないでください。 Docker socket、資源制限、timeoutと回収、ログの保持と既知の限界はセキュリティモデルを正本とします。 Dockerを使わない検査は、Docker・DB・TLSの準備なしで実行できます。
ブラウザはfrontendのnginxを経由して公開backend APIへ接続します。 backendは問題を取得し、内部runnerに実行を依頼して、結果を判定・DB保存します。 Docker socketを持つのはrunnerだけで、提出ごとの処理はsandbox内で実行します。 コードの入口と依存方向はbackendの構成、UIの入口はfrontendの構成を参照してください。
| 文書 | 対象 | 内容 |
|---|---|---|
| 開発環境 | 開発者 | 目的別の準備、検査、Compose起動、変更の反映 |
| backend / frontend | 開発者 | 各componentの責務、提出経路、変更箇所と検査への入口 |
| Public API | API利用者・開発者 | request・response、HTTP statusとcache、上限、legacy互換性 |
| Docker統合テスト | 開発者 | 安全な実行条件、検査範囲の選択、必要imageと有効化flag |
| 問題作成ガイド / 設計記録 | 問題作成者 | 作問方針、設計・検証手順、各問題の学習意図 |
| 問題データ | 問題作成者 | 現行YAML、画像、判定、manifestと移行baseline |
| セキュリティ | 開発者・運用者 | 現在のセキュリティモデル、sandbox制限、既知の制約 |
| セキュリティ課題 | 開発者・運用者 | 現在の課題、確認範囲、次の作業と過去の検証記録 |
| sandbox image | 開発者・運用者 | 収録コマンド、問題data、画像policy、互換性 |
| AGENTS.md | 開発者・開発支援agent | 変更、検証、文書同期、Git操作の作業規約 |
| 文書 | 対象 | 内容 |
|---|---|---|
| CI・供給網の検査 | 開発者・運用者 | CI権限、scan、SBOM、provenance、依存更新 |
| リリース手順 | 開発者・運用者 | バージョン管理、移行・復帰への入口、公開前確認 |
| 本番デプロイ | 運用者 | 必要な設定、build、DB更新、起動、動作確認、障害対応 |
| main pushからの自動更新 | 運用者 | CI成功後のSSH配備、初回設定、データ保持方針、障害対応 |
| 本番ホスト設定 | サーバ管理者 | 初回のrootless Docker、公開経路、TLS、再起動確認 |
| deploy | 開発者・運用者 | デプロイ補助スクリプト |
| 文書 | 内容 |
|---|---|
| 更新履歴 | 過去のリリースとメンテナンスの履歴 |
| v3.0.0リファクタリング記録 | 完了した31項目の設計判断・検証・commit。現行仕様の正本ではありません |
| v3移行前のbehavior baseline | 移行前の回帰基準と、v3で修正した旧挙動 |
- 旧sandboxでシェル芸botのDockerイメージを利用していました。現在の構成は独自sandbox文書を参照してください
- jiro4989/webshのシステム構成を参考にしています