Skip to content

Latest commit

 

History

History
211 lines (156 loc) · 11.5 KB

File metadata and controls

211 lines (156 loc) · 11.5 KB
AIMeter logo

AIMeter

AIMeter は、AI プロバイダーの利用量・クォータ・履歴トレンドを追跡する self-hosted ダッシュボードです。

React Express TypeScript Runtime Providers Deploy Deploy

AIMeter dashboard
AIMeter usage history AIMeter endpoint AIMeter settings

主な機能

  • React フロントエンドダッシュボード
  • Express バックエンド API
  • マルチプロバイダー対応アダプター構成
  • 実行モード: node / serverless
  • DB ベースのストレージと bootstrap フロー
  • 複数 AI プロバイダーを横断した統合ダッシュボード
  • プロバイダー認証情報管理とクォータ表示
  • 利用履歴とチャートページ
  • Endpoint / プロキシ関連 API ページ
  • Bootstrap + 管理者ルート初期化フロー
  • 複数 DB エンジン対応: sqlited1postgresmysql

対応プロバイダー

Aliyun
Aliyun
Antigravity
Antigravity
Claude
Claude
Codex
Codex
Kimi
Kimi
MiniMax
MiniMax
z.ai
z.ai
Copilot
Copilot
OpenRouter
OpenRouter
Ollama
Ollama
OpenCode
OpenCode
Cursor
Cursor

プロバイダー別のサンプルと統合ノート: docs/providers

技術スタック

  • Frontend: React 18, TypeScript, Vite, Tailwind CSS
  • Backend: Node.js, Express, TypeScript
  • Storage: SQLite / Cloudflare D1 / PostgreSQL / MySQL

プロジェクト構成

.
├─ src/                  # フロントエンドアプリ
├─ server/               # バックエンド API, 認証, ジョブ, ストレージ
├─ deploy/               # プラットフォーム別デプロイガイド
├─ docs/                  # API ドキュメント, プロバイダー例, 翻訳, 設定ドキュメント
├─ config.all.yaml       # 設定テンプレート(全項目)
├─ config.yaml           # ローカル有効設定(コピーして作成)
└─ .env.all              # 環境変数テンプレート(全項目)

クイックスタート

オプション 1: コンテナ(Docker)

nginx + Node.js のシングルコンテナ構成。データはボリュームマウントで永続化されます。

mkdir -p ~/aimeter/db ~/aimeter/log
docker run -d --name aimeter \
  -p 3000:3000 \
  -e AIMETER_DATABASE_ENGINE=sqlite \
  -e AIMETER_DATABASE_CONNECTION=/aimeter/db/aimeter.db \
  -e AIMETER_SERVER_PORT=3000 \
  -e AIMETER_BACKEND_PORT=3001 \
  -e AIMETER_RUNTIME_MODE=node \
  -v ~/aimeter/db:/aimeter/db \
  -v ~/aimeter/log:/aimeter/log \
  bugwz/aimeter:latest

アクセス: http://localhost:3000

Docker Compose、HTTPS、MySQL/PostgreSQL、マルチアーキテクチャビルドの詳細: deploy/container/README.md

オプション 2: Vercel

Serverless デプロイ。外部の MySQL または PostgreSQL データベースが必要です。

DB デプロイ
MySQL Deploy with Vercel
PostgreSQL Deploy with Vercel

環境変数を設定して bootstrap を完了後、外部 cron サービスで /api/system/jobs/refresh を 5 分ごとに呼び出します。

Cron 設定と完全な手順: deploy/vercel/README.md

オプション 3: Cloudflare Workers

Serverless デプロイ。Cloudflare D1、MySQL、PostgreSQL に対応。

Deploy to Cloudflare Workers

デプロイ後、DB モードに応じて環境変数を設定してください:

モード 必須環境変数
D1 AIMETER_RUNTIME_MODE=serverless
AIMETER_SERVER_PROTOCOL=https
AIMETER_DATABASE_ENGINE=d1
AIMETER_DATABASE_CONNECTION=DB
MySQL AIMETER_RUNTIME_MODE=serverless
AIMETER_SERVER_PROTOCOL=https
AIMETER_DATABASE_ENGINE=mysql
AIMETER_DATABASE_CONNECTION=mysql://USER:PASSWORD@HOST:3306/DATABASE
PostgreSQL AIMETER_RUNTIME_MODE=serverless
AIMETER_SERVER_PROTOCOL=https
AIMETER_DATABASE_ENGINE=postgres
AIMETER_DATABASE_CONNECTION=postgres://USER:PASSWORD@HOST:5432/DATABASE?sslmode=require

Cron Triggers は組み込み済みで、wrangler.jsonc がデフォルトで 5 分ごとに自動リフレッシュをスケジュールします。

D1 バインディング、Hyperdrive、完全な設定手順: deploy/cloudflare/README.md

スクリプト

npm run dev            # フロントエンドのみ
npm run start:server   # バックエンドのみ
npm run dev:all        # フロントエンド + バックエンド
npm run dev:mock:all   # フロントエンド + バックエンド(mock モード)
npm run build          # 型チェック + フロントエンドビルド
npm run preview        # フロントエンドビルドをプレビュー
npm run cf:dev         # Cloudflare Workers ローカル開発(Wrangler)
npm run cf:deploy      # Cloudflare Workers へデプロイ

設定

現在の実装における設定ソースと優先順位:

  1. config.yaml(または AIMETER_CONFIG_FILE で指定したパス)
  2. 環境変数
  3. 組み込みデフォルト

重要事項:

  • database.engine / AIMETER_DATABASE_ENGINE は必須。
  • database.connection / AIMETER_DATABASE_CONNECTION は必須。
  • serverless モードではスケジューラーは無効。
  • node モードではプロセス内スケジューラーが自動起動。

詳細な項目マッピングと説明:

デプロイ

対応デプロイモードとドキュメント:

API ドキュメント

セキュリティノート

  • DB モードでは、セッションシークレットおよび暗号化関連設定は bootstrap 時にシステムストレージへ初期化・永続化されます。
  • AIMETER_CRON_SECRETAIMETER_ENDPOINT_SECRET は任意の統合シークレットです。指定する場合は 32 文字の強ランダム値を使用してください。
  • 本番環境では AIMETER_SERVER_PROTOCOL=https を設定し、厳格なトランスポート関連セキュリティヘッダーを有効化してください。