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.
Delete the instance signing key
5d6db0240d02ffd70acff6ee98b3a1d521353e85 · Keenan Nemetz · 17d ago · parent 22528ac3
Delete the instance signing key The key existed to sign run records, and runner signing made it pointless — but deleting it is not tidying. An instance-signed anything can only be checked by trusting the instance, so a mirror or a third party cannot verify it: trust would sit on the box. With users, runners and approvers each holding a key, trust sits on the parties, and the server is a relay that can withhold service but cannot forge a result. That is a property worth having, and the key was the one thing contradicting it. So: `internal/signing` is gone, `Config.InstanceKey()` is gone, the server no longer loads a key at boot, and `/healthz` reports only the user count instead of a fingerprint nothing verifies. The host key is now the only secret the instance holds, which is what the backup section of the README says. `go mod tidy` changes nothing: the package only used the standard library. Verified: scripts/ci.sh green (gofmt, vet, build, markdown links, go test -race ./..., including TestHealthzReportsUsers against the new body and the full end-to-end suite that starts the server from a fresh data directory).
internal/config/config.go +1−2
| @@ -115,8 +115,7 @@ func (c *Config) Lease() time.Duration { | |||
| 115 | 115 | } | |
| 116 | 116 | return time.Duration(c.LeaseSeconds) * time.Second | |
| 117 | 117 | } | |
| 118 | func (c *Config) InstanceKey() string { return filepath.Join(c.DataDir, "instance.key") } | ||
| 119 | func (c *Config) SSHHostKey() string { return filepath.Join(c.DataDir, "ssh_host_ed25519_key") } | ||
| 118 | func (c *Config) SSHHostKey() string { return filepath.Join(c.DataDir, "ssh_host_ed25519_key") } | ||
| 120 | 119 | ||
| 121 | 120 | // BaseURL is PublicURL without a trailing slash, so a caller can append | |
| 122 | 121 | // "/r/<repo>/issues/<id>" without thinking about it. | |