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/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.

Run the server as one container with one volume

b86148d17f5c1b62ca437684b221a56369dd6493 · Keenan Nemetz · 3d ago · parent 04e063ca

Run the server as one container with one volume

Vole is one process with its own SSH listener, so it needs no sshd in the
image: a published 2222 for Git, a published 8080 for the web, and a volume
holding the whole instance.

An image cannot install at run time, so the entrypoint runs `vole admin init`
first. That command is idempotent, and the same VOLE_CONFIG that serves also
makes `docker run <image> admin account list` work.

The compose file publishes 8080 on loopback, for the TLS proxy most container
hosts already run, and health checks /healthz, which answers 200 there and
does not under ACME.

CI runners stay outside: they execute repository code and need a real OCI
runtime on the host.

deploy/docker/vole.toml +31

@@ -0,0 +1,31 @@
1 # The configuration the image starts with, and the file to copy and edit for a
2 # real deployment. Every setting is documented in docs/configuration.md.
3
4 data_dir = "/var/lib/vole/data"
5
6 # The web interface and anonymous clone. A container is reached through its
7 # published ports, so this listens on every address inside it; keep the published
8 # port on the host's loopback and let a TLS proxy be the only way in, or set
9 # https_addr below and publish 80 and 443 instead.
10 http_addr = "0.0.0.0:8080"
11
12 # Git over SSH, the only write transport.
13 ssh_addr = "0.0.0.0:2222"
14
15 # The address people reach this instance on. Passkey sign-in needs an https URL,
16 # so set it before anyone signs in: browsers bind a passkey to that address, and
17 # changing it later means re-enrolling everyone.
18 # public_url = "https://forge.example.com"
19
20 # Behind a proxy, name the header it sets with the client address. Without it the
21 # per-client clone limit and the sign-in rate limits see every request as coming
22 # from the proxy.
23 # git_http_client_ip_header = "X-Forwarded-For"
24
25 # Or let Vole obtain its own certificate, and put nothing in front. That needs
26 # ports 80 and 443 published, DNS pointing here, and public_url set.
27 # https_addr = ":443"
28 # http_addr = ":80"
29 # acme_email = "admin@example.com"
30
31 # instance_name = "Vole"