detached b7fa16d

docs: document ermite serve and its environment

commit
b7fa16d51ebdf1eb96100e87c0c4650a560d0e66
author
brice · · 2026-10-10 06:17 UTC
parent
251be53
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
1 file · +35 -1
M README.md +35 -1
@@ -2,7 +2,30 @@
22
33 A single-user Git forge in one Go binary. ermite hosts bare repositories, serves clone and push over HTTPS, and shows them in a read-only web interface.
44
5-Status: early development, not usable yet.
5+Status: early development, not usable yet. `ermite serve` starts, opens its metadata store, reconciles the repositories on disk and answers `GET /-/health`.
6+
7+## Run
8+
9+```sh
10+export ERMITE_DATA_DIR=/var/lib/ermite
11+export ERMITE_PUBLIC_URL=https://git.example.com
12+export ERMITE_ADMIN_TOKEN=$(head -c 32 /dev/urandom | base64)
13+ermite serve
14+```
15+
16+| Variable | Default | Notes |
17+|---|---|---|
18+| `ERMITE_DATA_DIR` | required | absolute path of the data root |
19+| `ERMITE_PUBLIC_URL` | required | `http(s)` base URL, no path |
20+| `ERMITE_ADMIN_TOKEN` | required | at least 32 characters |
21+| `ERMITE_ADDR` | `:7341` | listen address |
22+| `ERMITE_TRUSTED_PROXIES` | empty | comma-separated CIDRs |
23+| `ERMITE_GIT` | `git` | git 2.45 or newer |
24+| `ERMITE_SOURCE_URL` | `$ERMITE_PUBLIC_URL/ermite` | link to the source (AGPL) |
25+| `ERMITE_LOG_LEVEL` | `info` | `trace`, `debug`, `info`, `warn`, `error` |
26+| `ERMITE_LOG_FORMAT` | `json` | `json` or `console` |
27+
28+`ermite version` prints the version.
629
730 ## Build
831
@@ -11,6 +34,17 @@ go build ./cmd/ermite
1134 go test ./...
1235 ```
1336
37+## Develop
38+
39+Tools are pinned in `go.mod`:
40+
41+```sh
42+go tool buf lint
43+go tool buf generate # proto/ -> gen/
44+go generate ./... # mockery mocks of the ports
45+go tool hexcheck -fail-on warn ./...
46+```
47+
1448 ## License
1549
1650 AGPL-3.0-or-later. See [LICENSE](LICENSE).
@@ -2,7 +2,30 @@
2 2
3 A single-user Git forge in one Go binary. ermite hosts bare repositories, serves clone and push over HTTPS, and shows them in a read-only web interface.3 A single-user Git forge in one Go binary. ermite hosts bare repositories, serves clone and push over HTTPS, and shows them in a read-only web interface.
4 4
5-Status: early development, not usable yet.5+Status: early development, not usable yet. `ermite serve` starts, opens its metadata store, reconciles the repositories on disk and answers `GET /-/health`.
6+
7+## Run
8+
9+```sh
10+export ERMITE_DATA_DIR=/var/lib/ermite
11+export ERMITE_PUBLIC_URL=https://git.example.com
12+export ERMITE_ADMIN_TOKEN=$(head -c 32 /dev/urandom | base64)
13+ermite serve
14+```
15+
16+| Variable | Default | Notes |
17+|---|---|---|
18+| `ERMITE_DATA_DIR` | required | absolute path of the data root |
19+| `ERMITE_PUBLIC_URL` | required | `http(s)` base URL, no path |
20+| `ERMITE_ADMIN_TOKEN` | required | at least 32 characters |
21+| `ERMITE_ADDR` | `:7341` | listen address |
22+| `ERMITE_TRUSTED_PROXIES` | empty | comma-separated CIDRs |
23+| `ERMITE_GIT` | `git` | git 2.45 or newer |
24+| `ERMITE_SOURCE_URL` | `$ERMITE_PUBLIC_URL/ermite` | link to the source (AGPL) |
25+| `ERMITE_LOG_LEVEL` | `info` | `trace`, `debug`, `info`, `warn`, `error` |
26+| `ERMITE_LOG_FORMAT` | `json` | `json` or `console` |
27+
28+`ermite version` prints the version.
6 29
7 ## Build30 ## Build
8 31
@@ -11,6 +34,17 @@ go build ./cmd/ermite
11 go test ./...34 go test ./...
12 ```35 ```
13 36
37+## Develop
38+
39+Tools are pinned in `go.mod`:
40+
41+```sh
42+go tool buf lint
43+go tool buf generate # proto/ -> gen/
44+go generate ./... # mockery mocks of the ports
45+go tool hexcheck -fail-on warn ./...
46+```
47+
14 ## License48 ## License
15 49
16 AGPL-3.0-or-later. See [LICENSE](LICENSE).50 AGPL-3.0-or-later. See [LICENSE](LICENSE).

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 4

Tags 45

↑↓ moveenter openesc close