0 # Gemigit
1
2 A software forge for the gemini protocol
3
4 ## Features
5
6 * Allow users to create and manage git repositories
7 * Private and public repositories
8 * Serving git repositories on the http and ssh protocols
9 * LDAP authentication
10 * 2FA with time-based one-time passwords
11 * Option to use token authentication when doing git operations
12 * Basic brute-force protection
13 * User groups
14 * Privilege system for read/write access
15 * Support for sqlite and mysql databases
16 * Support stateless mode for multiple instances and load balancing
17
18 ## Requirements
19
20 * go (at compile-time)
21 * git (at run-time)
22 * openssl (to create certificate)
23
24 ### Fedora, RedHat
25 ```
26 dnf install git golang openssl
27 ```
28
29 ### Debian, Ubuntu
30 ```
31 apt install git golang openssl
32 ```
33
34 ## Setup
35
36 * Build the program with the following command :
37 ```
38 go build
39 ```
40 * Copy config.yaml into either /etc/gemigit, /usr/local/etc/gemigit or the working directory where Gemigit will be executed
41 * Create a new certificate with the following command, you can change localhost to the domain name you want to use :
42 ```
43 openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes -subj '/CN=localhost'
44 ```
45 * Edit the configuration file as you want
46 * Execute gemigit
47
48 On Linux, Gemigit can be run as a systemd service :
49 ```
50 adduser -d /var/lib/gemigit -m -U gemigit
51 cp service/gemigit.service /etc/systemd/system/
52 go build
53 cp gemigit /usr/bin/gemigit
54 mkdir /etc/gemigit
55 cp config.yaml /etc/gemigit/
56 openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes -subj '/CN=localhost'
57 cp *.pem /var/lib/gemigit/
58 cp -r ./templates /var/lib/gemigit/
59 chown -R gemigit:gemigit /var/lib/gemigit
60 systemctl enable --now gemigit
61 ```
62