Benutzer-Werkzeuge

Webseiten-Werkzeuge


git

Inhaltsverzeichnis

Git hosten

Für das „normale“ Git benötigt man eigentlich gar nichts. Über SSH und die Kommandozeilenwerkzeuge kann man so ziemlich alles machen. Hier geht es allerdings um eine schöne Web-Oberfläche.

Einige Anmerkungen:

  • Gitlab ist komplex, langsam
  • CGit und Gitweb sind zu minimalistisch
  • Gitea (https://gitea.io/) scheint vielversprechend.

Gitea

Merker! Unvollständig!

apt-get install git mariadb-server

adduser --system --shell /bin/bash --gecos 'Gitea Server' \
   --group --disabled-password --home /srv/gitea \
   gitea

mysql
CREATE DATABASE gitea;
GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY '********';

cd
wget https://github.com/go-gitea/gitea/releases/download/v1.15.8/gitea-1.15.8-linux-amd64.xz
apt-get install xz-utils
xz --decompress gitea-1.15.8-linux-amd64.xz
mv gitea-1.15.8-linux-amd64 /usr/local/bin/gitea
chmod +x /usr/local/bin/gitea

Test und Vorkonfiguration

gitea --version

mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}

chown gitea:gitea /var/lib/gitea/{data,indexers,log}
chmod 750 /var/lib/gitea/{data,indexers,log}
chown root:gitea /etc/gitea
chmod 770 /etc/gitea

Erster Start

GITEA_CUSTOM=/var/lib/gitea/custom /usr/local/bin/gitea web -c /etc/gitea/app.ini
CTRL-C

Konfigurationsdatei dem Benutzer zuweisen

chown gitea /etc/gitea/app.ini

Konfigurationsdatei

/etc/gitea/app.ini
APP_NAME = Example Gitea
RUN_USER = gitea
RUN_MODE = prod
 
[server]
DOMAIN = gitea.example.com
ROOT_URL = http://gitea.example.com/

Apache-Konfiguration für einen virtuellen Host erstellen. Dabei zuerst nur den Part für den Port 80 aktivieren. Dann ein Let's Encrypt-Zertifikat erstellen und anschließend den Port 443 einschalten.

/etc/apache2/sites-available/gitea.conf
<VirtualHost *:80>
	ServerName gitea.example.com
	ServerAdmin webmaster@example.com
	DocumentRoot /var/www/html
	Alias "/.well-known/acme-challenge" "/var/www/lets_encrypt/challenges"
	RedirectMatch Permanent ^(?!/\.well-known/).* https://gitea.example.com
	CustomLog ${APACHE_LOG_DIR}/gitea_access.log combined
	ErrorLog ${APACHE_LOG_DIR}/gitea_error.log
	LogLevel warn
</VirtualHost>
<VirtualHost *:443>
	ServerName gitea.example.com
	ServerAdmin webmaster@example.com
	DocumentRoot /var/www/html
 
	ProxyPreserveHost On
	ProxyRequests off
	AllowEncodedSlashes NoDecode
	ProxyPass / http://localhost:3000/ nocanon
 
        CustomLog ${APACHE_LOG_DIR}/gitea_access.log combined
        ErrorLog ${APACHE_LOG_DIR}/gitea_error.log
 
        SSLEngine on
        SSLProtocol all -SSLv2 -SSLv3
        SSLHonorCipherOrder on
        SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
 
        SSLCertificateFile /etc/ssl/certs/gitea.crt
        SSLCertificateKeyFile /etc/ssl/private/gitea.key
 
</VirtualHost>

Site aktivieren

a2ensite gitea
service apache2 reload

TODO

  • Die Pfade und Verzeichnisse sind noch nicht zu 100% so wie es sein soll vermutlich
  • Init-Skript fehlt

Achtung: Das folgende Script ist noch nicht vollständig entwickelt!

/etc/init.d/gitea
#! /bin/sh
### BEGIN INIT INFO
# Provides:          gitea
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Gitea server
# Description:       Start the Gitea server
### END INIT INFO
 
NAME=gitea
PIDFILE=/run/$NAME.pid
DAEMON=/usr/local/bin/$NAME
DAEMON_ARGS="web -q -c /etc/gitea/app.ini -w /var/lib/gitea -C /var/lib/gitea/custom"
 
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
 
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
 
# Define LSB log_* functions.
. /lib/lsb/init-functions
 
do_start()
{
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
		|| return 1
 
        start-stop-daemon --chuid gitea:gitea --start -m --pidfile $PIDFILE --background --exec $DAEMON -- $DAEMON_ARGS \
		|| return 2
}
 
do_stop()
{
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
	RETVAL="$?"
	[ "$RETVAL" = 2 ] && return 2
	rm -f $PIDFILE
	return "$RETVAL"
}
 
case "$1" in
    start)
	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
	do_start
	case "$?" in
	    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
	    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
    stop)
	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
	do_stop
	case "$?" in
	    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
	    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
    status)
       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
       ;;
    restart|force-reload)
	log_daemon_msg "Restarting $DESC" "$NAME"
	do_stop
	case "$?" in
	    0|1)
		do_start
		case "$?" in
		    0) log_end_msg 0 ;;
		    1) log_end_msg 1 ;; # Old process is still running
		    *) log_end_msg 1 ;; # Failed to start
		esac
		;;
	    *)
		# Failed to stop
		log_end_msg 1
		;;
	esac
	;;
    *)
	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
	exit 3
	;;
esac
 
exit 0

Starten von Gitea, anschließend die Webseite aufrufen.

Einstellungen

Repository-Verzeichnis
/var/lib/gitea/data/repositories

Git-LFS-Wurzelpfad
/var/lib/gitea/data/lfs

Logdateipfad
/var/lib/gitea/log


Optionale Einstellungen

Email-Einstellungen
SMTP-Server localhost
E-Mail senden als gitea@example.com

Administratoreinstellungen
Administrator-Benutzername admin

Update

Prinzipiell erfolgt das Update wie folgt

  1. Anhalten des Prozesses
  2. Herunterladen und entpacken der neuen Version
  3. Ersetzen der alten Version durch die neue
  4. Starten des Prozesses
wget https://github.com/go-gitea/gitea/releases/download/v1.16.9/gitea-1.16.9-linux-amd64.xz
xz --decompress gitea-1.16.9-linux-amd64.xz
 
/etc/init.d/gitea stop
mv gitea-1.16.9-linux-amd64 /usr/local/bin/gitea
chmod +x /usr/local/bin/gitea
/etc/init.d/gitea start
git.txt · Zuletzt geändert: 24.08.2022 16:04 von thooge

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki