# 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認証など)の設定を推奨します。現在はローカルネットワーク内利用を想定しています。