Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

vole
Clone

Read only, no credentials:

https://rodent.software/git/vole.git

Write over SSH with a registered key:

git clone ssh://git@0.0.0.0:2222/vole.git

A free and open-source forge that lives in your Git repo.

Allow opt-in open registration

f920a9f12c4ff12e4f47497a084f0201d8914181 · Keenan Nemetz · 15d 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.

docs/configuration.md +24

@@ -44,6 +44,7 @@ vole admin user list
44 44 | `http_addr` | `"127.0.0.1:8080"` | Address for the web interface and anonymous Git clone |
45 45 | `ssh_addr` | `"127.0.0.1:2222"` | Address for SSH, the authenticated Git transport |
46 46 | `public_url` | empty | Canonical browser address; must be HTTPS to enable passkey login |
47 | `open_registration` | `false` | Let anyone create an account by registering a passkey; requires `public_url` to be HTTPS |
47 48 | `max_blob_bytes` | `104857600` (100 MiB) | Largest single file accepted in a push |
48 49 | `receive_max_bytes` | `1073741824` (1 GiB) | Largest whole push Vole will accept |
49 50 | `lfs_object_max_bytes` | `2147483648` (2 GiB) | Largest single LFS object |
@@ -73,6 +74,29 @@ created. It is also the WebAuthn relying-party origin: browser login is enabled
73 74 only when `public_url` is an `https://` URL. Vole does not change how it routes
74 75 requests based on this setting.
75 76
77 ## Open registration
78
79 By default only an administrator can create an account. Set
80 `open_registration = true` to let anyone create one by registering a passkey:
81
82 ```toml
83 public_url = "https://forge.example.com"
84 open_registration = true
85 ```
86
87 The setting has no effect unless `public_url` is HTTPS. New accounts start with
88 no repository-specific access: each repository's default role still applies. An
89 open-source project that wants outside contributions can publish the repository
90 and set its default role to `contributor`:
91
92 ```sh
93 vole admin acl default demo contributor
94 ```
95
96 A registered account can add its own SSH key from **Account**, so it can push to
97 the contributor namespace without an administrator. There is no email
98 verification; registration is a deliberate policy choice, not a safe default.
99
76 100 ## Running behind a proxy
77 101
78 102 Vole serves plain HTTP. If the instance is public, terminate TLS in a proxy in