LoginSignup
4
2

Wiki.js を AWS ECS on Fargate + RDS で動かすハンズオン

Last updated at Posted at 2023-12-09

Wiki.js は無料で利用できる OSS の Wiki です。高速な Node.js エンジンで実行され、多機能でデザインもモダンな次世代の Wiki です。

Wiki.js の概要・特徴についてはこの記事にまとめています。

そんな Wiki.js を AWS Fargate 上にデプロイしてみます。

データベース

Wiki.js はデータベースがないと起動できません。まずはデータベースを作成しましょう。

AWS コンソールの RDS のページから、「データベースの作成」を押下します。

リージョンが アジアパシフィック (東京) ap-northeast-1 になっていることを確認してください。

  • データベースの作成方法を選択 : 標準作成
  • エンジンのオプション : 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
  • タスクロール : 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

ECS クラスターの作成

サービスを作成する前に、クラスターを作成しておきます。

  • クラスター名: wiki-js-cluster
  • インフラストラクチャ: AWS Fargate

ECS サービスの作成

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3232373739312f63653561353036622d396136312d373738632d376263302d3131336132333133646666372e706e67.png

  • 既存のクラスター: wiki-js-cluster
  • アプリケーションタイプ: サービス
  • サービス名: wiki-js-service
  • サービスタイプ: レプリカ
  • 必要なタスク: 1
  • ネットワーキング
    • VPC: default-vpc
    • サブネット: default-subnet-01, default-subnet-02, default-subnet-03
    • セキュリティグループ: default
    • パブリックIP: オン
  • ロードバランシング
    • ロードバランサーの種類: Application Load Balancer
    • 新しいロードバランサーの作成
    • ロードバランサー名: wiki-js-alb
    • ヘルスチェックの猶予期間: 30s
    • コンテナ
      • ロードバランス用のコンテナの選択: wiki-js-01
      • リスナー: 新しいリスナーを作成
        • ポート: 80
        • プロトコル: HTTP
      • ターゲットグループ: 新しいターゲットグループの作成
        • ターゲットグループ名: wiki-js-tg
        • プロトコル: HTTP
        • ヘルスチェックプロトコル: HTTP
        • ヘルスチェックパス: /

アクセスしてみる

しばらくして、AWS コンソールでロードバランサーのページにいくと、ALB が作成されています。

押下して詳細に進むと、「DNS名」という項目があります。

これをコピーしてブラウザに貼り付けてアクセスしてみましょう。

こんな感じで表示されたら成功です!! :clap: :clap:

感想

Wiki.js は公式がコンテナを配布してくれているので、ビルドやコーディングなしで AWS 上にデプロイできてしまうことがわかりました!

参考

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2