Gitblit auf Ubuntu installieren

Wie installiert man einen Gitblit Server unter Ubuntu, so dass dieser automatisch die Benutzer von Linux über PAM einbindet und automatisch beim Hochfahren gestartet wird?

Ganz einfach. Befolge folgende Schritte und du hast in kürzester Zeit einen Gitblit Server am Start.

Vorbedingungen

  • Java 8 oder äquivalente JVM ist installiert.
  • Du verfügst über sudo Rechte
  • Du hast auf den Ubuntu Server/Rechner Zugriff über ssh oder ein Terminal

Anleitung

Download und Installation

Lade das Gitblit GO für Linux/OSC unter Gitblit herunter. Aktuell (Stand Oktober 2016) ist das der Download Link: http://dl.bintray.com/gitblit/releases/gitblit-1.8.0.tar.gz

Lade es über wget herunter:

user@host:~$ wget http://dl.bintray.com/gitblit/releases/gitblit-1.8.0.tar.gz

Kopiere den Tar-Ball in das Verzeichnis opt:

user@host:~$ sudo cp gitblit-1.8.0.tar.gz /opt/

Wechsle in das opt Verzeichnis:

user@host:~$ cd /opt

Entpacke den Tar-Ball:

user@host:/opt$ sudo tar -xvf gitblit-1.8.0.tar.gz

Symlink erstellen:

user@host:/opt$ sudo ln -s /opt/gitblit-1.8.0 /opt/gitblit

gitblit user die Rechte an dem Gitblit Verzeichnis sowie dem Symlink geben:

user@host:/opt$ sudo chown -R gitblit:gitblit /opt/gitblit-1.8.0
user@host:/opt$ sudo chown -R gitblit:gitblit /opt/gitblit

Benutzer korrekt einrichten

Für den Gitblit Server Dienst muss ein “gitblit” Benutzer eingerichtet werden, da das Service Script so einen Benutzer erwartet.

Dabei befolgt man nachfolgende Schritte.

Benutzer als System Benutzer anlegen:

user@host:/opt$ sudo adduser --system --shell /bin/bash --home /opt/gitblit/data gitblit

Eine Gitblit Gruppe anlegen:

user@host:/opt$ sudo addgroup gitblit

Den Benutzer der Gitblit Gruppe zuweisen:

user@host:/opt$ sudo addgroup gitblit gitblit

Für PAM Authentication Gitblit User zu Gruppe shadow hinzufügen:

user@host:/opt$ sudo addgroup gitblit shadow

Dienst einrichten

Damit der Gitblit Server automatisch hochfährt sollte man ihn noch als Dienst einrichten.

In das Verzeichnis /opt/gitblit/ wechseln:

user@host:/opt$ cd /opt/gitblit

Dort das Skript install-service-ubuntu.sh ausführen:

user@host:/opt/gitblit$ sudo ./install-service-ubuntu.sh

Damit wird der Gitblit Server als Dienst eingerichtet.

Konfiguration von Gitblit

Wie Gitblit auf PAM zugreifen kann wird sehr gut unter http://gitblit.com/setup_authentication.html dokumentiert.

Wie die SSH Zertifikate eingerichtet werden können wird sehr gut unter http://gitblit.com/setup_go.html beschrieben. Einziger Nachteil ist hier, dass man ein X-Windows braucht.

Kurzanleitung für PAM

Unter /etc/pam.d/ eine Datei gitblit anlegen:

user@host:/opt$ sudo vim /etc/pam.d/gitblit

Folgenden Inhalt hinzufügen:

1
2
3
# PAM configuration for the gitblit service
# Standard Un*x authentication.
@include common-auth

Das neue PAM Config File in den gitblit.properties (Zeile 31, 32) referenzieren:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#
# GITBLIT.PROPERTIES
#
# Define your custom settings in this file and/or include settings defined in
# other properties files.
#

# Include Gitblit's 'defaults.properties' within your configuration.
#
# NOTE: Gitblit will not automatically reload "included" properties.  Gitblit
# only watches the 'gitblit.properties' file for modifications.
#
# Paths may be relative to the ${baseFolder} or they may be absolute.
#
# COMMA-DELIMITED
# SINCE 1.7.0
include = defaults.properties

#
# Define your overrides or custom settings below
#
server.storePassword = <passwort>

git.packedGitLimit = 150m

web.siteName = <Host Name>

server.certificateAlias = <Vollqualifizierter Host Name im Netz>

# Authentication
realm.authenticationProviders = pam
realm.pam.serviceName = gitblit

Server Starten

Den Server dann starten mit folgendem Befehl:

user@host:/opt$ sudo /etc/init.d/gitblit start

Trouble Shooting

Log File Analyse des Gitblit Servers mit dem less Befehl:

user@host:/opt$ less /opt/gitblit/data/logs/gitblit.log

Log File Analyse des Ubuntu Dienstes:

user@host:/opt$ less /var/log/syslog