vole
Clone
Read only, no credentials:
https://rodent.software/vole.git
Write over SSH with a registered key:
git clone ssh://git@rodent.software:2222/vole.git
A free and open-source forge that lives in your Git repo.
Allow opt-in open registration
f920a9f12c4ff12e4f47497a084f0201d8914181 · Keenan Nemetz · 16d ago · parent 6c84d387
Allow opt-in open registration Add open_registration, off by default and effective only with an HTTPS public_url. /register creates an account and its first passkey without an administrator; the account row is written only after the WebAuthn ceremony succeeds, so an abandoned registration reserves no name. New accounts start with no repository-specific ACL entries. Add self-service SSH key management on the Account page so a registered contributor can add the key needed to push to their contributor namespace. Cover registration enablement, name validation, deferred account creation, and self-service key add/remove in tests, and document the policy.
forge/config/config.go +9
| @@ -50,6 +50,10 @@ type Config struct { | |||
| 50 | 50 | // PagesCacheBytes caps the in-memory blob cache. The cache is required, not an | |
| 51 | 51 | // optimisation: cold git reads are ~1.2 ms p50, warm ones 0.075 ms. | |
| 52 | 52 | PagesCacheBytes int64 `toml:"pages_cache_bytes"` | |
| 53 | // OpenRegistration lets anyone create an account by registering a passkey. | ||
| 54 | // Off by default: an instance with no public contribution policy should not | ||
| 55 | // grow accounts just because it is reachable. | ||
| 56 | OpenRegistration bool `toml:"open_registration"` | ||
| 53 | 57 | // PublicURL is where this instance is reachable from a browser: | |
| 54 | 58 | // "https://forge.example.com" behind a proxy, normally. It is optional for a | |
| 55 | 59 | // read-only instance; browser login is enabled only when it is an https URL, | |
| @@ -184,6 +188,11 @@ ssh_addr = "127.0.0.1:2222" | |||
| 184 | 188 | # print the page for something it just created. Trailing slash is ignored. | |
| 185 | 189 | # public_url = "https://forge.example.com" | |
| 186 | 190 | ||
| 191 | # Let anyone create an account by registering a passkey. New accounts have no | ||
| 192 | # repository-specific access; each repository's default role still applies. | ||
| 193 | # Off unless you are running an instance that wants public contributions. | ||
| 194 | # open_registration = true | ||
| 195 | |||
| 187 | 196 | # Reject individual blobs above this size (pre-receive). Point people at | |
| 188 | 197 | # git-lfs instead. | |
| 189 | 198 | max_blob_bytes = 104857600 | |