ponshu-room-lite/docs/SYNOLOGY_PROXY_SETUP.md

3.1 KiB
Raw Blame 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 (開発用) を更新します。

// lib/secrets.local.dart (例)
static const String aiProxyAnalyzeUrl = 'http://[NASのIPアドレス]:8080/analyze';
static const bool useProxy = true; // プロキシを使用する場合true

⚠️ 注意事項

  • このプロキシサーバーは簡易実装(メモリ内データストア)のため、再起動すると利用回数カウントがリセットされます。
  • 外部公開インターネット経由アクセスする場合は、別途リバースプロキシや認証Basic認証などの設定を推奨します。現在はローカルネットワーク内利用を想定しています。