ponshu-room-lite/docs/SYNOLOGY_PROXY_SETUP.md

81 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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