ponshu-room-lite/docs/SYNOLOGY_PROXY_SETUP.md

81 lines
3.1 KiB
Markdown
Raw Permalink Normal View History

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