プロジェクト

全般

プロフィール

バグ #411

未完了

Phase 5: search.call2arm.com 本番デプロイ + VPS-ROOT完全統合

Redmine Admin さんが12日前に追加. 12日前に更新.

ステータス:
新規
優先度:
通常
担当者:
-
開始日:
2025-06-09
期日:
進捗率:

0%

予定工数:

説明

🎯 目的

search.call2arm.com サービスの本番環境デプロイと VPS-ROOT インフラとの完全統合

📋 前提条件

  • ✅ チケット407-408: Node.js API + projects.jsonインポート完了
  • ✅ チケット409: conversations.json大容量インポート完了
  • ✅ チケット410: React WebUI統合完了
  • ✅ VPS-ROOT proxy-network 環境存在

🔧 実装内容

Phase 5.1: Nginx SNI統合

リバースプロキシ設定

  • ドメイン: https://search.call2arm.com
  • SSL証明書: Let's Encrypt ワイルドカード証明書活用
  • プロキシ設定: コンテナ名ベースルーティング

設定ファイル統合

# /root/nginx-proxy/conf.d/search.call2arm.com.conf
server {
    listen 443 ssl http2;
    server_name search.call2arm.com;
    
    # React SPA
    location / {
        proxy_pass http://claude-search-web:80;
        proxy_set_header Host $host;
    }
    
    # API エンドポイント
    location /api/v2/ {
        proxy_pass http://claude-search-api:8001/api/v2/;
        client_max_body_size 500M;
    }
}

Phase 5.2: Docker Compose統合

VPS-ROOT統合設定

  • ネットワーク: proxy-network参加
  • ボリューム: 永続化データ管理
  • ヘルスチェック: サービス監視機能
  • 自動再起動: unless-stopped設定

本番用Docker構成

# docker-compose-production.yml
services:
  claude-search-api:
    build:
      context: .
      dockerfile: Dockerfile.node
    container_name: claude-search-api
    restart: unless-stopped
    environment:
      - NODE_ENV=production
      - DATABASE_URL=${DATABASE_URL}
    networks:
      - claude-search-network
      - proxy-network
    
  claude-search-web:
    build:
      context: react-app
      dockerfile: Dockerfile
    container_name: claude-search-web
    restart: unless-stopped
    networks:
      - proxy-network

Phase 5.3: 監視・ログ・バックアップ

アプリケーション監視

  • ヘルスチェック: 自動サービス監視
  • メトリクス: CPU・メモリ・ディスク使用量
  • アラート: サービス停止時の通知

ログ管理

  • アプリケーションログ: 構造化ログ出力
  • アクセスログ: Nginx統合ログ
  • エラーログ: 詳細エラートラッキング
  • ログローテーション: 自動ログファイル管理

データバックアップ

  • PostgreSQL: 日次自動バックアップ
  • ファイルデータ: プロジェクト・会話データ
  • 設定ファイル: システム設定バックアップ
  • 復旧手順: 災害復旧プロシージャ

Phase 5.4: セキュリティ強化

アクセス制御

  • HTTPS強制: HTTP → HTTPS リダイレクト
  • セキュリティヘッダー: CSP, HSTS, X-Frame-Options
  • レート制限: API呼び出し制限
  • IPフィルタリング: 必要に応じたアクセス制限

認証・認可

  • API認証: Claude API Key検証
  • セッション管理: 安全なセッション処理
  • データ暗号化: 機密データの暗号化保存

🚀 デプロイメント手順

段階的デプロイ

  1. ステージング: 開発環境でのテスト
  2. Blue-Green: 無停止デプロイ
  3. カナリア: 段階的リリース
  4. 本番: 完全移行

自動化スクリプト

#!/bin/bash
# deploy-search-service.sh
echo "🚀 search.call2arm.com デプロイ開始..."

# Docker イメージビルド
docker-compose -f docker-compose-production.yml build

# サービス更新 (無停止)
docker-compose -f docker-compose-production.yml up -d

# ヘルスチェック
curl -f https://search.call2arm.com/health

echo "✅ デプロイ完了!"

📊 パフォーマンス最適化

キャッシング戦略

  • Nginx: 静的ファイルキャッシング
  • Redis: API レスポンスキャッシング
  • Browser: クライアントサイドキャッシング

データベース最適化

  • インデックス: 検索クエリ最適化
  • 接続プール: 効率的DB接続管理
  • クエリ最適化: スロークエリ改善

🎯 成功指標

  • https://search.call2arm.com 正常アクセス
  • SSL証明書正常動作
  • API・WebUI完全連携動作
  • ヘルスチェック・監視動作
  • バックアップ・復旧手順確認
  • パフォーマンス目標達成 (< 2秒応答)

⚠️ 運用考慮事項

  • 稼働率: 99.5% 以上
  • データ保持: 無期限 (バックアップあり)
  • スケーリング: 将来的な負荷増加対応
  • メンテナンス: 定期メンテナンス手順

🔗 関連チケット

  • #407-410 (前段階): API・WebUI・データインポート
  • 未来のチケット: リモートMCP化、Claude Desktop連携

Redmine Admin さんが12日前に更新

🎯 Phase 5実装開始 (2025-06-09 15:42)

✅ Phase 4完了による前提条件達成

  • チケット#413: 466MB大容量ストリーミング処理完成
  • 重複キー制約: 完全解決済み
  • API基盤: Node.js + TypeScript完全稼働
  • データベース: 1976件の会話データ保存済み

🚀 Phase 5詳細実装計画

新規作成チケット

  • #415: Phase 5総合計画 (親チケット)
  • #416: React WebUI完全統合実装
  • #417: MeiliSearch検索エンジン統合
  • #418: Phase 6 リモートMCP化計画

実装優先順位

  1. #416: React インポートUI・ダッシュボード
  2. #417: 高度検索・分析機能
  3. #415: 本番デプロイ・統合テスト
  4. #418: 長期 Claude Desktop統合

📊 現在の技術基盤状況

  • API Server: claude-search-api healthy稼働
  • Database: PostgreSQL 完全動作
  • 大容量処理: 466MB/15秒 実証済み
  • エラー処理: 重複制約・復旧機能完備

🎯 Phase 5期待成果

  • React WebUI完全統合
  • 高速検索機能 (< 100ms)
  • 本番デプロイ準備完了
  • Claude Desktop統合基盤構築

Phase 4の大成功を受けて、Phase 5実装開始の準備が整いました!

他の形式にエクスポート: Atom PDF