yuki / okibi
焚き火の仲間だけの自前Gitホスティング(このサイト自身)
# Okibi — 焚き火(atsm)会員だけの自前 Git ホスティング > 言葉が、残る。焚き火の仲間だけが安全に push できる、モダンな自作 GitHub。 > Stack: Rust + axum + sqlx(SQLite) + maud。git smart-HTTP は git-http-backend(CGI) に委譲。 ## 決定事項(2026-06-10) - 本体: 完全自作(Rust/axum) - 認証: 自前 magic-link(メール)+ **atsm 会員 allowlist** ゲート - 理由: atsm.wtf に OIDC 無し / members API は表示名のみ → 純正 SSO は kenny 側依存。allowlist で疎結合に。 - upgrade path: atsm.wtf が /api/me or OIDC を出したら差し替え - git: smart-HTTP を `git-http-backend` に委譲(pack 自前実装しない) - CI: v1 は `.okibi/ci.yml` を push 時に実行(最小ランナー)。隔離は後追い。 - ホスト: Fly.io + Volume(`/data`) ## フェーズ - [x] P0 scaffold: Cargo + axum + health + SQLite 初期化 - [ ] P1 認証: magic-link 発行/検証 + セッション + atsm allowlist + PAT 発行 - [ ] P2 リポ: 作成/一覧 + ディスクに bare repo init - [ ] P3 **git smart-HTTP push/pull**(CGI bridge + 認証ゲート)★コア - [ ] P4 Web UI: リポ一覧 / ファイルツリー / blob 表示(モダン最小) - [ ] P5 CI: post-receive → ci.yml 実行 → ログ保存/表示 - [ ] P6 Fly デプロイ(git push → Actions、Volume、Resend secret) ## v1 完了の定義(検証) 1. allowlist のメールで magic-link ログインできる / 非会員は弾かれる 2. ブラウザでリポ作成 → PAT 発行 3. `git clone https://<handle>:<PAT>@okibi/<handle>/<repo>.git` → commit → push → pull が通る 4. push した内容がブラウザのファイルツリーで見える 5. `.okibi/ci.yml` の script が走りログが残る ## ローカル検証コマンド ``` cargo build cargo run # :8787 # 別シェルで git push/pull E2E(scripts/e2e.sh) ```