GZCTF は Docker イメージを通じて提供され、docker-compose を通じて完全に機能する CTF プラットフォームを迅速にデプロイできます。 これが唯一のデプロイ方法ではないことに注意してください。Kubernetes の使用をお勧めします。 関連するデプロイメント方法については、デプロイメント を参照してください。
GZCTF のセキュリティとフロントエンド機能 (クリップボードの操作など) は HTTPS に依存しています。このセクションで説明するデプロイ方法は HTTPS サポートを提供していないため、運用環境での使用には適していません、ローカルテストだけのためにで使用してください。
本ドキュメントではHTTPSの設定方法については説明しておりません。nginx、traefik、その他のソフトウェアの設定方法や使用方法についてはご自身でお問い合わせください。GZCTFのWebSocket機能も別途設定が必要な場合がありますのでご了承ください。ゲーム通知をプッシュできない場合は、まずリバース プロキシの設定を確認してください。
GZCTF の使用をすぐに開始するには、Docker と docker-compose をインストールする必要があります。関連するインストール手順は、Docker 公式 Web サイト まで参照してください。
構成を円滑に進められるために、次の初期化パラメータを準備してください。
GZCTF_ADMIN_PASSWORD
:初期管理者パスワード。 データベースが初期化されていない状態で有効となり、初回起動時に設定する必要があり、compose.yml
で設定する必要があります。POSTGRES_PASSWORD
: データベースのパスワード。compose.yml
と appsettings.json
で設定する必要があります。XOR_KEY
: ゲーム秘密鍵の暗号化に使用されるランダムな文字列。appsettings.json
で設定する必要があります。PUBLIC_ENTRY
: 外部アクセス アドレス。IP アドレスまたはドメイン名であり、プロジェクト コンテナにアクセスするためのアドレスを参加者に提供するために使用されます。appsettings.json
で設定する必要があります。次のコンテンツを appsettings.json
ファイルとして保存し、初期化パラメーターに置き換えってください。具体的な構成手順については、appsettings.json
構成 を参照してください。
次のコンテンツを compose.yml
ファイルとして保存し、初期化パラメーターに置き換えってください。利用可能なバックエンド言語は en-US
, zh-CN
, zh-TW
, ja-JP
, id-ID
, ko-KR
, ru-RU
, de-DE
, fr-FR
, es-ES
, vi-VN
です。
ネットワーク セグメントの競合が発生する可能性があります。その場合は compose.yml
のサブネット構成
または /etc/docker/daemon.json
のネットワーク セグメント構成を変更してください。
docker compose up -d
を実行して GZCTF を起動して、ブラウザから GZCTF にアクセスできるようになります。生産環境にはデフォルトで管理者権限を持つユーザーが存在しないため、初回起動時に環境変数 GZCTF_ADMIN_PASSWORD
を設定して初期管理者パスワードを設定し、Admin
アカウントでログインする必要があります。
データベースエントリを手動で変更することで、現在登録されているユーザーを管理者として設定することもできます。管理者アカウントが登録を完了し、正常にログインしたら、選択したデータベース テーブルに入り、次を実行します。
次のコマンドが使用される場合もあります:
Garnet/Redis をキャッシュとして使用して、よりシームレスなバージョンの切り替えとサーバーの再起動エクスペリエンスを実現する場合は、上記の構成に次のコンテンツを追加してください:
ファイル compose.yml
に
ファイル appsettings.json
に
そして、docker compose up -d
を実行して GZCTF をリスタートすればよいです。
GZCTF は、Docker イメージとして事前に構築およびパッケージ化されており、Docker Hub で見つけることができます。
イメージを取得するには、次の 2 つのコンテナー レジストリを使用してください。
テスト版と開発版には develop
イメージタグを使用してください。
チャレンジの構成と例については、GZCTF-Challenges をご覧ください。
また、W4terCTF 2023 の公開チャレンジを参照することもできます。ここでのチャレンジはすべて、Docker イメージのサイズが確実に小さくなるように設計されています。チャレンジが正常に機能している場合は十分ですが、ゲーム中に迅速にデプロイするには十分です。
GZCTF は、GZCTF_FLAG
環境変数をコンテナに挿入することで動的なフラッグ配布が実装されています。そのため、この環境変数のテキストがチャレンジのコンテナ初期化スクリプト内の適切な場所に配置されていることを確認してください。 この環境変数は、コンテナー イメージのビルド時ではなく、コンテナーの起動時に初期化されることに注意してください。