技術スタック¶
選定一覧¶
| 層 | 選定 | 理由 |
|---|---|---|
| 言語 | Go 1.25+ | 単一バイナリ、クロスコンパイル、並行性が良好、エコシステム成熟 |
| Web フレームワーク | Gin | エコシステム最大、ミドルウェアが豊富 |
| データベース | SQLite | 組み込み、運用ゼロ、単一ホストのシナリオに適合 |
| SQLite ドライバ | glebarez/sqlite(純 Go) |
CGO なし、クロスコンパイルが容易 |
| ORM | GORM | 開発効率が高く、複雑なクエリはネイティブ SQL にフォールバック可能 |
| リアルタイム通信 | gorilla/websocket | ターミナル、ログ tail、指標プッシュ |
| タスクスケジューリング | robfig/cron | パネルのスケジュールタスク |
| システム監視 | gopsutil | クロスプラットフォームの CPU / メモリ / ディスク / プロセス |
| Docker | 公式 SDK | コンテナ / イメージ / ボリューム / ネットワーク |
| 認証 | JWT + refresh | ステートレス API + 任意のセッション |
| 2FA | TOTP(RFC 6238) | ログインの二段階認証 |
| AI | 抽象化された LLM インターフェース | OpenAI / DeepSeek / Qwen / Ollama を統一的にアダプト |
| フロントエンド | Vue 3 + ECharts | モダン SPA + チャート |
全体アーキテクチャ¶
┌──────────────────────────────────────────────────────────┐
│ OpsMini(単一ホストパネル、単一バイナリ) │
│ │
│ Vue3 SPA(ビルド成果物をバイナリに embed) │
│ │ HTTP / WebSocket │
│ ┌────▼───────────────────────────────────────────────┐ │
│ │ Gin Router → ミドルウェア(認証/権限/監査/レート制限/セキュリティ入口) │ │
│ │ Controller → Service → Repository │ │
│ └────┬──────────────────────────────────────────────┘ │
│ │ │
│ ┌────▼───────────────────────────────────────────────┐ │
│ │ SQLite(業務データ) │ システムリソースアダプタ層 │ │
│ │ users/cron/... │ Docker SDK / crontab / │ │
│ │ │ gopsutil / ファイルシステム / SSH │ │
│ └─────────────────────┴──────────────────────────────┘ │
│ │
│ 外部向け 2 セットの REST API: │
│ · /api/v1 パネル API(JWT + RBAC) │
│ · /agent/v1 Agent API(Token + コマンドホワイトリスト) │
└──────────────────────────────────────────────────────────┘