yuki / okibi
焚き火の仲間だけの自前Gitホスティング(このサイト自身)
# 🔥 Okibi — 焚き火(atsm)の仲間だけの Git > おき火=燃え続ける熾火。コードが、残る場所。 atsm の焚き火コミュニティのメンバーだけが安全に push できる、自前のモダンな Git ホスティング。 GitHub のような体験を、招待制で。 ## なにができる - メンバーだけがログイン(自前 magic-link / 管理者の招待リンク) - リポジトリ作成・公開/非公開 - `git push` / `git pull`(HTTPS + Personal Access Token) - Web でコードを閲覧(ファイルツリー / blob) - push 時に `.okibi/ci.sh`(または `.okibi/ci.yml` の `script:`)を実行する簡易 CI ## 技術 - Rust + axum + SQLite(sqlx)+ maud - git smart-HTTP は実 `git-http-backend`(CGI) に委譲(pack は自前実装しない=安全) - 認証: セッション(Cookie) / git は handle + PAT の Basic 認証 - シークレットはハッシュのみ保存(セッション・PAT・magic-link) ## ローカル起動 ```bash cargo run # http://localhost:8787 # 開発時、メール未設定なら magic-link は標準出力に出ます ``` 主な環境変数: | var | 説明 | 既定 | |---|---|---| | `OKIBI_BASE_URL` | 公開URL(リンク生成に使用) | `http://localhost:8787` | | `OKIBI_DATA` | データ/リポジトリ置き場 | `./data` | | `OKIBI_SEED_MEMBERS` | 初期メンバー(=admin)メール | yuki の2件 | | `OKIBI_ADMIN_BOOTSTRAP` | メール無しで admin ログインする秘密トークン | 無効 | | `RESEND_API_KEY` | あれば magic-link をメール送信 | 無ければ stdout | | `OKIBI_CI_ENABLE` | `1` で簡易CIを有効化(pushコード実行注意) | 無効 | ## CI の使い方 リポジトリに `.okibi/ci.sh` を置くと push 時に実行されます(`OKIBI_CI_ENABLE=1` のとき)。 ```sh # .okibi/ci.sh cargo test ``` ## セキュリティ note(v1) - 簡易CIは pushコードをホスト上でそのまま実行します。既定で無効。 本番有効化時は ephemeral なサンドボックス(Fly machine/コンテナ)に隔離するのが TODO。 - 認証は atsm allowlist で会員ゲート。atsm.wtf に SSO/OIDC が無いため、当面は 自前 magic-link + 招待リンクで運用(atsm が SSO を出したら差し替え)。 ## デプロイ `git push` → GitHub Actions → Fly.io(`fly deploy` 直叩きは禁止)。