0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NocoBaseをAWS EC2にデプロイする(docker編)

Posted at

目的

NocoBaseを自分のドメインで公開環境を作成する。

・SSL化も行う

EC2で適当なインスタンスを作成

今回はAmazon Linux 2023でArmのt4g.microにしました。

各種インストール

docker-composeの導入 参考


# dockerのインストール
sudo dnf update && sudo dnf install -y docker

# Dockerデーモン起動
sudo systemctl start docker

# sudoなしで実行できるように、ユーザーグループの追加
sudo gpasswd -a $(whoami) docker
# Adding user ec2-user to group docker

# Dockerに書き込み権限の付与
$ sudo chgrp docker /var/run/docker.sock

# Dockerデーモンの再起動
$ sudo service docker restart
# Redirecting to /bin/systemctl restart docker.service

# Dockerデーモンの自動起動設定
$ sudo systemctl enable docker
# Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.

# Docker Composeのダウンロード & インストール
$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# パーミッション変更
$ sudo chmod +x /usr/local/bin/docker-compose

#シンボリックリンクの作成
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

$ docker -v
# Docker version 25.0.5, build 5dc9bcc

$ docker-compose -v
# Docker Compose version v2.32.4

ユーザー反映のために一旦ログアウトし再度ログインする

NocoBaseのdockerインストール

チュートリアル通りに進めます。

# NocoBase が生成したシステムファイルを保存するために、my-project(または他の名前)という名前のフォルダーを作成します
mkdir my-project && cd my-project

# 空の docker-compose.yml ファイルを作成します
vi docker-compose.yml
docker-compose.yml
version: '3'

networks:
  nocobase:
    driver: bridge

services:
  app:
    image: nocobase/nocobase:latest
    networks:
      - nocobase
    depends_on:
      - postgres
    environment:
      # アプリケーションのシークレットキー、ユーザートークンなどを生成するのに使用します
      # APP_KEY が変更されると、古いトークンも無効になります
      # 任意のランダム文字列にし、外部に漏らさないようにしてください
      - APP_KEY=your-secret-key
      # データベースタイプ、postgres、mysql、mariadb に対応
      - DB_DIALECT=postgres
      # データベースホスト、既存のデータベースサーバーの IP に置き換えることができます
      - DB_HOST=postgres
      # データベース名
      - DB_DATABASE=nocobase
      # データベースユーザー
      - DB_USER=nocobase
      # データベースパスワード
      - DB_PASSWORD=nocobase
      # タイムゾーン
      - TZ=Asia/Tokyo
      # 商用プラグインのためのサービスプラットフォームのユーザー名とパスワード
      - NOCOBASE_PKG_USERNAME=
      - NOCOBASE_PKG_PASSWORD=

    volumes:
      - ./storage:/app/nocobase/storage
    ports:
      - '13000:80'
    # init: true

  # 既存のデータベースサービスを使用する場合、postgres を起動する必要はありません
  postgres:
    image: postgres:16
    restart: always
    command: postgres -c wal_level=logical
    environment:
      POSTGRES_USER: nocobase
      POSTGRES_DB: nocobase
      POSTGRES_PASSWORD: nocobase
    volumes:
      - ./storage/db/postgres:/var/lib/postgresql/data
    networks:
      - nocobase

保存して終了

:wq

NocoBaseのインストールと起動

# 最新のイメージを取得
$ docker-compose pull
# バックグラウンドで実行
$ docker-compose up -d
# app プロセスの状態を確認
$ docker-compose logs app

nginxのインストール

$ sudo dnf -y install nginx

# nginx を起動する
$ sudo systemctl start nginx.service
# nginx を自動起動
$ sudo systemctl enable nginx.service

EC2のセキュリティグループのインバウンドルールで80ポートを開放する

ドメインへのバインディング

公式のデプロイ手順をそのまま行う

/etc/nginx/conf.d/nocobase.conf
server {
    listen 80;
    server_name your_domain.com;  # your_domain.comをあなたのドメインに置き換えてください

    location / {
        proxy_pass http://127.0.0.1:13000/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_buffering off;
    }
}

Route53でAレコードにインスタンスのIPを指定する

一旦http://mydomain.comで確認できます。

以下のSSL導入を行う場合はAレコードは一旦削除します。(ACMやCloudFrontでエラーになる)

SSL導入

EC2 ACM CloudFrontでSSLします。現在はCloudFrontを挟まなくても直接指定できる方法もありますが、コンソールだけで簡単に解決するので、こちらの方法にします。

ACMで証明書発行

ACM -> 証明書をリクエスト -> 対象のドメインmydomain.comを入力します。

DNS検証でRoute53でCNAMEを登録すれば証明書の発行が簡単にできます。
Route53ではない場合はそれぞれのDNS管理画面でCNAMEを設定します。

CloudFrontでディストリビュージョン作成

Origin domainにEC2のパブリック IPv4 DNSを指定します。
プロトコルはHTTPのみ。

代替ドメイン名に対象のドメインを入力mydomain.com
証明書はACMで発行した証明書を設定します。

Route53でAレコードにエイリアスでCloudFrontのディストリビュージョンへのエイリアスを指定する。

レコードを作成してhttps://mydomain.comで接続できるのを確認できたら完了です。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?