#git #git-repository #setup #server #self-hosted #set #up

app eejit

A self-hosted Git server that's easy to set up, use, and maintain

9 releases

0.2.1 Apr 20, 2023
0.2.0 Apr 15, 2023
0.1.6 Apr 15, 2023

#35 in #self-hosted

MIT license

30KB
730 lines

Eejit

Eejit is self-hosted Git server that's easy to set up, use, and maintain.

Getting Started

  • Install via cargo || source.
  • Create an empty directory, and create a starting server.toml file (minimal example below).
  • Run Eejit.
  • Done!

Server Config

Eejit is configured via the server.toml file inside the /config.git repo, which is only accessible to admin users. When starting Eejit for the first time, it will copy an adjacent config file into the newly created config repo. Here's a minimal example:

name = "Eejit Server"
port = 2222

hostname = "example.com"

[users.claudia]
is_admin = true
public_key = "ssh-rsa AAAAj74s..."

[users.alex]
can_create_repos = true
public_key = "ssh-rsa AAAAm8fd..."

# Optional.
welcome_message = "Welcome, %!"

Repositories

You can create a new repository on an Eejit server by simply pushing an existing one. Non-admin users can only create repos under their personal subdirectory (so for example, the user Alex above could push to ssh://127.0.0.1:2222/alex/repo.git to create it).

When a new repository is created, Eejit will insert an eejit.toml config file into it. There, the user can specify if the repo is public, and which other members can write to it. Here's a minimal example:

name = "Example Repo"

# Anyone can read...
public = true

# But only Alex can write...
members = ["alex"]

# Anyone else will see this message (OPTIONAL)
failed_push_message = "Patches can be emailed to alex@alex.alex"

Static Site Generator

Eejit comes with a simple static site generator, which generates a webpage out of any public repository with a README.md file. The generated pages are saved to the static directory, and reflect the repo path/name. There's a default Tera template, or you can define your own with the web_template option in the repo config.

Dependencies

~24–37MB
~623K SLoC