LayChat サーバー構築マニュアル
本マニュアルは、LayChat Ver1.2.0 をサーバーに構築・運用するための技術ガイドです。Docker を使ったローカル起動から、AWS Elastic Beanstalk・Heroku へのクラウドデプロイまでを網羅しています。
1. はじめに
エディション比較
LayChat には3つのエディションがあります。用途に合わせて選択してください。
Free版
- 基本チャット・DM
- スレッド・ピン・ブックマーク
- Web Push通知
- PWA対応
- ローカルストレージ
- AI Botなし
- カスタムスタンプなし
Standard版
- Free版の全機能
- AI Bot(@bot)
- カスタムスタンプ
- システム統計
- グループプラン管理
- AWS S3ストレージ
- ユーザー50名まで
- ライセンス認証(コールホーム)
- ビデオ通話なし
Enterprise版
- Free版の全機能
- AI Bot(@bot)
- カスタムスタンプ
- システム統計
- グループプラン管理
- AWS S3ストレージ
- ビデオ通話(WebRTC)
- ライセンス認証(コールホーム)
- 無制限ユーザー
LAYCHAT-STD-A1B2C3D4、Enterprise版 LAYCHAT-ENT-A1B2C3D4)と検証サーバーのURLが必要です。検証失敗時は7日間の猶予期間があります。
最小システム要件
S3ストレージ使用時(Standard/Enterprise版)はローカルディスク容量の制約はありません。
このマニュアルの使い方
LayChat のセットアップ手順は、エディションとデプロイ先の組み合わせによって異なります。まず下の表で「自分のケース」を確認し、該当する章へ進んでください。
| ケース | 読む章 | 必要なもの(概要) |
|---|---|---|
| Free版・社内サーバー/PCで試す | 3章 | Docker のみ |
| Standard版・社内/VPSで動かす(社内LAN限定) | 4章-A | Docker・ライセンスキー・(S3任意) |
| Standard版・インターネット公開(おすすめ) | 4章-A → 8章 | Docker・ライセンスキー・Cloudflareアカウント・ドメイン |
| Standard版・AWSで動かす | 4章-B → 9章 | AWSアカウント・ライセンスキー・S3 |
| Standard版・Herokuで動かす | 4章-C → 10章 | Herokuアカウント・ライセンスキー・S3 |
| Enterprise版・社内/VPSで動かす(社内LAN限定) | 5章-A | Docker・ライセンスキー・S3・(TURN任意) |
| Enterprise版・インターネット公開(おすすめ) | 5章-A → 8章 | Docker・ライセンスキー・S3・Cloudflareアカウント・ドメイン |
| Enterprise版・AWSで動かす | 5章-B → 9章 | AWSアカウント・ライセンスキー・S3・(TURN任意) |
| Enterprise版・Herokuで動かす | 5章-C → 10章 | Herokuアカウント・ライセンスキー・S3・(TURN任意) |
まずは ローカルDocker(社内サーバー/PC) での起動をお勧めします。クラウドへのデプロイは動作確認後でも遅くありません。AWS・Heroku への本番デプロイは IT の知識が必要です。不明な場合は サポートまでお問い合わせ ください。
2. 事前準備
Docker / Docker Composeのインストール
LayChatはDockerで動作します。まずDockerをインストールしてください。
macOS / Windows
Docker Desktopをインストールしてください。Docker ComposeはDocker Desktopに同梱されています。
Linux(Ubuntu/Debian)
# 必要パッケージのインストール
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
# Docker公式GPGキーの追加
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Dockerリポジトリの追加
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker Engineのインストール
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
# 現在のユーザーをdockerグループに追加(sudoなしで実行可能に)
sudo usermod -aG docker $USER
newgrp docker
# バージョン確認
docker --version
docker compose version
Node.js 20のインストール(ローカル開発時)
Dockerを使う本番環境では不要ですが、ローカルで直接実行する場合やVAPIDキー生成に使います。
# nvmを使ったインストール(推奨)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc # または ~/.zshrc
nvm install 20
nvm use 20
node --version # v20.x.x が表示されればOK
VAPIDキーの生成
Web Push通知に必要なVAPIDキーを生成します。このキーペアは一度生成したら変更しないでください。変更すると既存の通知登録が無効になります。
# web-pushライブラリをグローバルインストール
npm install -g web-push
# VAPIDキーペアを生成
web-push generate-vapid-keys
以下のような出力が得られます:
Public Key:
BNZ8g7tXdXmrF3sY9k2mP...(88文字程度)
Private Key:
xK3j9mLpQ7...(44文字程度)
生成された Public Key を VAPID_PUBLIC_KEY、Private Key を VAPID_PRIVATE_KEY に設定します。
AWS S3バケットの作成(Standard/Enterprise版)
-
AWSコンソールにログインし、S3サービスを開く
-
「バケットを作成」をクリック。バケット名(例:
my-laychat-uploads)とリージョンを設定 -
「パブリックアクセスをすべてブロック」をオフにし、パブリック読み取りを許可
-
バケットポリシーを設定(以下のJSONを適用)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
次に、IAMユーザーを作成してアクセスキーを取得します。
- IAM → ユーザー → 「ユーザーを作成」をクリック
- 「許可を追加」→「ポリシーを直接アタッチ」→「AmazonS3FullAccess」を選択(または専用ポリシーを作成)
- 「セキュリティ認証情報」タブ → 「アクセスキーを作成」→ キーIDとシークレットを控える
Google Gemini APIキーの取得(Standard/Enterprise版)
- Google AI Studio(aistudio.google.com)にアクセス
- 「Get API Key」→「Create API key」をクリック
- 生成されたキー(
AIza...で始まる文字列)をGEMINI_API_KEYに設定
3. Free版セットアップ(ローカルDockerでの起動)
ファイルの配置
LayChatのソースファイルをサーバー上の任意のディレクトリに配置します。以下の構成になっていることを確認してください。
laychat/
├── server.js
├── main.js
├── index.html
├── style.css
├── sw.js
├── manifest.json
├── dockerfile
├── Procfile
├── package.json
├── configs/
│ ├── .env.free ← 編集する設定ファイル
│ ├── .env.free.sample ← テンプレート(参照用)
│ ├── docker-compose.free.yml
│ └── ...
└── uploads/ ← ローカルストレージ用(自動作成)
.env.free の設定
configs/.env.free.sample を configs/.env.free としてコピーし、以下の項目を設定します。
# ==========================================
# LayChat Free版 環境設定ファイル
# ==========================================
# エディション識別子(変更不要)
EDITION=free
# ストレージ設定: Free版はローカル推奨
STORAGE_TYPE=local
# MongoDB接続URI(Docker使用時は自動設定のため空白でOK)
MONGODB_URI=
# Web Push通知用VAPIDキー(web-push generate-vapid-keysで生成)
VAPID_PUBLIC_KEY=BNZ8g7tXdXmr...(生成した公開鍵)
VAPID_PRIVATE_KEY=xK3j9mLpQ7...(生成した秘密鍵)
VAPID_EMAIL=mailto:admin@your-domain.com
# Google OAuth設定(省略可)
APP_URL=https://your-domain.com
SESSION_SECRET=ランダムな文字列(例: openssl rand -hex 32 で生成)
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
mailto: プレフィックスを含めてください(例: mailto:admin@example.com)。URLを設定する場合は https:// プレフィックスを使用します。
docker-compose.free.yml の確認
設定ファイル configs/docker-compose.free.yml の内容を確認します(通常は変更不要)。
name: laychat-free
services:
mongo:
image: mongo:4.4
container_name: laychat-free-mongo
restart: always
volumes:
- laychat-free-db:/data/db
networks:
- laychat-network
app:
build: ..
container_name: laychat-free-app
restart: always
ports:
- "8080:8080"
env_file:
- .env.free
environment:
- MONGODB_URI=mongodb://mongo:27017/laychat
- EDITION=free
- STORAGE_TYPE=local
volumes:
- ../uploads:/app/uploads
depends_on:
- mongo
networks:
- laychat-network
volumes:
laychat-free-db:
networks:
laychat-network:
driver: bridge
起動コマンド
Ver1.2.0 ディレクトリに移動し、以下のコマンドを実行します。
# Ver1.2.0ディレクトリに移動
cd /path/to/Ver1.2.0
# Free版を起動(バックグラウンド実行)
docker compose -f configs/docker-compose.free.yml up -d --build
# ログの確認
docker compose -f configs/docker-compose.free.yml logs -f
動作確認
起動後、ブラウザで以下のURLにアクセスします。
http://localhost:8080 # ローカルの場合
http://your-server-ip:8080 # リモートサーバーの場合
停止・再起動コマンド
# 停止
docker compose -f configs/docker-compose.free.yml down
# 再起動(コンテナのみ)
docker compose -f configs/docker-compose.free.yml restart
# ソースコードを更新して再ビルド起動
docker compose -f configs/docker-compose.free.yml up -d --build
# 完全削除(データも含む)※データが消えるため注意
docker compose -f configs/docker-compose.free.yml down -v
4. Standard版セットアップ(ローカルDockerでの起動)
Standard版は以下の4つのデプロイ先に対応しています。まず動かしたい環境を選択し、対応するチェックリストを確認してください。
- A. ローカルDocker(社内サーバー・VPS・自宅サーバー)← 初めての方はこちら
- A + Cloudflare Tunnel(外部インターネット公開・ドメイン取得済みの方)→ 本章でローカル手順を確認後、8章へ
- B. AWS Elastic Beanstalk(AWSの知識がある方向け)→ 本章でローカル手順を確認後、9章へ
- C. Heroku(Herokuの知識がある方向け)→ 本章でローカル手順を確認後、10章へ
A. ローカルDockerの事前チェックリスト
ファイルの配置
Free版と同様に、LayChatのソースファイルをサーバー上の任意のディレクトリに配置します。
laychat/
├── server.js
├── main.js
├── index.html
├── dockerfile
├── package.json
├── configs/
│ ├── .env.standard ← 編集する設定ファイル
│ ├── .env.standard.sample ← テンプレート(参照用)
│ ├── docker-compose.standard.yml
│ └── ...
└── uploads/ ← ローカルにも一時利用される場合あり
.env.standard の設定
Standard版はライセンス認証のために当社ライセンスサーバーへの接続が必要です。ライセンスキー(LAYCHAT-STD-XXXXXXXX)と当社より提供するライセンスサーバーURLをご確認の上、設定を行ってください。
configs/.env.standard.sample を configs/.env.standard としてコピーし、以下の項目を設定します。
# エディション識別子(変更不要)
EDITION=standard
# ストレージ設定
STORAGE_TYPE=s3
# AWS S3設定(必須)
AWS_ACCESS_KEY_ID=AKIAxxxxxxxxxxxxxxxxxx
AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
S3_BUCKET=my-laychat-uploads
# MongoDB接続URI(Docker使用時は空白でOK)
MONGODB_URI=
# Gemini AI APIキー(必須)
GEMINI_API_KEY=AIzaSy...
# Web Push VAPID設定
VAPID_PUBLIC_KEY=(生成した公開鍵)
VAPID_PRIVATE_KEY=(生成した秘密鍵)
VAPID_EMAIL=mailto:admin@your-domain.com
# Google OAuth設定(省略可)
APP_URL=https://your-domain.com
SESSION_SECRET=ランダムな文字列
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
# Microsoft OAuth設定(省略可)
MICROSOFT_CLIENT_ID=
MICROSOFT_CLIENT_SECRET=
# ==========================================
# Standard版:ライセンス認証設定(必須)
# ==========================================
# LayChat運営から発行されたライセンスキー
LAYCHAT_LICENSE_KEY=LAYCHAT-STD-A1B2C3D4
# ライセンス検証を行うサーバーURL(末尾スラッシュ不要)
LAYCHAT_MASTER_URL=https://admin.laychat.example.com
ローカルにファイルを保存する場合(
STORAGE_TYPE=local)は AWS S3の設定は不要です。S3を使用する場合のみ AWS_ACCESS_KEY_ID・AWS_SECRET_ACCESS_KEY・S3_BUCKET を設定してください。
- Standard版サーバーからライセンスサーバーへのHTTPS通信が必要です
- 認証に失敗した場合、7日間の猶予期間が設けられます
- 猶予期間内に認証が成功しない場合、一部機能が制限される場合があります
LAYCHAT_MASTER_URLはライセンスサーバーの外部公開URLを指定してください(localhost不可)
docker-compose.standard.yml の確認
設定ファイル configs/docker-compose.standard.yml の内容を確認します(通常は変更不要)。
name: laychat-standard
services:
mongo:
image: mongo:4.4
container_name: laychat-standard-mongo
restart: always
volumes:
- laychat-standard-db:/data/db
networks:
- laychat-network
app:
build: ..
container_name: laychat-standard-app
restart: always
ports:
- "8081:8080"
env_file:
- .env.standard
environment:
- MONGODB_URI=mongodb://mongo:27017/laychat
- EDITION=standard
depends_on:
- mongo
networks:
- laychat-network
volumes:
laychat-standard-db:
networks:
laychat-network:
driver: bridge
8081 を使用)。
起動コマンド
Ver1.2.0 ディレクトリに移動し、以下のコマンドを実行します。
# Ver1.2.0ディレクトリに移動
cd /path/to/Ver1.2.0
# Standard版を起動(バックグラウンド実行)
docker compose -f configs/docker-compose.standard.yml up -d --build
# ログの確認(ライセンス認証の成否もここで確認できます)
docker compose -f configs/docker-compose.standard.yml logs -f
動作確認
起動後、ブラウザで以下のURLにアクセスします。
http://localhost:8081 # ローカルの場合
http://your-server-ip:8081 # リモートサーバーの場合
停止・再起動コマンド
# 停止
docker compose -f configs/docker-compose.standard.yml down
# 再起動(コンテナのみ)
docker compose -f configs/docker-compose.standard.yml restart
# ソースコードを更新して再ビルド起動
docker compose -f configs/docker-compose.standard.yml up -d --build
# 完全削除(データも含む)※データが消えるため注意
docker compose -f configs/docker-compose.standard.yml down -v
ライセンス認証確認
起動後、システム管理画面(管理者メニュー → システム管理)を開き、「ライセンス状態」タブで認証状況を確認できます。
LAYCHAT_MASTER_URL の設定を確認し、ライセンス発行サーバーへの疎通を確認してください。
5. Enterprise版セットアップ(ローカルDockerでの起動)
Enterprise版は以下の4つのデプロイ先に対応しています。まず動かしたい環境を選択し、対応するチェックリストを確認してください。
- A. ローカルDocker(社内サーバー・VPS・自宅サーバー)← 初めての方はこちら
- A + Cloudflare Tunnel(外部インターネット公開・ドメイン取得済みの方)→ 本章でローカル手順を確認後、8章へ
- B. AWS Elastic Beanstalk(AWSの知識がある方向け)→ 本章でローカル手順を確認後、9章へ
- C. Heroku(Herokuの知識がある方向け)→ 本章でローカル手順を確認後、10章へ
A. ローカルDockerの事前チェックリスト
Standard/Enterprise版はライセンス認証のために内部管理用ライセンス発行サーバーへの接続が必要です。ライセンスキーと発行サーバーのURLをご確認の上、設定を行ってください。
ファイルの配置
Enterprise版も同様に、LayChatのソースファイルを配置します(Standard版とは別ディレクトリを推奨)。
laychat/
├── server.js
├── main.js
├── index.html
├── dockerfile
├── package.json
├── configs/
│ ├── .env.enterprise ← 編集する設定ファイル
│ ├── .env.enterprise.sample ← テンプレート(参照用)
│ ├── docker-compose.enterprise.yml
│ └── ...
└── uploads/
.env.enterprise の設定
# エディション識別子(変更不要)
EDITION=enterprise
# ストレージ設定
STORAGE_TYPE=s3
# AWS S3設定(必須)
AWS_ACCESS_KEY_ID=AKIAxxxxxxxxxxxxxxxxxx
AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
S3_BUCKET=my-laychat-uploads
# MongoDB接続URI(Docker使用時は空白でOK)
MONGODB_URI=
# Gemini AI APIキー(必須)
GEMINI_API_KEY=AIzaSy...
# Web Push VAPID設定
VAPID_PUBLIC_KEY=(生成した公開鍵)
VAPID_PRIVATE_KEY=(生成した秘密鍵)
VAPID_EMAIL=mailto:admin@your-domain.com
# Google OAuth設定(省略可)
APP_URL=https://your-domain.com
SESSION_SECRET=ランダムな文字列
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
# TURN設定(省略可・ビデオ通話用)
TURN_URL=
TURN_USERNAME=
TURN_CREDENTIAL=
# ==========================================
# Enterprise版専用:ライセンス認証設定(必須)
# ==========================================
# LayChat運営から発行されたライセンスキー
LAYCHAT_LICENSE_KEY=LAYCHAT-ENT-A1B2C3D4
# ライセンス検証を行うサーバーURL(末尾スラッシュ不要)
LAYCHAT_MASTER_URL=https://admin.laychat.example.com
LAYCHAT_MASTER_URLの設定
Enterprise版はライセンス発行サーバーに対してライセンスキーの検証を定期的に行います。LAYCHAT_MASTER_URL にはライセンス発行サーバーの公開URLを設定してください(末尾のスラッシュは不要)。
- Standard/Enterprise版サーバーからライセンス発行サーバーへのHTTPS通信が必要です
- 認証に失敗した場合、7日間の猶予期間が設けられます
- 猶予期間内に認証が成功しない場合、一部機能が制限される場合があります
LAYCHAT_MASTER_URLはライセンス発行サーバーの外部公開URLを指定してください(localhost不可)
docker-compose.enterprise.yml の確認
設定ファイル configs/docker-compose.enterprise.yml の内容を確認します(通常は変更不要)。
name: laychat-enterprise
services:
mongo:
image: mongo:4.4
container_name: laychat-enterprise-mongo
restart: always
volumes:
- laychat-enterprise-db:/data/db
networks:
- laychat-network
app:
build: ..
container_name: laychat-enterprise-app
restart: always
ports:
- "8082:8080"
env_file:
- .env.enterprise
environment:
- MONGODB_URI=mongodb://mongo:27017/laychat
- EDITION=enterprise
depends_on:
- mongo
networks:
- laychat-network
volumes:
laychat-enterprise-db:
networks:
laychat-network:
driver: bridge
8082 を使用)。
起動コマンド
Ver1.2.0 ディレクトリに移動し、以下のコマンドを実行します。
# Ver1.2.0ディレクトリに移動
cd /path/to/Ver1.2.0
# Enterprise版を起動(バックグラウンド実行)
docker compose -f configs/docker-compose.enterprise.yml up -d --build
# ログの確認(ライセンス認証の成否もここで確認できます)
docker compose -f configs/docker-compose.enterprise.yml logs -f
動作確認
起動後、ブラウザで以下のURLにアクセスします。
http://localhost:8082 # ローカルの場合
http://your-server-ip:8082 # リモートサーバーの場合
License verified と表示されればライセンス認証も完了しています。
停止・再起動コマンド
# 停止
docker compose -f configs/docker-compose.enterprise.yml down
# 再起動(コンテナのみ)
docker compose -f configs/docker-compose.enterprise.yml restart
# ソースコードを更新して再ビルド起動
docker compose -f configs/docker-compose.enterprise.yml up -d --build
# 完全削除(データも含む)※データが消えるため注意
docker compose -f configs/docker-compose.enterprise.yml down -v
ライセンス認証確認
起動後、システム管理画面(管理者メニュー → システム管理)を開き、「ライセンス状態」タブで認証状況を確認できます。
LAYCHAT_MASTER_URL の設定を確認し、ライセンス発行サーバーへの疎通を確認してください。
6. ビデオ通話のTURN設定(Enterprise版のみ、任意)
ビデオ通話機能(WebRTC)はEnterprise版限定でDM間で利用できます。TURNサーバーの設定は任意ですが、異なるネットワーク(企業ファイアウォール内外など)をまたぐ通話には必要です。
STUNサーバー(設定不要)
LayChatはデフォルトでGoogleの公開STUNサーバー(stun:stun.l.google.com:19302)を使用します。同一LAN内や一般家庭回線同士の通話であれば、TURNサーバーなしで動作します。
TURNサーバーが必要なケース
- 企業のファイアウォールやNAT環境下でのビデオ通話
- Symmetric NATを使用している環境
- モバイル回線 ↔ 固定回線など、異なるネットワーク間の通話
Metered.ca を使う場合(無料枠あり)
- Metered.ca にアクセスしてアカウントを作成
- ダッシュボードから TURN URL / Username / Credential を取得
-
環境変数に設定:.env.enterprise
TURN_URL=turn:openrelay.metered.ca:443 TURN_USERNAME=openrelayproject TURN_CREDENTIAL=openrelayproject
Cloudflare Calls を使う場合(月1,000分無料)
- Cloudflare Calls を有効化(Cloudflareアカウント必要)
- TURN クレデンシャルをCloudflareダッシュボードから生成
-
環境変数に設定:.env.enterprise
TURN_URL=turn:turn.cloudflare.com:3478 TURN_USERNAME=(Cloudflareから発行されたユーザー名) TURN_CREDENTIAL=(Cloudflareから発行されたパスワード)
coturnをEC2にセルフホストする場合
# coturnのインストール
sudo apt-get install -y coturn
# /etc/turnserver.conf の主要設定
sudo tee /etc/turnserver.conf <<EOF
listening-port=3478
tls-listening-port=5349
external-ip=$(curl -s ifconfig.me)
realm=your-domain.com
user=turnuser:turnpassword
lt-cred-mech
fingerprint
no-cli
EOF
# サービス有効化・起動
sudo systemctl enable coturn
sudo systemctl start coturn
7. 初期設定(起動後)
最初のアカウント作成とシステム管理者設定
LayChatはユーザー登録画面から最初のアカウントを作成します。
- ブラウザでLayChatにアクセスし、「アカウント作成」をクリック
- ユーザー名・メールアドレス・パスワードを入力して登録
-
システム管理者の設定:MongoDBにアクセスし、最初のユーザーに管理者フラグを設定しますbash(Dockerコンテナ経由でMongoDBにアクセス)
# MongoDBコンテナに接続(Free版の例) docker exec -it laychat-free-mongo mongosh # laychatデータベースを選択 use laychat # 対象ユーザーを管理者に設定(usernameを実際の値に変更) db.users.updateOne( { username: "your-admin-username" }, { $set: { isSystemAdmin: true } } ) # 確認 db.users.findOne({ username: "your-admin-username" }, { username: 1, isSystemAdmin: 1 }) - ブラウザをリロードし、右上のメニューから「システム管理」が表示されることを確認
SMTP設定(パスワードリセットメール用)
システム管理画面の「システム設定」タブからSMTPを設定します。環境変数での設定も可能です。
| 設定項目 | 説明 | 例(Gmail) |
|---|---|---|
| SMTPホスト | メールサーバーのホスト名 | smtp.gmail.com |
| SMTPポート | 587(TLS)または 465(SSL) | 587 |
| SMTPユーザー名 | 認証用メールアドレス | your@gmail.com |
| SMTPパスワード | アプリパスワード(2段階認証有効時) | xxxx xxxx xxxx xxxx |
| 差出人メールアドレス | 送信元として表示されるアドレス | noreply@your-domain.com |
グループプランの設定(Standard/Enterprise版)
Standard/Enterprise版ではグループごとに「Free」または「Premium」プランを設定できます。Premium設定にするとそのグループでAI Bot・カスタムスタンプが利用可能になります。システム管理画面 → 「グループ管理」タブから変更できます。
8. Cloudflare Tunnelを使ったインターネット公開
ローカルDockerで起動したLayChatを、ポート開放なしでインターネット上に公開する手順を説明します。 Cloudflare Tunnelを使うことで、固定IPなし・ルーター設定不要でHTTPS対応の公開URLが取得できます。
Standard版・Enterprise版の両方で利用できます。
Cloudflare Tunnelとは
Cloudflare Tunnelは、サーバーから Cloudflare のネットワークに対してアウトバウンド接続を確立することで、ポートを開放せずにサーバーを外部公開できるサービスです。cloudflared という軽量エージェントをDockerコンテナとして起動するだけで利用できます。
- ✅ ポートフォワード設定不要(ルーター操作不要)
- ✅ 固定グローバルIPアドレス不要
- ✅ HTTPS が自動で有効になる(SSL証明書自動発行)
- ✅ 無料プランで十分利用可能
- ⚠️ 独自ドメインが必要(Cloudflareで管理するドメイン)
事前準備チェックリスト
ステップ1:Cloudflareアカウントとドメインの準備
Cloudflareアカウントの作成
- https://cloudflare.com にアクセスし、「Sign Up」からアカウントを作成
- メール認証を完了させる
ドメインの追加
Cloudflareでドメインを管理するには、以下のいずれかの方法を使います:
- 方法A:Cloudflareで新規取得(推奨)
Cloudflare ダッシュボード → 「Domain Registration」→「Register Domains」からドメインを購入。取得と同時にCloudflare管理下に入るため、追加設定不要。 - 方法B:他レジストラのドメインを追加
ダッシュボード → 「Add a Site」からドメインを入力 → ネームサーバーを Cloudflare のものに変更(レジストラ側の設定が必要)
ステップ2:Tunnelの作成とトークン取得
- Cloudflare ダッシュボードにログイン
- 左サイドバーの「Zero Trust」をクリック
- 「Networks」→「Tunnels」を開く
- 「+ Create a tunnel」をクリック
- 「Cloudflared」を選択して「Next」
- Tunnel名を入力(例:
laychat-standard)して「Save tunnel」 - 「Install connector」画面で Docker を選択すると、以下のようなコマンドが表示されます
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token eyJhI...(この長い文字列がTUNNEL_TOKEN)
--token の後ろに続く長い文字列(eyJhI...で始まる)が TUNNEL_TOKEN です。この値をコピーしておいてください。
TUNNEL_TOKENは.envファイルに保存し、Gitや他者に共有しないよう注意してください。
ステップ3:ルートの設定(重要)
Tunnelを通じてどのドメインへのアクセスをLayChatに転送するか設定します。
ルートドメイン(例:your-domain.com)と wwwサブドメイン(例:www.your-domain.com)の 2つ を登録する必要があります。
例えば
your-domain.com だけ登録した場合、www.your-domain.com でアクセスするとエラーになります。必ず両方登録してください。
ルート1:ルートドメイン
- Tunnel詳細ページ → 「Public Hostname」タブ → 「Add a public hostname」
- 以下のように設定:
- Subdomain:空白(何も入力しない)
- Domain:
your-domain.com(取得したドメイン) - Path:空白
- Service Type:
HTTP - URL:
app:8080(Dockerコンテナ名とポート番号)
- 「Save hostname」をクリック
ルート2:wwwサブドメイン
- 同じ画面で再度「Add a public hostname」
- 以下のように設定:
- Subdomain:
www - Domain:
your-domain.com - Path:空白
- Service Type:
HTTP - URL:
app:8080
- Subdomain:
- 「Save hostname」をクリック
Dockerコンテナ内のLayChatアプリは
app:8080 で動作しています(docker-compose.yml の PORT=8080 に対応)。Tunnel から app:8080 を指定することで、LayChatに転送されます。ホストOSのポートは関係ありません。
ステップ4:DNS設定の確認
Public Hostnameを保存すると、Cloudflare DNSに自動的にCNAMEレコードが作成されます。
ただし www サブドメインが自動作成されない場合は手動で追加が必要です。
- Cloudflare ダッシュボード → 対象ドメイン → 「DNS」→「Records」
- 以下のレコードが存在することを確認:
- CNAME:
your-domain.com(または@)→ Tunnel ID のアドレス(Proxied) - CNAME:
www→your-domain.com(Proxied)
- CNAME:
- wwwのレコードがない場合は「+ Add record」から手動追加:
- Type:
CNAME - Name:
www - Target:
your-domain.com - Proxy status: Proxied(オレンジ色の雲アイコン)
- Type:
ステップ5:TUNNEL_TOKENを.envに設定
ステップ2でコピーしたTUNNEL_TOKENを .env.standard(またはEnterprise版の場合 .env.enterprise)に設定します。
# Cloudflare Tunnel設定
# ⚠️ Tunnelルートは「サブドメイン空白(your-domain.com)」と「www」の
# 2つを登録しないと、どちらかのURLでアクセスできなくなります
TUNNEL_TOKEN=eyJhI...(コピーしたトークン)
# アプリURL(OAuth利用時に必要)
APP_URL=https://your-domain.com
ステップ6:コンテナの起動(または再起動)
TUNNEL_TOKENを設定した後、コンテナを起動(または再起動)します。docker-compose.standard.yml には cloudflared サービスが含まれており、自動的にTunnel接続が確立されます。
# 初回起動の場合(ビルドから)
docker-compose -f configs/docker-compose.standard.yml --env-file configs/.env.standard up -d --build
# すでに起動中のコンテナを再起動する場合
docker-compose -f configs/docker-compose.standard.yml --env-file configs/.env.standard up -d --force-recreate
ステップ7:動作確認
Tunnelの接続確認
# cloudflaredのログを確認(Registered tunnel connectionと表示されれば成功)
docker logs laychat-standard-cloudflared --tail=20
ログに Registered tunnel connection が表示されれば、Tunnel接続は成功しています。
{"level":"info","message":"Registered tunnel connection","connIndex":0,...}
{"level":"info","message":"Registered tunnel connection","connIndex":1,...}
{"level":"info","message":"Registered tunnel connection","connIndex":2,...}
{"level":"info","message":"Registered tunnel connection","connIndex":3,...}
ブラウザからアクセス
https://your-domain.comにアクセスしてLayChatのログイン画面が表示されれば成功ですhttps://www.your-domain.comでも同様にアクセスできることを確認してください
ドメインのDNS設定変更後、反映まで数分〜最大数時間かかる場合があります。アクセスできない場合は少し待ってから再試行してください。
dig your-domain.com コマンドでDNSの浸透状況を確認できます。
よくあるトラブル
Service URL を https://app:8080 に設定している場合に発生します。LayChatコンテナ内はHTTP通信のため、http://app:8080(またはルート設定で HTTP を選択)に変更してください。
TUNNEL_TOKENが正しく設定されていないか、コンテナが起動していない可能性があります。
docker ps でcloudflaredコンテナが起動しているか確認し、docker logs laychat-standard-cloudflared でエラーログを確認してください。
Tunnel ルートに
www サブドメイン分が登録されていないか、DNS の CNAME レコード(www → your-domain.com)が追加されていない可能性があります。ステップ3・4を再確認してください。
9. AWS Elastic Beanstalkへのデプロイ
Standard版・Enterprise版を AWS Elastic Beanstalk にデプロイする手順です。AWSアカウントおよびAWS CLIの操作知識が必要です。ローカルDockerで動作確認済みの方を対象としています。
EB CLIのインストール
# pipを使ってEB CLIをインストール
pip install awsebcli
# バージョン確認
eb --version
アプリケーションの初期化
# Ver1.2.0ディレクトリで初期化
cd /path/to/Ver1.2.0
eb init
# インタラクティブな質問への回答例:
# Region: ap-northeast-1 (アジアパシフィック・東京)
# Application name: laychat
# Platform: Docker
# Platform branch: Docker running on 64bit Amazon Linux 2023
.ebextensions の設定(タイムアウト)
.ebextensions/elb-timeout.config により、大容量ファイル転送中の切断を防ぐためALBのタイムアウトが300秒に設定されます。
option_settings:
aws:elbv2:loadbalancer:
IdleTimeout: 300
Nginx WebSocket設定
.platform/nginx/conf.d/ 以下の設定ファイルがElastic Beanstalkの本番Nginxに自動適用されます。
# Socket.io WebSocket プロキシ設定
location /socket.io/ {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
client_max_body_size 200m;
}
# ストリーミングファイルアップロード
location /api/upload-stream {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_request_buffering off;
proxy_buffering off;
client_max_body_size 200m;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
環境の作成とデプロイ
# 新しい環境を作成(初回)
eb create laychat-production \
--platform "Docker running on 64bit Amazon Linux 2023" \
--region ap-northeast-1
# デプロイ(2回目以降)
eb deploy laychat-production
# ステータス確認
eb status
# ログ確認
eb logs
環境変数の設定(EBコンソール)
AWSコンソール → Elastic Beanstalk → 環境 → 「設定」→「ソフトウェア」→「環境プロパティ」から環境変数を設定します。
.envファイルをGit等のリポジトリにコミットしないでください。
MONGODB_URIに接続文字列を設定してください。
10. Herokuへのデプロイ
Standard版・Enterprise版を Heroku にデプロイする手順です。Herokuアカウントおよびheroku CLIの操作知識が必要です。ローカルDockerで動作確認済みの方を対象としています。
Heroku CLIのインストール
# macOS (Homebrew)
brew tap heroku/brew && brew install heroku
# npm経由
npm install -g heroku
# ログイン
heroku login
アプリの作成
# Herokuアプリ作成
heroku create your-laychat-app
# Gitリモートの確認
git remote -v
Procfileの確認
Herokuはルートディレクトリの Procfile を読み込んで起動コマンドを決定します。LayChatのProcfileは以下の内容です。
web: node --max-old-space-size=4096 server.js
--max-old-space-size=4096 により、Node.jsのヒープメモリ上限を4GBに設定しています。大容量ファイルのアップロード処理やBase64変換時のメモリ不足を防ぎます。
環境変数の設定
# 環境変数を一括設定
heroku config:set \
EDITION=standard \
STORAGE_TYPE=s3 \
AWS_ACCESS_KEY_ID=AKIAxxxxxxxxxx \
AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxx \
S3_BUCKET=my-laychat-uploads \
GEMINI_API_KEY=AIzaSy... \
VAPID_PUBLIC_KEY="BNZ8g7t..." \
VAPID_PRIVATE_KEY="xK3j9m..." \
VAPID_EMAIL="mailto:admin@example.com" \
MONGODB_URI="mongodb+srv://user:pass@cluster.mongodb.net/laychat" \
--app your-laychat-app
# 設定の確認
heroku config --app your-laychat-app
MongoDB Atlas連携
HerokuではMongoDBをコンテナで起動できないため、MongoDB Atlas(無料Tier M0利用可)と連携します。
- MongoDB Atlasでアカウント作成・Clusterを作成(M0 Free Tierで可)
- 「Database Access」でユーザーを作成(username / password を設定)
- 「Network Access」でHerokuのIPを許可(または「Allow Access from Anywhere」を設定)
-
接続文字列を取得して
MONGODB_URIに設定:接続文字列の例mongodb+srv://laychat-user:password@cluster0.xxxxx.mongodb.net/laychat?retryWrites=true&w=majority
デプロイコマンド
# Gitにコミット後、Herokuへプッシュ
git add .
git commit -m "Deploy LayChat"
git push heroku main
# デプロイ後のログ確認
heroku logs --tail --app your-laychat-app
# アプリを開く
heroku open --app your-laychat-app
11. Nginxリバースプロキシ設定(VPS等)
VPSやオンプレミスサーバーでNginxをリバースプロキシとして使用する場合の設定です。
Nginxのインストール
sudo apt-get update
sudo apt-get install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
WebSocket対応 Nginx設定ファイル
以下のサンプル設定を /etc/nginx/sites-available/laychat として保存してください。
upstream laychat_app {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name your-domain.com;
# Let's Encryptを使う場合、certbotが自動でHTTPSリダイレクトを追加
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name your-domain.com;
# SSL証明書(Let's Encryptの場合)
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# 大容量ファイルアップロード対応
client_max_body_size 200m;
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
proxy_send_timeout 300s;
# 通常のHTTPリクエスト
location / {
proxy_pass http://laychat_app;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Socket.IO WebSocket接続(必須)
location /socket.io/ {
proxy_pass http://laychat_app;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
client_max_body_size 200m;
}
# ストリーミングアップロード(バッファリング無効化)
location /api/upload-stream {
proxy_pass http://laychat_app;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_request_buffering off;
proxy_buffering off;
client_max_body_size 200m;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
設定の有効化
# シンボリックリンクを作成して有効化
sudo ln -s /etc/nginx/sites-available/laychat /etc/nginx/sites-enabled/
# デフォルト設定を無効化(必要に応じて)
sudo rm /etc/nginx/sites-enabled/default
# 設定ファイルの文法チェック
sudo nginx -t
# Nginxをリロード
sudo systemctl reload nginx
SSL/TLS設定(Let's Encrypt)
# Certbotのインストール
sudo apt-get install -y certbot python3-certbot-nginx
# SSL証明書の取得と自動設定
sudo certbot --nginx -d your-domain.com
# 自動更新の確認
sudo certbot renew --dry-run
sudo certbot renew --dry-run でエラーがなければ自動更新が機能しています。
12. バックアップ・メンテナンス
MongoDBのバックアップ(mongodump)
# Dockerコンテナ内でmongodumpを実行(Free版の例)
docker exec laychat-free-mongo \
mongodump --db laychat --out /tmp/backup
# バックアップをホストにコピー
docker cp laychat-free-mongo:/tmp/backup ./backup-$(date +%Y%m%d)
# 圧縮してアーカイブ
tar -czf backup-$(date +%Y%m%d).tar.gz ./backup-$(date +%Y%m%d)
rm -rf ./backup-$(date +%Y%m%d)
# リストア時
docker cp ./backup-20260101 laychat-free-mongo:/tmp/restore
docker exec laychat-free-mongo \
mongorestore --db laychat /tmp/restore/laychat
定期バックアップの設定(cronジョブ)
# crontabの編集
crontab -e
# 毎日午前2時にバックアップ(以下を追加)
0 2 * * * docker exec laychat-free-mongo mongodump --db laychat --archive=/tmp/laychat-$(date +\%Y\%m\%d).gz --gzip && docker cp laychat-free-mongo:/tmp/laychat-$(date +\%Y\%m\%d).gz /var/backups/laychat/
ローカルストレージのバックアップ
Free版でローカルストレージを使用している場合、uploads/ ディレクトリをバックアップします。
# uploadsディレクトリを圧縮バックアップ
tar -czf uploads-backup-$(date +%Y%m%d).tar.gz /path/to/laychat/uploads/
# rsyncで別サーバーに同期
rsync -avz /path/to/laychat/uploads/ user@backup-server:/backup/laychat-uploads/
システム管理画面からのメンテナンス
システム管理者はブラウザからメンテナンス操作を実行できます。
管理画面 → 「メンテナンス」タブ から以下の操作・確認が可能です:
| 項目 | 説明 |
|---|---|
| 💾 ドライブ使用量 | サーバーのディスク使用率・使用量(GB)・空き容量・合計容量をプログレスバーで表示。使用率70%以上でオレンジ、90%以上で赤に変化します。 |
| 🧹 孤児データのクリーンアップ | 削除済みグループに残っているメッセージなどを消去しDBの容量を削減します。週1回程度の実行を推奨します。 |
| ⚠️ 古いメッセージの一括削除 | 1年以上前のすべてのメッセージを一括削除。データベースの肥大化を防ぎます。この操作は取り消せません。 |
Dockerコンテナの更新方法
ソースコードを更新した後、以下の手順でコンテナを更新します。
# ソースコードを更新後、コンテナを再ビルド・再起動
docker compose -f configs/docker-compose.free.yml up -d --build
# 古いDockerイメージのクリーンアップ
docker image prune -f
13. トラブルシューティング
ログの確認方法
# アプリケーションログ(リアルタイム)
docker compose -f configs/docker-compose.free.yml logs -f
# アプリコンテナのみ
docker compose -f configs/docker-compose.free.yml logs -f app
# MongoDBコンテナのログ
docker compose -f configs/docker-compose.free.yml logs -f mongo
# 直近100行を表示
docker compose -f configs/docker-compose.free.yml logs --tail=100
起動しない場合のチェックリスト
| 症状 | 原因 | 対処法 |
|---|---|---|
| コンテナがすぐに停止する | 環境変数の設定ミス、必須項目の未入力 | docker logs laychat-free-app でエラーを確認 |
bind: address already in use |
ポート8080が他のプロセスに使用中 | 下記「ポート競合の解決」を参照 |
dockerfileのビルドエラー |
Dockerfileの問題、ネットワーク接続エラー | docker compose build --no-cache で再試行 |
| MongoDBに接続できない | MongoDBコンテナの起動前にアプリが起動 | docker compose restart app で再起動 |
| VAPID関連のエラー | VAPIDキーの形式が不正 | web-push generate-vapid-keys で再生成 |
WebSocket接続エラー
チャット画面に「接続中...」が表示され続ける場合は、WebSocket接続が確立できていません。
- Nginxを使用している場合、
Upgrade/Connectionヘッダーが設定されているか確認 - AWS ALBを使用している場合、WebSocketプロトコルを許可するリスナー設定が必要
- ブラウザの開発者ツール → ネットワーク → WS タブでエラー内容を確認
- HTTPS環境では
ws://ではなくwss://が使用されているか確認
ファイルアップロードエラー
| エラー内容 | 原因 | 対処法 |
|---|---|---|
413 Request Entity Too Large |
Nginxの client_max_body_size 超過 |
Nginx設定で client_max_body_size 200m; を確認 |
| S3アップロード失敗 | AWSキーの設定ミス、バケットポリシー不備 | IAMポリシーとバケットポリシーを確認 |
| ローカルストレージに保存できない | uploads/ ディレクトリの書き込み権限なし |
chmod 755 uploads/ で権限を付与 |
MongoDB接続エラー
# MongoDBコンテナの状態確認
docker ps | grep mongo
# MongoDBコンテナに接続してテスト
docker exec -it laychat-free-mongo mongosh --eval "db.adminCommand('ping')"
# アプリを再起動(MongoDB起動後に試す)
docker compose -f configs/docker-compose.free.yml restart app
ポート競合の解決
# ポート8080を使用しているプロセスを確認
sudo lsof -i :8080
# 別のポートを使う場合は docker-compose.*.yml の ports を変更
# 例: "3000:8080" に変更して http://localhost:3000 でアクセス
# または既存のコンテナが残っている場合は削除
docker rm -f laychat-free-app
docker compose -f configs/docker-compose.free.yml up -d
14. 付録
環境変数一覧(全エディション)
| 変数名 | Free | Standard | Enterprise | 説明 |
|---|---|---|---|---|
EDITION |
✅ | ✅ | ✅ | free / standard / enterprise |
STORAGE_TYPE |
✅ | ✅ | ✅ | local / s3 |
MONGODB_URI |
✅ | ✅ | ✅ | MongoDB接続文字列(Docker時は自動設定) |
PORT |
✅ | ✅ | ✅ | サーバーポート(デフォルト: 3000、Docker: 8080) |
VAPID_PUBLIC_KEY |
✅ | ✅ | ✅ | Web Push通知用公開鍵 |
VAPID_PRIVATE_KEY |
✅ | ✅ | ✅ | Web Push通知用秘密鍵 |
VAPID_EMAIL |
✅ | ✅ | ✅ | Web Push連絡先(mailto:形式) |
APP_URL |
✅ | ✅ | ✅ | アプリのURL(OAuth使用時に必要) |
SESSION_SECRET |
✅ | ✅ | ✅ | セッション署名用シークレット(OAuth使用時に必要) |
GOOGLE_CLIENT_ID |
任意 | 任意 | 任意 | Google OAuth クライアントID |
GOOGLE_CLIENT_SECRET |
任意 | 任意 | 任意 | Google OAuth クライアントシークレット |
MICROSOFT_CLIENT_ID |
— | 任意 | — | Microsoft OAuth クライアントID |
MICROSOFT_CLIENT_SECRET |
— | 任意 | — | Microsoft OAuth クライアントシークレット |
AWS_ACCESS_KEY_ID |
— | ✅ | ✅ | AWS S3認証キーID |
AWS_SECRET_ACCESS_KEY |
— | ✅ | ✅ | AWS S3認証シークレットキー |
S3_BUCKET |
— | ✅ | ✅ | S3バケット名 |
GEMINI_API_KEY |
— | ✅ | ✅ | Google Gemini AI API キー |
TURN_URL |
— | 任意 | 任意 | TURNサーバーURL(ビデオ通話) |
TURN_USERNAME |
— | 任意 | 任意 | TURN認証ユーザー名 |
TURN_CREDENTIAL |
— | 任意 | 任意 | TURN認証パスワード |
LAYCHAT_LICENSE_KEY |
— | ✅ | ✅ | Standard/Enterprise版ライセンスキー(LAYCHAT-STD-XXXXXXXX / LAYCHAT-ENT-XXXXXXXX) |
LAYCHAT_MASTER_URL |
— | ✅ | ✅ | ライセンス検証先のサーバーURL(内部管理用) |
よく使うDockerコマンド一覧
| 操作 | コマンド(Free版の例) |
|---|---|
| 起動(バックグラウンド) | docker compose -f configs/docker-compose.free.yml up -d |
| 再ビルドして起動 | docker compose -f configs/docker-compose.free.yml up -d --build |
| 停止 | docker compose -f configs/docker-compose.free.yml down |
| 再起動 | docker compose -f configs/docker-compose.free.yml restart |
| ログ確認(リアルタイム) | docker compose -f configs/docker-compose.free.yml logs -f |
| コンテナ一覧 | docker ps |
| コンテナに接続 | docker exec -it laychat-free-app sh |
| MongoDBに接続 | docker exec -it laychat-free-mongo mongosh |
| ボリューム一覧 | docker volume ls |
| 不要イメージ削除 | docker image prune -f |
| 全停止+ボリューム削除(注意) | docker compose -f configs/docker-compose.free.yml down -v |
ファイル構成一覧
| ファイル/ディレクトリ | 説明 |
|---|---|
server.js | バックエンド(Express + Socket.IO)約1,157行 |
main.js | フロントエンドJS 約2,462行・114関数 |
index.html | フロントエンドHTML(約52KB) |
style.css | スタイルシート(約261行) |
sw.js | Service Worker(PWA対応) |
manifest.json | PWAマニフェスト |
dockerfile | マルチステージビルド(難読化含む) |
Procfile | Heroku起動コマンド(node --max-old-space-size=4096) |
package.json | 依存関係定義 |
configs/.env.free | Free版環境設定 |
configs/.env.standard | Standard版環境設定 |
configs/.env.enterprise | Enterprise版環境設定 |
configs/docker-compose.free.yml | Free版 Docker Compose設定 |
configs/docker-compose.standard.yml | Standard版 Docker Compose設定 |
configs/docker-compose.enterprise.yml | Enterprise版 Docker Compose設定 |
.ebextensions/elb-timeout.config | AWS ELB タイムアウト設定(300秒) |
.platform/nginx/conf.d/upload.conf | Nginxファイルアップロード設定 |
.platform/nginx/conf.d/elasticbeanstalk/websocket.conf | Nginx WebSocket設定 |
uploads/ | ローカルストレージ用ディレクトリ(Free版) |
Documents/ | マニュアル類 |