012345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
|
# Goit
A simple and lightweight Git web server.
Note that at present, compatibility between updates is not guaranteed.
## Features
- Git Smart HTTP protocol (v2 only)
- Git SSH protocol (using an external SSH server)
- Repository log, tree, refs, and commit viewers
- File viewer with syntax highlighting
- File log, blame, and raw views
- Public and private repositories
- Read and write permissions for non owners (planned)
- Repository importing and mirroring
## Usage
To build **Goit**, from the project root, run `make build`.
To run **Goit** with Podman, a command like the following should be used:
```sh
podman run -u 0:0 --userns keep-id:uid=973,gid=973 \
-v /GOIT/CONFIG/ON/HOST:/home/git/.config/goit:Z \
-v /GOIT/DATA/ON/HOST:/home/git/.local/share/goit:Z \
-v /GOIT/STATE/ON/HOST:/home/git/.local/state/goit:Z \
-v /GOIT/HOST/KEYS/ON/HOST:/etc/ssh/host_keys:Z \
-p 8080:8080 -p 2222:22 --name goit goit:0.2.0
```
- `-u 0:0` is required to start the container as the root user, to run OpenSSH.
- Goit runs as the `git` user with UID 973 inside the container.
- UID 973 is mapped to the host user with `--userns`, for file permissions.
- Directories for config, data, and state can (optionally) be mapped to
directories on the host for persistence.
- Config is stored at `/home/git/.config/goit` inside the container.
- Data is stored at `/home/git/.local/share/goit` inside the container.
- State is stored at `/home/git/.local/state/goit` inside the container.
- Host keys are stored at `/etc/ssh/host_keys/etc/ssh` inside the container,
mounting a host directory at this location will persist SSH keys.
- The port 8080 is exposed inside the container for HTTP.
- The port 22 is exposed inside the container for SSH.
## Meta
Copyright (C) 2023, Jakob Wakeling
All rights reserved.
|