version: '3.8'

# ==========================================
# 🍶 Ponshu Room "AI Factory" Setup
# ==========================================
# このファイルはSynology Container Managerで「プロジェクト」として使用します。
# 3つの主要コンテナ (Gitea, Postgres, MCP) を一度に立ち上げます。
#
# 変更推奨箇所:
# - GITEA__database__PASSWD: 強固なパスワードに変更してください
# - POSTGRES_PASSWORD: 上記と同じパスワードに変更してください

services:
  # ----------------------------------------
  # 1. Gitea (Git Server)
  # 役割: コードの「原本」を管理する倉庫。
  # ----------------------------------------
  gitea:
    image: gitea/gitea:1.21
    container_name: gitea
    environment:
      - USER_UID=1026 # Synologyの一般的なユーザーID (環境に合わせて変更可)
      - USER_GID=100
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=P@ssword_gitea_822929! # 【変更推奨】DBパスワード
    restart: always
    networks:
      - gitea_network
    volumes:
      - ./gitea:/data # リポジトリデータ (永続化)
      # - /etc/timezone:/etc/timezone:ro
      # - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000" # Web UI用ポート (ブラウザからアクセス)
      - "2222:22" # SSH用ポート (Git操作用)

  # ----------------------------------------
  # 2. PostgreSQL (Database)
  # 役割: Giteaのユーザー情報や設定を保存するDB。
  # ----------------------------------------
  db:
    image: postgres:15
    container_name: gitea_db
    restart: always
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=P@ssword_gitea_822929! # 【変更推奨】Giteaの設定と合わせる
      - POSTGRES_DB=gitea
    networks:
      - gitea_network
    volumes:
      - ./postgres:/var/lib/postgresql/data # DBデータ (永続化)

  # ----------------------------------------
  # 3. MCP Server (AI Bridge)
  # 役割: AI (Antigravity/Claude) がNASの中を操作するための窓口。
  # Phase 2B (AI自動化) で本格稼働します。
  # ----------------------------------------
  mcp-server:
    image: node:20-slim
    container_name: mcp_server
    working_dir: /app
    volumes:
      - ./mcp:/app # MCPサーバーのコード置き場
      - ./gitea:/data/gitea_files # AIがGiteaのファイルを読み書きするための共有設定
    environment:
      - NODE_ENV=development
    # 初回起動時に必要なライブラリを自動インストールして待機
    command: sh -c "npm install && node index.js; tail -f /dev/null"
    restart: always
    networks:
      - gitea_network

  # ----------------------------------------
  # 4. AI Proxy Server (App Backend)
  # 役割: Ponshu Room Liteアプリからのリクエストを受け取り、Gemini APIに中継
  # - APIキー保護: アプリにAPIキーを埋め込まない
  # - レート制限: 1デバイスあたり1日10回まで（Lite版）
  # - デバイスID認証: SHA256ハッシュ化されたIDで管理
  # ----------------------------------------
  ai-proxy:
    image: python:3.11-slim
    container_name: ai_proxy
    working_dir: /app
    volumes:
      - ./ai-proxy:/app # AI Proxyサーバーのコード
      - ./ai-proxy-data:/app/data # 使用状況データの永続化
    environment:
      - GEMINI_API_KEY=${GEMINI_API_KEY} # 【重要】APIキーを.envファイルに設定してください
      - GEMINI_MODEL=gemini-2.5-flash # 一旦2.5を使用（RPD 20制限あり）。1.5にアクセスできたら変更
      - RATE_LIMIT_PER_DAY=10
    ports:
      - "8080:8080" # アプリからアクセスするポート
    # 初回起動時に依存関係をインストールしてサーバー起動
    command: sh -c "pip install --no-cache-dir -r requirements.txt && python server.py"
    restart: always
    networks:
      - gitea_network

# ----------------------------------------
# Network Setting
# 内部通信用の専用ネットワーク
# ----------------------------------------
networks:
  gitea_network:
    driver: bridge
