Die Wahl eines kostenlosen on-prem Git-Server – Gitea ist der Sieger!

Gute opensource Git-Server auswählen

Inhaltsverzeichnis

Möchten Sie Ihre Projekte von offenen Cloud-Git-Anbietern abziehen und stattdessen einen internen Git-Server lokal selbst hosten?

gitea-site

Serverauswahl

Einen eigenen Git-Server zu betreiben, sollte nicht zu schwierig sein, oder?

Nun wähle ich einen kostenlosen Git-Server aus einer sehr kurzen Liste von Optionen aus. Bonobo Gogs vs Gitea vs Gitlab.

Bonobo ist zwar kostenlos, aber nur für Windows verfügbar und hat keine Linux-Version.

Gitlab ist zwar reich an Funktionen, benötigt aber viele Ressourcen. Es ist ein kommerzielles Produkt, hat aber ebenfalls eine kostenlose Version.

Gogs ist sehr leichtgewichtig, ich habe es ausprobiert und es hat gut funktioniert, fehlt aber eine Container-Registrierung.

Die Vergleichsseite spricht meiner Meinung nach Gitea besonders gut.

Beide, Gitea und Postgresql in Docker

https://docs.gitea.com/next/installation/install-with-docker

cd ~
mkdir gitea
cd gitea

docker-compose.yml:

version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=gitea
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
    depends_on:
      - db

  db:
    image: postgres:14
    restart: always
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=gitea
      - POSTGRES_DB=gitea
    networks:
      - gitea
    volumes:
      - ./postgres:/var/lib/postgresql/data

dann

docker-compose up -d

navigieren Sie zu http://localhost:3000/

um zu beenden

docker-compose down

die Volumes bleiben bestehen

Ressourcenverbrauch

Ressourcencontainer-Statistiken

Die Container benötigen 260 MB RAM und etwas CPU.

Docker-Images-Statistiken

Die Docker-Images haben insgesamt eine Größe von 583 MB. Von diesen 422 MB ist das postgres:14-Image. Das postgres:14-alpine-Image benötigt 239 MB und könnte ebenfalls funktionieren, wenn Ressourcen begrenzt sind.

PS. Nach dem Migrieren von mehr als 10 Repos zu Gitea, ist der Forking und Cloning des Gitea-Containers allein jetzt auf 420 MB RAM. Man sollte dies im Auge behalten.

Zwei Repos synchronisieren

https://docs.gitea.com/next/usage/repo-mirror

Es können Push und Pull durchgeführt werden.

Pull

  • Wählen Sie „Neue Migration“ im Menü „Erstellen…“ oben rechts aus.
  • Wählen Sie den Remote-Repository-Dienst aus.
  • Geben Sie die Repository-URL ein.
  • Falls der Repository-Authentifizierung benötigt, füllen Sie Ihre Authentifizierungsdaten aus.
  • Aktivieren Sie das Kästchen „Dieser Repository wird ein Spiegel“.
  • Wählen Sie „Repository migrieren“, um die Konfiguration zu speichern.

Der Repository wird nun periodisch vom Remote-Repository gespiegelt. Sie können eine Synchronisierung erzwingen, indem Sie „Jetzt synchronisieren“ in den Repository-Einstellungen auswählen.

Es kann nur ein Pull-Spiegel für Repos eingerichtet werden, die noch nicht auf Ihrer Instanz existieren. Sobald der Repo erstellt wurde, kann er nicht mehr in einen Pull-Spiegel umgewandelt werden.

HTTPS-Konfiguration

Es gibt mehr in der SSL-Konfiguration: https://docs.gitea.com/next/administration/https-setup

aber wir probieren das jetzt erst einmal (entnommen von der Gitea-Website):

Mit dem integrierten Server

Bevor Sie HTTPS aktivieren, stellen Sie sicher, dass Sie gültige SSL/TLS-Zertifikate haben. Für die Evaluierung und Tests können Sie selbst generierte Zertifikate verwenden. Führen Sie bitte folgenden Befehl aus:

gitea cert --host [HOST]

um ein selbstsigniertes Zertifikat zu generieren.

Wenn Sie Apache oder nginx auf dem Server verwenden, wird empfohlen, den Leitungsproxy-Leitfaden zu prüfen.

Um die integrierte HTTPS-Unterstützung von Gitea zu verwenden, müssen Sie Ihre app.ini-Datei ändern:

[server]
PROTOCOL  = https
ROOT_URL  = https://git.example.com:3000/
HTTP_PORT = 3000
CERT_FILE = cert.pem
KEY_FILE  = key.pem

Hinweis: Wenn Ihr Zertifikat von einem Drittanbieter-Zertifizierungsstellen (also nicht selbstsigniert) unterzeichnet wird, sollte cert.pem die Zertifikatskette enthalten. Das Serverzertifikat muss der erste Eintrag in cert.pem sein, gefolgt von den Zwischenzertifikaten in der Reihenfolge (falls vorhanden). Das Stammzertifikat muss nicht enthalten sein, da der verbindende Client es bereits haben muss, um die Vertrauensbeziehung herzustellen. Um mehr über die Konfigurationswerte zu erfahren, prüfen Sie bitte die Konfigurationshilfe.

Für das Feld CERT_FILE oder KEY_FILE ist der Dateipfad relativ zum GITEA_CUSTOM-Umgebungsvariablen, wenn es sich um einen relativen Pfad handelt. Es kann auch ein absoluter Pfad sein.

Einrichten der HTTP-Weiterleitung Der Gitea-Server kann nur auf einen Port hören; um HTTP-Anfragen auf den HTTPS-Port umzuleiten, müssen Sie den HTTP-Weiterleitungs-Service aktivieren:

[server]
REDIRECT_OTHER_PORT = true
; Port, auf dem der Weiterleitungs-Service lauschen soll
PORT_TO_REDIRECT = 3080

Wenn Sie Docker verwenden, stellen Sie sicher, dass dieser Port in Ihrer docker-compose.yml-Datei konfiguriert ist.

Mit Umleitungsserver

In diesem Beitrag: Gitea-ssl konfiguriere ich Apache als TLS-terminierenden Umleitungsserver.

Todo

SSH-Konfiguration: https://docs.gitea.com/next/installation/install-with-docker

Backup-Restore-Test.