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.
Merge change request 01M70WES5ZZDJ6RP226WB11BBZ: Let people rename and remove their own passkeys
keenan · 1h ago
4b8c9e1d
| 1 | # Configuration for a packaged instance. The package installs this at |
| 2 | # /etc/vole/vole.toml, and `vole admin init --config /etc/vole/vole.toml` uses it |
| 3 | # to create the repository tree and user database it names. |
| 4 | data_dir = "/var/lib/vole/data" |
| 5 | |
| 6 | # Read-only: the web UI and anonymous git clone. Leave HTTPS off and terminate |
| 7 | # TLS in a proxy in front of this address, keeping the Host header intact because |
| 8 | # site requests are routed by hostname. |
| 9 | http_addr = "127.0.0.1:8080" |
| 10 | |
| 11 | # Or let Vole obtain and renew its own certificates with ACME. Setting https_addr |
| 12 | # enables it; http_addr then answers ACME challenges and redirects to HTTPS, so it |
| 13 | # must be reachable on port 80. public_url below (or acme_domains) must name a |
| 14 | # host that resolves to this server. Ports 80 and 443 need the service unit to |
| 15 | # grant CAP_NET_BIND_SERVICE. |
| 16 | # https_addr = ":443" |
| 17 | # http_addr = ":80" |
| 18 | # acme_email = "admin@example.com" |
| 19 | # acme_domains = ["forge.example.com"] |
| 20 | # acme_cache_dir = "/var/lib/vole/data/acme" |
| 21 | # acme_directory_url = "https://acme-staging-v02.api.letsencrypt.org/directory" |
| 22 | |
| 23 | # The only write transport. Identity is the SSH key presented at handshake. |
| 24 | # 2222 keeps this listener off sshd's port; open it in the firewall. |
| 25 | ssh_addr = "0.0.0.0:2222" |
| 26 | |
| 27 | # Where a browser reads this instance. Set it to the canonical https URL to |
| 28 | # enable passkey login; WebAuthn is bound to this origin. The CLI also uses it to |
| 29 | # print the page for something it just created. Trailing slash is ignored. |
| 30 | # public_url = "https://forge.example.com" |
| 31 | |
| 32 | # Development only: sign loopback browser requests in as this account without a |
| 33 | # passkey. dev_only acknowledges that this instance is a development instance; |
| 34 | # without it dev_login is refused, as it is with https_addr or a non-loopback |
| 35 | # public_url. |
| 36 | # dev_only = true |
| 37 | # dev_login = "you" |
| 38 | |
| 39 | # Let anyone create an account by registering a passkey. New accounts have no |
| 40 | # repository-specific access; each repository's default role still applies. |
| 41 | # Off unless you are running an instance that wants public contributions. |
| 42 | # open_registration = true |
| 43 | |
| 44 | # The instance-wide role a self-registered account gets. It applies to public |
| 45 | # repositories only; an instance admin still has admin access to every |
| 46 | # repository. Use "contribute" for an open-source instance. "admin" is refused. |
| 47 | # open_registration_role = "contribute" |
| 48 |