Go Back

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