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/entrypoint.sh +15

@@ -0,0 +1,15 @@
1 #!/bin/sh
2 # Entrypoint for the Vole container.
3 #
4 # A package installs an instance and then starts it. An image cannot install at
5 # run time, so the first process does the part that has to happen once: creating
6 # the database and the repository tree the configuration names. `vole admin init`
7 # is idempotent, so running it on every start changes nothing after the first.
8 set -eu
9
10 vole admin init --config "$VOLE_CONFIG" >/dev/null
11
12 # `docker run <image> admin account list` runs that command instead of the
13 # server, which is how accounts, repositories, and backups are made in a
14 # container.
15 exec vole "$@"