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.
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/compose.yaml +39
| @@ -0,0 +1,39 @@ | |||
| 1 | # Vole in one container. | ||
| 2 | # | ||
| 3 | # Copy the configuration out of the image (or from this directory) and edit it | ||
| 4 | # first; public_url is the one setting that has to be right before anyone signs | ||
| 5 | # in: | ||
| 6 | # | ||
| 7 | # cp deploy/docker/vole.toml ./vole.toml | ||
| 8 | # $EDITOR vole.toml | ||
| 9 | # docker compose -f deploy/docker/compose.yaml up -d | ||
| 10 | # | ||
| 11 | # Port 8080 is published on loopback: put a TLS proxy in front of it, such as the | ||
| 12 | # Caddy snippet in docs/deploy/docker.md. To let Vole obtain its own certificate | ||
| 13 | # instead, uncomment https_addr in vole.toml and publish 80 and 443 here. | ||
| 14 | |||
| 15 | name: vole | ||
| 16 | |||
| 17 | services: | ||
| 18 | vole: | ||
| 19 | build: | ||
| 20 | # The build needs the Go source, so the context is the repository root. | ||
| 21 | context: ../.. | ||
| 22 | dockerfile: deploy/docker/Dockerfile | ||
| 23 | image: vole:local | ||
| 24 | restart: unless-stopped | ||
| 25 | ports: | ||
| 26 | - "2222:2222" | ||
| 27 | - "127.0.0.1:8080:8080" | ||
| 28 | volumes: | ||
| 29 | - vole-data:/var/lib/vole | ||
| 30 | - ./vole.toml:/etc/vole/vole.toml:ro | ||
| 31 | healthcheck: | ||
| 32 | test: ["CMD", "curl", "-fsS", "-o", "/dev/null", "http://127.0.0.1:8080/healthz"] | ||
| 33 | interval: 30s | ||
| 34 | timeout: 5s | ||
| 35 | retries: 3 | ||
| 36 | start_period: 10s | ||
| 37 | |||
| 38 | volumes: | ||
| 39 | vole-data: | ||