3.1 KiB
3.1 KiB
Synology Proxy Setup Guide (Gemini API)
このドキュメントは、Gemini APIキーを隠蔽し、利用量制限(Quota)を管理するためのプロキシサーバーをSynology NAS上に構築する手順書です。
🎯 目的
- APIキーの保護: クライアントアプリ(Flutter)にAPIキーを含めず、プロキシサーバー(Synology)のみが保持する。
- 利用制限: 1日あたりのリクエスト数を制限し、Gemini APIの無料枠超過や予期せぬ課金を防ぐ。
🛠️ 必要なもの
- Synology NAS (Container Manager インストール済み)
- Google Gemini API Key (AI Studioで取得)
📂 手順
1. ファイルの準備
PC上で、プロジェクト内の tools/proxy フォルダにある以下のファイルを準備します。
server.jspackage.jsonDockerfile
2. Synologyへの配置
Synologyの File Station を使い、以下のディレクトリを作成してファイルをアップロードします。
パス: /docker/ponshu_proxy
upload:
server.jspackage.jsonDockerfile
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 (開発用) を更新します。
// lib/secrets.local.dart (例)
static const String aiProxyAnalyzeUrl = 'http://[NASのIPアドレス]:8080/analyze';
static const bool useProxy = true; // プロキシを使用する場合true
⚠️ 注意事項
- このプロキシサーバーは簡易実装(メモリ内データストア)のため、再起動すると利用回数カウントがリセットされます。
- 外部公開(インターネット経由アクセス)する場合は、別途リバースプロキシや認証(Basic認証など)の設定を推奨します。現在はローカルネットワーク内利用を想定しています。