https://github.com/azamaulanaaa/gitit
A Lightweight HTTP Git Server for CI/CD
https://github.com/azamaulanaaa/gitit
cicd git
Last synced: 5 months ago
JSON representation
A Lightweight HTTP Git Server for CI/CD
- Host: GitHub
- URL: https://github.com/azamaulanaaa/gitit
- Owner: azamaulanaaa
- License: mit
- Created: 2025-05-18T08:37:23.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-11-20T20:55:19.000Z (7 months ago)
- Last Synced: 2025-11-20T22:22:58.643Z (7 months ago)
- Topics: cicd, git
- Language: Shell
- Homepage:
- Size: 44.9 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Gitit: A Lightweight SSH Git Server for CI/CD
Gitit is an extremely lightweight Docker image built on Alpine Linux and
**Dropbear SSH** to serve **bare Git repositories**. Its primary design goal is
to provide a minimalist, secure endpoint for **Continuous Integration/Continuous
Deployment (CI/CD)** workflows triggered by Git hooks.
## Features
- **Protocol:** Securely serves Git over **SSH (Dropbear)** using password
authentication.
- **Ultra-Lightweight:** Built on Alpine Linux with minimal dependencies for a
small footprint and fast startup.
- **Bare Repositories:** Designed to host bare repositories (`repo-name.git`),
the standard format for centralized Git remotes.
- **Automatic Initialization:** Automatically initializes empty directories as
bare repositories on startup.
- **Persistent Identity:** Host keys are externalized for **consistent server
identity** across restarts, preventing client errors.
---
## Deployment
### Prerequisites
- Docker or Podman installed on your system.
- The **`git`** user requires a strong password set via an environment variable.
### Running the Container
Gitit requires volumes for **repository storage** and **SSH host key
persistence**.
```sh
docker run -d \
--name gitit \
-p 8022:22 \
-v gitit_repos:/git \
-v gitit_keys:/etc/dropbear \
-e GIT_PASSWORD=YOUR_SECURE_PASSWORD \
ghcr.io/azamaulanaaa/gitit
```
## Usage
The repository user is always **`git`**. All repositories are accessed via the
path `/git/`.
### Cloning a New Repository
To clone a repository named `my-project.git`:
```sh
git clone ssh://git@:8022/git/my-project.git
```
### Pushing Changes
To push changes to the server:
```sh
# 1. Add Gitit as a remote
git remote add gitit ssh://git@:8022/git/my-project.git
# 2. Push the changes (you will be prompted for the GIT_PASSWORD)
git push gitit main
```