🔥 Okibi

yuki / okibi

焚き火の仲間だけの自前Gitホスティング(このサイト自身)

git clone https://okibi.fly.dev/yuki/okibi.git

okibi / README.md

# 🔥 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` 直叩きは禁止)。