Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

VoiceNoteLM デプロイシステム構成図

全体構成

外部サービス連携

セキュリティグループ構成

データフロー

1. ユーザー認証フロー

2. 音声文字起こしフロー

コンポーネント詳細

Frontend (Vercel)

項目
フレームワークReact Native Web / Expo
ホスティングVercel
ドメインvoicenotelm.app
SSLVercel自動SSL
ビルド自動(Git push時)

環境変数:

変数名
EXPO_PUBLIC_GOOGLE_WEB_CLIENT_IDGoogle OAuth Client ID
EXPO_PUBLIC_API_BASE_URLhttps://api.voicenotelm.app
EXPO_PUBLIC_WS_BASE_URLwss://api.voicenotelm.app

Backend (AWS EC2)

項目
インスタンスタイプt3.micro
AMIAmazon Linux 2023
JavaAmazon Corretto 21
フレームワークSpring Boot (Kotlin)
パス/opt/voicenotelm/
サービス管理systemd (voicenotelm)

Database (AWS RDS)

項目
エンジンPostgreSQL 16
インスタンスクラスdb.t4g.micro
ストレージ20 GiB gp2
自動バックアップ無効
パブリックアクセスなし
データベース名voicenotelm

Nginx設定

server {
    listen 80;
    server_name api.voicenotelm.app;

    location / {
        proxy_pass http://localhost:8080;
        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;

        # WebSocket対応
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
    }
}

DNS設定 (Cloudflare)

レコードタイプ名前Proxy
APIAapiEC2 Elastic IPDNS only (灰色)
FrontendCNAME@cname.vercel-dns.comDNS only (灰色)
FrontendCNAMEwwwcname.vercel-dns.comDNS only (灰色)

想定コスト (月額)

サービス費用
EC2 t3.micro無料枠(750時間/月)
RDS db.t4g.micro無料枠(750時間/月)
Elastic IP無料(EC2起動中)
Vercel無料(Hobby)
Cloudflare無料
合計$0〜5

運用コマンド

EC2操作

# SSH接続
ssh -i <your-key.pem> ec2-user@<Elastic IP>

# アプリケーション再起動
sudo systemctl restart voicenotelm

# ステータス確認
sudo systemctl status voicenotelm

# ログ確認
sudo journalctl -u voicenotelm -n 50 --no-pager

# メモリ確認
free -h

RDS接続

# EC2経由でRDSに接続
psql -h <RDSエンドポイント> -U <username> -d <database>

デプロイ手順

# ローカルでビルド
cd voicebooklm-backend
./gradlew bootJar

# EC2に転送
scp -i <your-key.pem> build/libs/*.jar ec2-user@<IP>:/path/to/app.jar

# EC2で再起動
sudo systemctl restart voicenotelm