Die Wahl eines kostenlosen on-prem Git-Server – Gitea ist der Sieger!
Gute opensource Git-Server auswählen
Möchten Sie Ihre Projekte von offenen Cloud-Git-Anbietern abziehen und stattdessen einen internen Git-Server lokal selbst hosten?
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
Die Container benötigen 260 MB RAM und etwas CPU.
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.