HyperDrive

セルフホスト可能な個人用ファイル管理 — P2P 共有と AI 検索をひとつに。

HyperDrive は、クラウドストレージの使いやすさを保ちながら、データの所在と共有経路を自分でコントロールできるシステムです。ファイルは自分のサーバー上で管理し、機密の受け渡しはデバイス間の直接転送で完結させます。あわせて、ファイル名を思い出せなくても内容から探せるベクトル検索と、画像内テキストを対象にした OCR 検索を備えています。

30 秒で把握する要点

| 何をするか | 自分のサーバーでファイルを保管・整理・検索する | | 誰向けか | 一般ユーザー〜プライバシー重視のパワーユーザー | | 他と違う点 | 合言葉 P2P 共有・AI 検索・完全セルフホスト | | 次に読む | 仕様書 / 実装ガイド |


プロジェクト概要

サービス名

HyperDrive(リポジトリ名: storage

コンセプト

Google Drive 系サービスが提供する「どこからでもアクセスできるファイル管理」の体験をベースに、次の 2 軸を追加した 個人用ナレッジ・ファイル基盤 です。

  1. プライバシー優先の共有 — 合言葉を知る相手とのみ、WebRTC によるデバイス間直接転送。ファイル実体は中継サーバーに残りません。
  2. 意味で探す検索 — アップロードされた文書・画像をベクトル化し、「青い空の写真」「去年の会議メモ」のような曖昧な表現でも候補を絞り込めます。

対象ユーザー

ペルソナ ニーズ
一般ユーザー 直感的な UI でファイルを整理し、リンクや合言葉で安全に渡したい
パワーユーザー API・セルフホスト・監視スタックまで含め、環境を自分で構築・運用したい
プライバシー重視のエンジニア データ所在地を自分で決め、共有ログやクラウド実体の残存を最小化したい

既存クラウドとの位置づけ

観点 一般的なクラウド HyperDrive
データの保管場所 事業者のインフラ 自分が立てたサーバー(セルフホスト)
機密ファイルの受け渡し サーバー経由のアップロード P2P(合言葉 + WebRTC)
「名前が思い出せない」検索 ファイル名・フォルダ中心 ベクトル検索 + OCR
運用の自由度 サービス提供範囲内 ソース・スタックを自分で選択可能

主な特徴

P2P ファイル共有

合言葉(ウォッチワード)だけで送受信者をマッチングし、WebRTC DataChannel 上でファイルを直接転送します。SDP や ICE 候補の交換は HyperDrive の WebSocket シグナリングを経由しますが、ファイルのバイナリはサーバーに保存されません。同一 LAN 内だけでなく、STUN/TURN を用いたインターネット越しの接続にも対応する設計です。

ベクトル検索

アップロードされたテキストや文書を multilingual-e5 等でベクトル化し、Qdrant に格納します。キーワードの完全一致に頼らず、意味的に近いファイルをランキングして返すため、「内容は覚えているがファイル名がわからない」状況に強いです。

OCR 検索

スクリーンショット・スキャン画像・写真内の文字列を PaddleOCR / EasyOCR で抽出し、通常の全文検索と同様にインデックス化します。ブラウザ拡張(Plasmo)からキャプチャした画像も OCR パイプラインに載せられる想定です。

セルフホスト

Docker Compose 等で PostgreSQL・Valkey・RustFS・Qdrant を含む一式を自分のマシンや VPS に展開できます。認証・セッション・オブジェクトストレージ・ベクトル DB まで、データの境界を自分で定義できます。

その他の設計上の特徴(概要)

  • 論理削除 — 物理削除ではなくフラグで無効化し、監査・復元の余地を残す方針
  • 権限モデル — 一般ユーザーと管理者(凍結・一覧など)を分離
  • 監視 — Grafana / Prometheus / Loki による運用可視化(本番想定)

技術スタック

主要コンポーネントのみ抜粋しています。ポートや通信経路の詳細は アーキテクチャ を参照してください。

レイヤ 技術 役割
DB PostgreSQL + SeaORM アカウント・ファイルメタ・権限などの永続データ(生 SQL 禁止方針)
Backend Rust (Axum) REST API、認証、ファイル管理、WebSocket シグナリング
Frontend TanStack Start Web UI(デフォルトポート 3000)
Session / Cache Valkey セッション、キャッシュ、P2P ルーム状態
Storage RustFS S3 互換オブジェクトストレージ(ファイル実体)
Vector DB Qdrant ベクトルインデックス・近傍探索(HNSW)
AI Services Python FastAPI OCR・ベクトル化ワーカー(ポート 8000)
Browser Extension Plasmo ブラウザ上での画像キャプチャと OCR 連携
監視(任意) Grafana / Prometheus / Loki メトリクス・ログの可視化

データの流れ(概要)

ブラウザ → TanStack Start → Rust API → PostgreSQL / Valkey / RustFS
                                ↓
                        Python FastAPI → Qdrant

P2P 転送時のみ: ブラウザ ←WebRTC→ ブラウザ(ファイル本体は API サーバーを通過しない)


ドキュメント構成

このサイト(Retype)は docs/ 以下をビルドし、本ページがトップ です。目的に応じて次のドキュメントへ進んでください。

ドキュメント 内容 リンク
仕様書 API 一覧、DB 方針、各機能の入出力・エラー・権限 仕様書/仕様書.md
実装ガイド(アーキテクチャ) サービス一覧、ポート、接続図、開発者向けの全体像 仕様書/実装ガイド/アーキテクチャ.md
DB スキーマ ER 図に沿ったテーブル・リレーションの説明 仕様書/実装ガイド/DBスキーマ.md
開発環境 ローカル起動・依存関係 仕様書/開発環境.md
インフラ P2P、TURN、OCR、メール等の横断仕様 仕様書/インフラ/ 配下各ファイル

仕様書の章立て(早見)

  • アカウント系 — 登録・ログイン・凍結・プロフィール
  • ファイル系 — アップロード、ゴミ箱、リンク共有、合言葉共有
  • 検索系 — 内容・ベクトル・ファイル名・OCR
  • フォルダー系 — 階層整理(API パスは仕様書内の早見表を参照)

クイックスタート(開発者向け)

  1. リポジトリをクローンし、docs/仕様書/開発環境.md の手順で依存サービスを起動する。
  2. フロント(TanStack Start)と API(Axum)を立ち上げ、ブラウザで UI にアクセスする。
  3. 検索・OCR・P2P を試す場合は、Qdrant・Python FastAPI・TURN 設定が有効であることを確認する。

詳細な環境変数と起動順序は 実装ガイド に集約されています。


用語集(最小)

用語 説明
合言葉共有 ウォッチワードで送受信者を結び、P2P 転送を開始する機能
ベクトル検索 文書・テキストの意味類似度に基づく検索
RustFS ファイル実体を置く S3 互換ストレージ層
Valkey Redis 互換のセッション・キャッシュストア

ライセンス・貢献

プロジェクトのライセンスおよびコントリビューション手順は、リポジトリルートの README および各パッケージの設定を参照してください。ドキュメントの修正は docs/ 以下の Markdown を編集し、Retype でプレビューできます。


最終更新: ドキュメントサイトのトップページとして整備。詳細仕様は常に 仕様書 を正とする。