メインコンテンツへスキップ
  1. Blog/

CTFdをAWSのEC2とCoudflareTunnelを使って簡単にHTTPSで公開する

CTFdをAWSのEC2とCoudflareTunnelを使って簡単にHTTPSで公開した手順を紹介します。


はじめに #

こんにちは、IKです。

自分が行ったことを文書として記録しておこうと考え、記述します。

今回はCTFdをAWSのEC2とCoudflareTunnelを使って簡単にHTTPSで公開した手順を紹介します。

間違っている点、わかりにくい点などあればご連絡いただけると幸いです。


前提 #

下記を前提条件として進めていきます。

  1. Cloudflareで管理しているドメインを所有している
  2. AWSでEC2インスタンス(Ubuntu)を所有している

VPC上にCTFdを展開する #

まず、VPC上にCTFdを展開していきましょう。

CTFdはdockerでまとまっているのでVPC上で展開する手順は非常に簡単です。

筆者のVPCの環境は下記となります。

Distributor ID:	Ubuntu
Description:	Ubuntu 24.04.1 LTS
Release:	    24.04
Codename:	    noble

SSH接続 #

  • SSHに接続
ssh -i .ssh/<キーペア名>.pem ubuntu@<VPCのIPアドレス>

パッケージの更新 #

  • 最新のパッケージ情報を取得
sudo apt update
  • パッケージを更新
sudo apt upgrade

DockerとGitをインストール #

  • Dockerをインストール
sudo apt install docker-compose
  • Gitをインストール
sudo apt install git

CTFdをGitHubから取得 #

  • git cloneでCTFdを取得
git clone https://github.com/CTFd/CTFd.git ctfd

Docker #

  • cloneしたディレクトリへ移動
cd ctfd
  • コンテナを立ち上げる
sudo docker-compose up -d

これで、http://localhost:8000でCTFdが公開されていると思います。


CloudflareTunnelの実装 #

次に、CloudflareTunnelの実装をしていきます。

CloudflareTunnelを実装することで、上記のhttp://localhost:8000で公開されているサーバをHTTPSで外部に公開することができます。

では、まずCloudflareのZeroTrust画面に行きます。

  1. ZeroTrust画面へ
    Blog-ctfd-zerotrust.png

次に、CloudflareTunnelの画面に行きます。

  1. CloudflareTunnelの画面へ
    Blog-ctfd-tunnels.png

では、CloudflareTunnelを作成していきましょう。

下記のCreate a Tunnelボタンを押してください。
※Tunnelを初めて作成する場合はAdd a Tunnelボタンのようなものだった気がします。

  1. Tunnelの作成
    Blog-ctfd-create.png

TunnelTypeはCloudflaredを選択します。

  1. TunnelTypeの選択
    Blog-ctfd-cloudflared.png

Tunnelの名称を決めてください。

  1. Tunnelの名前を設定
    Blog-ctfd-name.png

VPC側にCloudflaredをインストールしていきます。

①:OSを選択

②:アーキテクチャを選択

③:作成されたコマンドをコピー

  1. VPCにCloudflaredをインストール
    Blog-ctfd-install.png

作成されたコマンドをVPC側のシェルで入力してください。
※余談ですが、このコマンドでは一度きりのインストールとなるため、aptでコントロールしたい場合はapt側でインストールすることを推奨します。

  • 作成されたコマンド
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && 

sudo dpkg -i cloudflared.deb && 

sudo cloudflared service install yourkey

最後にサブドメインの設定を行っていきます。

  • Public hostnameには公開したいサブドメインを入力してください。

  • ServiceにはVPC側で起動しているコンテナのURLを入力してください
    ※今回の場合はhttp://localhost:8000になります。

  • 最後にSave tunnelを押せば完了です。

  1. サブドメインの設定
    Blog-ctfd-domain.png

これで指定したサブドメインでブラウザからCTFdのコンテナに繋がると思います。


終わりに #

今回はCTFdをAWSのEC2とCoudflareTunnelを使って簡単にHTTPSで公開した手順を紹介しました。

CloudflareTunnelが凄すぎて衝撃です。

お読みいただきありがとうございました。