このプロジェクトについて
## プロジェクト概要
`bsz`(Busuanzi)は、不蒜子(Busuanzi)統計インターフェースと互換性のあるセルフホスト型訪問者統計システムです。バックエンドはRustで実装され、コンパイル後は単一のバイナリファイルを生成し、外部ライブラリに依存しないため、運用コストを大幅に削減します。フロントエンドはbun workspacesを採用し、独立したランディングページとオプションの管理画面を提供し、ニーズに応じて個別にデプロイできます。
## 主な機能
- **単一バイナリ・ゼロ依存**: バックエンドは実行ファイル1つで、VPS・Dockerまたはシステムサービスにデプロイ可能。
- **不蒜子API互換**: 既存の不蒜子スクリプトを使用しているサイトは、統計インターフェースのアドレスを変更するだけで移行可能。
- **完全な前後端分離**: バックエンドはJSON APIを提供し、Landingは純粋な静的ページ、AdminはSPAで、三者は独立してデプロイまたは組み合わせ可能。
- **オプションの管理画面**: `ADMIN_TOKEN`を設定することでAdmin APIを有効化。未設定時はバックエンドルートが存在せず、セキュリティ性が高い。
- **軽量フロントエンド**: Landingは純粋な静的リソースで、GitHub PagesやCloudflare Pagesなどの静的サイトホストに展開可能。AdminはVite + React(または類似)で構築されたSPA。
- **手軽なローカルデバッグ**: `cargo run`および`bun run dev:*`によるクイック起動スクリプトを提供し、開発・演示に適す。
## アーキテクチャ説明
```
.
├── backend/ # Rust バックエンド、/api/* 統計インタフェースおよびオプションの/api/admin/* 管理インタフェースを提供
└── frontend/ # bun workspaces
└── packages/
├── shared/ # UI コンポーネント、テーマ、Tailwind 設定
├── landing/ # ランディングページ(apex)、純粋な静的
└── admin/ # 管理画面 SPA(dash)、オプション展開
```
- **backend**: `actix-web`(または類似)ベースで実装され、デフォルトは統計ルートのみのマウント。環境変数 `ADMIN_TOKEN` が非空の場合は追加で管理ルートをマウント。
- **landing**: 静的HTML・CSS・JSのみを含み、訪問者カウント、ドキュメントリンク、管理画面へのエントリを表示。
- **admin**: ログイン後にリアルタイム訪問者データ・履歴統計・IP黑名单などの機能を確認可能。すべてのリクエストはバックエンドAdmin APIによる認証を経て実行される。
## クイックスタート(5分で動作確認)
```bash
# 1. バックエンドを起動(Terminal 1)
cd backend && ADMIN_TOKEN=test-token cargo run
# 2. Landing を起動(Terminal 2)
cd frontend && bun install
bun run dev:landing # http://localhost:12702 にアクセス
# 3. Admin を起動(Terminal 3)
bun run dev:admin # http://localhost:12705 にアクセス
```
## デプロイガイド
### バックエンドデプロイ
- **バイナリ**: `cargo build --release` で `target/release/bsz` を生成し、サーバーにコピーして `ADMIN_TOKEN`(任意)や `PORT` などの環境変数を設定。
- **systemd**: サンプルunitファイルを提供し、起動時自動開始・ログ管理を実現。
- **nginx リバースプロキシ**: `/api/` パスをバックエンドに転送し、静的リソースはCDNでホスト可能。
### Landing デプロイ
```bash
bun run build:landing # 出力先は frontend/packages/landing/dist/
# dist/ ディレクトリを GitHub Pages、Cloudflare Pages または任意の静的ホストサービスにアップロード
```
### Admin デプロイ
```bash
VITE_API_BASE_URL=https://api.example.com \
bun run build:admin # 出力先は frontend/packages/admin/dist/
# 同様に静的ホストプラットフォームにデプロイでき、アクセス時にバックエンドURLとADMIN_TOKENを入力して連携
```
## 設定説明
- `ADMIN_TOKEN`: 非空の場合、バックエンドが `/api/admin/*` をマウントし、フロントエンドAdminのログイン時に同じトークンで認証を行う。
- `VITE_API_BASE_URL`: Admin フロントエンドのビルド時にバックエンドAPIのベースURLを注入。
- その他の環境変数(`PORT`、`RATE_LIMIT` など)は `backend/.env` で既定値を確認。
## ライセンス
本プロジェクトはMITライセンスの下で提供され、自由な利用・修正・配布が可能。
---
より詳細なドキュメントについては、リポジトリ内の `backend/README.md`、`frontend/packages/landing/README.md`、`frontend/packages/admin/README.md` をご参照ください。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.