SelfHost Hub SelfHost Hub
中文
← Back to all services

GitHub repository information

Fetched · June 5, 2026
★ 45 Latest: v2.1.15 Updated: May 28, 2026
README
# minimal-git-server
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![Tag](https://img.shields.io/github/v/tag/mcarbonne/minimal-git-server)](https://github.com/mcarbonne/minimal-git-server/tags)
[![Stars](https://img.shields.io/github/stars/mcarbonne/minimal-git-server.svg)](https://github.com/mcarbonne/minimal-git-server)

Originally inspired by https://github.com/jkarlosb/git-server-docker

This tool lets you run a minimal git server with a basic CLI to manage repositories, all in a container based on a single configuration file.

## Features
- support multiple accounts (config.yml)
- basic CLI to manage repositories (list/create/rename/remove/...)
- easy to use in scripts
- tested on docker and podman

## Versioning and packaging
This tool follows [semantic versioning](https://semver.org/).

Pre-built images are available on github packages:
- `ghcr.io/mcarbonne/minimal-git-server:main` (`main` branch)
- `ghcr.io/mcarbonne/minimal-git-server:dev` (`dev` branch)
- `ghcr.io/mcarbonne/minimal-git-server:latest`: latest tagged version
- `ghcr.io/mcarbonne/minimal-git-server:x.x.x`
- `ghcr.io/mcarbonne/minimal-git-server:x.x`
- `ghcr.io/mcarbonne/minimal-git-server:x`

For automatic updates ([watchtower](https://github.com/containrrr/watchtower), [podman-auto-update](https://docs.podman.io/en/latest/markdown/podman-auto-update.1.html)...), using the lastest major tag available (`ghcr.io/mcarbonne/minimal-git-server:2`) is recommanded to avoid breaking changes.

## Minimal configuration

This container requires 3 volumes in order to work:
- `/srv/ssh` to persist generated server keys
- `/srv/git` to store repositories
- `/srv/config.yml` to set up accounts, allowed public keys...

```
docker run -v .../ssh:/srv/ssh -v .../git:/srv/git -v .../config.yml:/srv/config.yml:ro \
        --name minimal-git-server -d -p 20222:22 ghcr.io/mcarbonne/minimal-git-server:2
```


## config.yml

```yaml
external_hostname: localhost
external_port: 20222
accounts:
  - user: user_a
    uid: 12345
    keys:
      - "ssh-rsa XXXXXX user_a@gmail.com"
      - "ssh-rsa XXXXXX user_a@hotmail.com"
  - user: user_b
[...]
```


## Basic Usage
To manage your repositories, simply log in:
![Basic Usage](doc/basic-usage.png)

## How to script ?
You can easily embed any supported command in your scripts:
```console
$ ssh ACCOUNT@HOSTNAME -p PORT create project1/my_repo
```
Have a look at `test.sh` for more examples.

Discover more