Wiki.js は無料で利用できる OSS の Wiki です。高速な Node.js エンジンで実行され、多機能でデザインもモダンな次世代の Wiki です。
Wiki.js の概要・特徴についてはこの記事にまとめています。
そんな Wiki.js を AWS Fargate 上にデプロイしてみます。
データベース
Wiki.js はデータベースがないと起動できません。まずはデータベースを作成しましょう。
AWS コンソールの RDS のページから、「データベースの作成」を押下します。
- データベースの作成方法を選択 :
標準作成
- エンジンのオプション :
MySQL
- エンジンバージョン :
Mysql-8.0.35
- テンプレート :
無料利用枠
- DBインスタンス識別子 :
wiki-js-mysql
- 認証情報の設定
- マスターユーザ名 :
admin
- マスターパスワード :
wikis-secret
- マスターユーザ名 :
- インスタンス :
db.t3.micro
- ストレージ
- ストレージタイプ :
汎用 SSD (gp2)
- ストレージ割り当て :
20 GiB
- 自動スケーリング :
無効
- ストレージタイプ :
- 接続
EC2 コンピューティングリソースに接続しない
- ネットワークタイプ :
IPv4
- VPC :
Default VPC
- DB サブネットグループ :
default-vpc
- パブリックアクセス :
なし
- VPC セキュリティグループ :
default
- アベイラビリティーゾーン :
ap-northeast-1a
- データベースポート :
3306
- データベース認証 :
パスワード認証
- モニタリング :
オフ
- 追加設定
- 最初のデータベース名 :
wiki_js
- パラメータグループ :
default.mysql8.0
- 自動バックアップ :
無効
- 暗号化 :
オフ
- 最初のデータベース名 :
月額の概算は以下の通りです
- DB インスタンス:
18.98 USD
- ストレージ:
2.76 USD
- 合計:
21.74 USD
RDSを使用していないときは、停止するとインスタンスにかかるコストを抑えることができます。
ただし、RDS は停止しても 1週間後に自動で起動される ことに注意してください。
ECS タスク定義の作成
Fargate サービスを作成するために、タスク定義を作成しましょう。
AWS コンソールから Fargate のページに行き、「新しいタスク定義の作成」を押下します。
以下を入力して、タスク定義を作成します。
- タスク定義ファミリー :
wiki-js-task
- 起動タイプ :
AWS Fargate
- OS、アーキテクチャ、ネットワークモード :
Linux/X86_64
- タスクサイズ
- CPU :
.5 vCPU
- メモリ :
1 GB
- CPU :
- タスクロール :
ecsTaskExecutionRole
- タスク実行ロール :
ecsTaskExecutionRole
- コンテナ - 1
- 名前:
wiki-js-01
- イメージ URI:
ghcr.io/requarks/wiki:latest
- 必須コンテナ:
はい
- プライベートレジストリ:
オフ
- ポートマッピング
- コンテナポート:
3000
- プロトコル:
TCP
- ポート名:
wiki-js-01-80-tcp
- アプリケーションプロトコル:
HTTP
- コンテナポート:
- 名前:
- 環境変数
- DB_TYPE :
mysql
- DB_HOST :
wiki-js-mysql.xxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
(AWS コンソールの RDS ページで確認してください。) - DB_PORT :
3306
- DB_USER :
admin
- DB_PASS :
wikijs-secret
- DB_NAME :
wiki_js
- DB_TYPE :
ECS クラスターの作成
サービスを作成する前に、クラスターを作成しておきます。
- クラスター名:
wiki-js-cluster
- インフラストラクチャ:
AWS Fargate
ECS サービスの作成
- 既存のクラスター:
wiki-js-cluster
- アプリケーションタイプ:
サービス
- サービス名:
wiki-js-service
- サービスタイプ:
レプリカ
- 必要なタスク:
1
- ネットワーキング
- VPC:
default-vpc
- サブネット:
default-subnet-01
,default-subnet-02
,default-subnet-03
- セキュリティグループ:
default
- パブリックIP:
オン
- VPC:
- ロードバランシング
- ロードバランサーの種類:
Application Load Balancer
新しいロードバランサーの作成
- ロードバランサー名:
wiki-js-alb
- ヘルスチェックの猶予期間: 30s
- コンテナ
- ロードバランス用のコンテナの選択:
wiki-js-01
- リスナー:
新しいリスナーを作成
- ポート:
80
- プロトコル:
HTTP
- ポート:
- ターゲットグループ:
新しいターゲットグループの作成
- ターゲットグループ名:
wiki-js-tg
- プロトコル:
HTTP
- ヘルスチェックプロトコル:
HTTP
- ヘルスチェックパス:
/
- ターゲットグループ名:
- ロードバランス用のコンテナの選択:
- ロードバランサーの種類:
アクセスしてみる
しばらくして、AWS コンソールでロードバランサーのページにいくと、ALB が作成されています。
押下して詳細に進むと、「DNS名」という項目があります。
これをコピーしてブラウザに貼り付けてアクセスしてみましょう。
こんな感じで表示されたら成功です!!
感想
Wiki.js は公式がコンテナを配布してくれているので、ビルドやコーディングなしで AWS 上にデプロイできてしまうことがわかりました!