# ローカル運用のデモンストレーション
このセクションでは、話雲を使用したローカル(オンプレミス)運用のデモンストレーションをご紹介します。
# ローカル環境の構築
話雲をローカル運用するためには以下の内容にて適宜設定を行う必要があります。
- docker and docker-compose (インストール等の記載は省きます今回の例ではwsl環境にて構築致します。)
- sqlite3用のデータベースファイルを作成
- .env等の環境変数を記載するテキストファイル
- ファイルを保存する為のクラウド設定(今回の例ではminioを使用します)
- メールを送信する為のSMTP設定(今回の例ではmailcatcherを使用します。)
- データベースの初期設定
- 一番初めにログインするユーザーの設定
- 外部に公開する場合は固定ドメイン、SSLの設定など(今回は簡易的にngrokを使用して疑似的に話雲の公開設定を行います)
# ファイル構成
├── database
│ └── main.db # データベースファイル名はmain.dbとして下さい
├── docker-compose.yml # docker-composeで読み込むための構成ファイル
├── minio # アップロードしたファイルを保存する為のフォルダ―
│ └── data
└── .env # 環境変数用のファイル
# docker-compose.ymlのファイル内容
version: '3.9'
services:
wakumo:
image: block7thsoftware/wakumo:latest
container_name: wakumo
command: node ./.output/server/index.mjs
volumes:
# データベースファイル名はmain.dbとして下さい
- ./database/main.db:/workspace/prisma/main.db
# minioで読むための設定ファイルです。設定情報を環境変数に含まずaws cliコマンドでminio用の設定情報を作成し、その情報を話雲に読み取らせています。
- ~/.aws/credentials:/root/.aws/credentials
- ~/.aws/config:/root/.aws/config
# 環境変数用ファイルを指定しています。
env_file: ./.env
ports:
# ローカルで使用するポートをしています。特に3000ポートがふさがっていなければこのままにして下さい。
- "3000:3000"
# web socketで使用するポート番号を使用します。環境によって変わる可能性もありますので、websocketで通信出来ない場合は変更してください。
- "24678:24678"
# SMTPサーバのイメージを指定しています。http://localhost:1080で送信メール内容を確認出来ます。(実際にはメールは送信はせずブラウザ上で確認します。)
email:
container_name: wakumo-email
image: schickling/mailcatcher
ports:
- "1080:1080"
- "1025:1025"
# ファイルを保存するための疑似クラウドファイルサーバのイメージです。今回は設定情報を環境変数に含まずaws cliコマンドでminio用の設定情報を作成し、その情報を話雲に読み取らせています。
minio:
image: quay.io/minio/minio:latest
container_name: wakumo-minio
environment:
MINIO_ROOT_USER: root
MINIO_ROOT_PASSWORD: password
command: server --console-address ":9001" /data
ports:
- 9000:9000
- 9001:9001
volumes:
- ./minio/data:/data
# sqlite3用のデータベースファイル作成
database/main.dbにデータベース用のファイルを作成します。
このデータベースファイルはwakumoからマウントされる設定をdocker-compose.ymlに記載しています。
# 環境変数用のファイルを作成
.env を作成します内容は以下の通りです。
NUXT_STORAGE_STYLE=S3
# プロファイル設定は各自で行ってください。
NUXT_AWS_PROFILE=minio
NUXT_S3_ENDPOINT=http://localhost:9000
NUXT_S3_DOCKER_ENDPOINT=http://minio:9000
NUXT_S3_BUCKET_NAME=wakumo-local
NUXT_FORCE_PATH_STYLE=true
DOMAIN=http://localhost:3000
AUTH_ORIGIN=http://localhost:3000
NUXT_JWT_SECRET=secret-secret
NUXT_PUBLIC_TAKE_BY=5
NUXT_PUBLIC_APP_NAME=wakumo
NUXT_MAIL_HOST=email
NUXT_MAIL_PORT=1025
NUXT_MAIL_SECURE=false
NUXT_MAIL_FROM=test@test.test
NUXT_JWT_SECRET=secret
NUXT_PUBLIC_FILE_LIMIT_SIZE=1048576
# minioの設定
こちらを参考にawsの設定を行います。
プロファイルを設定したらNUXT_AWS_PROFILE
には設定したプロファイル名を環境変数に設定してください。
ファイルを保存するバケットが必要になりますので、まずはバケットを作ります。
docker-compose up minio
dockerが立ち上がったら
http://localhost:9001/login
にて管理画面にアクセスします。
username
にMINIO_ROOT_USER
に設定した情報(今回はroot)パスワードにMINIO_ROOT_PASSWORD
に設定した情報(今回はpassword)を入力してログインします。
左リストのBucket
を選択して、Create Bucket
にて
バケットを作成します。バケット名は.envに記載したNUXT_S3_BUCKET_NAME
に書いてある値を登録します。この例では(wakumo-local)を指定します。
バケットの作成が終わったらdockerを停止します。
docker-compose down -v
# SMTPの設定
今回の例では内部で疑似的にSMTPサーバを構築していますが、外部のSMTPサーバを使用する場合は.envファイルの以下の情報を設定します。
# メールサーバ名
NUXT_MAIL_HOST=email
# メールポート名
NUXT_MAIL_PORT=1025
# セキュア設定
NUXT_MAIL_SECURE=false
# 送信元メールアドレス
NUXT_MAIL_FROM=test@test.test
# データベースの初期設定
sqliteのファイルを作った直後はデータベースが存在しない為、以下のコマンドでデータベースを作成します。
docker-compose run wakumo npx prisma migrate deploy
以下の表示されたらy
を押します。
Ok to proceed? (y) y
以下の様に表示されれば成功です。
Prisma schema loaded from prisma/schema.prisma
Datasource "db": SQLite database "main.db" at "file:/workspace/prisma/main.db"
13 migrations found in prisma/migrations
Applying migration `20230915001445_create`
Applying migration `20230929050143_message`
Applying migration `20230929071948_thread_user`
Applying migration `20231004024036_create_file`
Applying migration `20231013034636_last_read_date`
Applying migration `20231016050046_add_thread_type`
Applying migration `20231023055300_add_comment`
Applying migration `20231024072605_is_invited`
Applying migration `20231025015459_user_status`
Applying migration `20231025071756_delete_is_invited`
Applying migration `20231026013903_create_message_reaction`
Applying migration `20231026015303_create_messagereactionuser`
Applying migration `20231026054244_unique_reaction_user`
The following migrations have been applied:
migrations/
└─ 20230915001445_create/
└─ migration.sql
└─ 20230929050143_message/
└─ migration.sql
└─ 20230929071948_thread_user/
└─ migration.sql
└─ 20231004024036_create_file/
└─ migration.sql
└─ 20231013034636_last_read_date/
└─ migration.sql
└─ 20231016050046_add_thread_type/
└─ migration.sql
└─ 20231023055300_add_comment/
└─ migration.sql
└─ 20231024072605_is_invited/
└─ migration.sql
└─ 20231025015459_user_status/
└─ migration.sql
└─ 20231025071756_delete_is_invited/
└─ migration.sql
└─ 20231026013903_create_message_reaction/
└─ migration.sql
└─ 20231026015303_create_messagereactionuser/
└─ migration.sql
└─ 20231026054244_unique_reaction_user/
└─ migration.sql