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.

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: