プロジェクト

全般

プロフィール

サポート #264

未完了

call2arm.com インフラ設定マスター構成表: ドメイン・ルーティング・SSL完全ガイド

Redmine Admin さんが3日前に追加.

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

0%

予定工数:

説明

call2arm.com インフラ設定マスター構成表

🏗️ VPS-ROOT システム概要

基本情報

  • サーバー: Ubuntu 24.04.2 LTS @ 85.131.243.51
  • 管理端末: Windows 160.251.155.93 (ito@minisform-ai)
  • SSL証明書: Let's Encrypt ワイルドカード (*.call2arm.com)
  • プロキシ: nginx-proxy (Docker) - SNI方式
  • ポート: 80/443 (nginx-proxy), 内部コンテナは独立ポート

📊 ドメイン・サービス マッピング表

ドメイン サービス コンテナ 機能 ステータス
call2arm.com Redmine本番 redmine-prod プロジェクト管理 🟢 稼働中
dev.call2arm.com Redmine開発 redmine-dev-main 開発環境 🟢 稼働中
task.call2arm.com タスク管理 task-news-ui/api 既存システム 🟢 稼働中
task2.call2arm.com RAG統合 task2-ui/api Redmine+RAG統合 🟢 新構成
mcp.call2arm.com MCP統合 mcp-websocket-claude Claude MCP 🟢 稼働中
claude.call2arm.com Claude統合 mcp-claude-integration Claude API 🟢 稼働中
facty.call2arm.com ファクトチェック facty-api API専用 🟢 稼働中

🎯 task2.call2arm.com 詳細構成(重要)

nginx-proxy ルーティング設定

# /root/nginx-proxy/conf.d/task2-call2arm.conf

# Redmine API → dev.call2arm.com
location ~ ^/api/(users|issues|projects|trackers|...)/ {
    proxy_pass https://dev.call2arm.com;
    proxy_set_header X-Redmine-API-Key $api_key;
}

# RAG/AI API → task2-api:3002  
location ~ ^/api/(embeddings|search|chat|health)/ {
    proxy_pass http://task2-api:3002;
}

# UI → task2-ui
location / {
    proxy_pass http://task2-ui/;
}

Docker構成

# /var/docker/task2-service/docker-compose.yml
services:
  task2-ui:
    image: nginx:stable-alpine
    volumes:
      - ./app/web:/usr/share/nginx/html:ro
      - ./redmine-ui/build:/usr/share/nginx/redmine-ui:ro  # 重要
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
    networks: [proxy-network, rag-network]

  task2-api:
    build: ./app/api
    ports: ["3002:3002"]  # 内部ポート
    environment:
      - NODE_ENV=development
      - REDMINE_URL=https://dev.call2arm.com
      - REDMINE_API_KEY=feb66d81a5f4ff9c585ce30fce2ac06e0554aec6
    networks: [proxy-network, rag-network]
    
  task2-vector-db:
    image: ankane/pgvector:latest
    ports: ["5434:5432"]
    
  task2-redis:
    image: redis:7-alpine
    ports: ["6380:6379"]
    
  task2-search:
    image: getmeili/meilisearch:latest
    ports: ["7701:7700"]

🔧 SSL/TLS 設定

ワイルドカード証明書

SSL証明書パス: /etc/letsencrypt/live/call2arm.com/
├── fullchain.pem  # 証明書チェーン
├── privkey.pem    # 秘密鍵
├── cert.pem       # 証明書
└── chain.pem      # 中間証明書

SSL設定 (全ドメイン共通)

ssl_certificate /etc/letsencrypt/live/call2arm.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/call2arm.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...;

🐳 Docker ネットワーク構成

ネットワーク一覧

proxy-network    # nginx-proxy アクセス用
rag-network      # RAG/AI 内部通信用  
redmine-network  # Redmine 内部通信用
default          # その他

コンテナ間通信

# 内部DNS名でアクセス可能
task2-api:3002     # RAG API
task2-ui:80        # UI
task2-vector-db:5432  # PostgreSQL+pgvector
task2-redis:6379   # Redis
task2-search:7700  # Meilisearch

📁 重要なパス構成

nginx-proxy 設定

/root/nginx-proxy/
├── conf.d/
│   ├── call2arm.conf          # 本家Redmine
│   ├── dev.call2arm.conf      # 開発Redmine  
│   ├── task2-call2arm.conf    # RAG統合環境 ⭐
│   ├── mcp.call2arm.conf      # MCP
│   └── ...
└── docker-compose.yml

task2 プロジェクト

/var/docker/task2-service/
├── app/
│   ├── api/                   # RAG API (Node.js)
│   └── web/                   # メインUI  
├── redmine-ui/build/          # Redmine UI ⭐
├── docker-compose.yml         # サービス定義 
├── nginx.conf                 # 内部nginx設定
└── .env                       # 環境変数

🔄 標準修正手順

nginx設定変更

# 1. バックアップ
cp /root/nginx-proxy/conf.d/TARGET.conf /root/nginx-proxy/conf.d/TARGET.conf.backup-$(date +%Y%m%d-%H%M%S)

# 2. 設定ファイル編集
nano /root/nginx-proxy/conf.d/TARGET.conf

# 3. 設定テスト
docker exec nginx-proxy nginx -t

# 4. 再起動
docker restart nginx-proxy

# 5. 動作確認
curl -k https://TARGET.call2arm.com/

Docker設定変更

# 1. プロジェクトディレクトリ
cd /var/docker/PROJECT-service/

# 2. バックアップ
cp docker-compose.yml docker-compose.yml.backup-$(date +%Y%m%d-%H%M%S)

# 3. 設定変更後
docker-compose down
docker-compose up -d

# 4. 動作確認
docker ps
curl -k https://PROJECT.call2arm.com/api/health

🚨 トラブルシューティング チェックリスト

1. ドメインアクセス不可

# DNS確認
nslookup DOMAIN.call2arm.com

# nginx設定確認  
docker exec nginx-proxy nginx -t
grep -r "server_name DOMAIN" /root/nginx-proxy/conf.d/

# SSL証明書確認
openssl x509 -in /etc/letsencrypt/live/call2arm.com/fullchain.pem -text | grep -A1 "Subject Alternative Name"

2. API 404エラー

# プロキシ設定確認
cat /root/nginx-proxy/conf.d/DOMAIN.conf | grep -A5 -B5 "location.*api"

# バックエンドコンテナ確認
docker ps | grep PROJECT
docker logs PROJECT-api

# 内部接続テスト
docker exec nginx-proxy curl http://PROJECT-api:PORT/api/health

3. UI表示問題

# 静的ファイル確認
docker exec PROJECT-ui ls -la /usr/share/nginx/html/

# nginx設定確認  
docker exec PROJECT-ui cat /etc/nginx/conf.d/default.conf

# マウント確認
docker inspect PROJECT-ui | grep -A10 Mounts

📋 今後の追加手順

新サービス追加時

  1. ドメイン決定: SERVICE.call2arm.com
  2. nginx設定作成: /root/nginx-proxy/conf.d/SERVICE.conf
  3. Docker設定: 該当ディレクトリにdocker-compose.yml
  4. ネットワーク参加: proxy-networkに接続
  5. 動作確認: 全エンドポイントテスト

SSL証明書更新

# 自動更新確認
systemctl status certbot.timer

# 手動更新 (必要時)
certbot renew --nginx
docker restart nginx-proxy

この構成表により、call2arm.com インフラの混乱を防ぎ、効率的な開発・運用が可能になります。

表示するデータがありません

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