# Synology Proxy Setup Guide (Gemini API)

このドキュメントは、**Gemini APIキーを隠蔽**し、**利用量制限（Quota）を管理**するためのプロキシサーバーをSynology NAS上に構築する手順書です。

## 🎯 目的
1.  **APIキーの保護**: クライアントアプリ（Flutter）にAPIキーを含めず、プロキシサーバー（Synology）のみが保持する。
2.  **利用制限**: 1日あたりのリクエスト数を制限し、Gemini APIの無料枠超過や予期せぬ課金を防ぐ。

---

## 🛠️ 必要なもの
*   **Synology NAS** (Container Manager インストール済み)
*   **Google Gemini API Key** (AI Studioで取得)

---

## 📂 手順

### 1. ファイルの準備
PC上で、プロジェクト内の `tools/proxy` フォルダにある以下のファイルを準備します。
*   `server.js`
*   `package.json`
*   `Dockerfile`

### 2. Synologyへの配置
Synologyの `File Station` を使い、以下のディレクトリを作成してファイルをアップロードします。

パス: `/docker/ponshu_proxy`

upload:
*   `server.js`
*   `package.json`
*   `Dockerfile`

### 3. Dockerイメージのビルド
Synologyの「Container Manager」>「イメージ」>「アクション」>「追加」>「Dockerfileから追加」を選択します。

*   **パス**: `/docker/ponshu_proxy` を選択
*   **イメージ名**: `ponshu-proxy`
*   **タグ**: `latest`

ビルドが完了するまで待ちます。

### 4. コンテナの作成と起動
「Container Manager」>「コンテナ」>「作成」をクリックします。

*   **イメージ**: `ponshu-proxy:latest`
*   **コンテナ名**: `ponshu-proxy-server`
*   **ネットワーク**: `bridge` (またはホストと同じネットワーク)
*   **ポート設定**:
    *   ローカルポート: `8080` (空いているポート)
    *   コンテナポート: `8080` (固定)
*   **環境変数 (Environment Variables)**:
    *   `GEMINI_API_KEY`: `AIzaSy...` (あなたのAPIキー)
    *   `DAILY_LIMIT`: `50` (1日あたりの解析回数上限)
    *   `PORT`: `8080`

設定を確認し、「完了」をクリックしてコンテナを起動します。

### 5. 動作確認
PCのブラウザまたはターミナルからアクセスして確認します。

URL: `http://[NASのIPアドレス]:8080/health`
レスポンス: `OK`

---

## 📱 アプリ側の設定 (Flutter)

Flutterアプリの `dart-define` または `secrets.local.dart` (開発用) を更新します。

```dart
// lib/secrets.local.dart (例)
static const String aiProxyAnalyzeUrl = 'http://[NASのIPアドレス]:8080/analyze';
static const bool useProxy = true; // プロキシを使用する場合true
```

## ⚠️ 注意事項
*   このプロキシサーバーは簡易実装（メモリ内データストア）のため、**再起動すると利用回数カウントがリセット**されます。
*   外部公開（インターネット経由アクセス）する場合は、別途リバースプロキシや認証（Basic認証など）の設定を推奨します。現在はローカルネットワーク内利用を想定しています。
