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