Kiezen voor een gratis on-prem git-server – Gitea is de winnaar!

Proberen een goede opensource git-server te kiezen

Inhoud

Wil je je projecten verplaatsen van open cloud git providers en overwegen om een intern git-server lokaal te self-hosten?

gitea-site

Kiezen van servers

Een eigen git-server draaien zou toch niet te moeilijk moeten zijn, toch?

Nu kiezen we een gratis git-server uit een zeer korte lijst van opties. Bonobo Gogs vs Gitea vs Gitlab.

Bonobo is gratis, maar alleen voor Windows en heeft geen Linux-versie.

Gitlab is functierijk en resource-intensief, dat is een handmatige ervaring. Het is een commercieel product, maar heeft ook een gratis versie .

Gogs is zeer lichtgewicht, ik heb het geprobeerd en het werkte goed, maar het mist een container register.

De vergelijking gun me Gitea in mijn ogen.

Zowel Gitea als Postgresql dockerized

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

dan

docker-compose up -d

navigeer naar http://localhost:3000/

om af te sluiten

docker-compose down

de volumes blijven bestaan

Resourcegebruik

Resource containers stats

Hiermee tonen de containers 260MB RAM en een beetje CPU.

Docker images stats

Docker image grootte is in totaal 583MB. 422MB daarvan is de postgres:14 image. De postgres:14-alpine image neemt 239MB in beslag, kan ook werken als bronnen beperkt zijn.

PS. Na het migreren van 10+ repos naar gitea, sommige forking en clonning van de gitea container alleen gebruikt nu 420MB RAM. Je moet hierop letten.

Twee repos synchroniseren

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

Je kunt pushen en trekken.

trekken

  • Selecteer Nieuwe migratie in het menu Aanmaken… in de rechterbovenhoek.
  • Selecteer de externe repository service.
  • Voer de repository URL in.
  • Als de repository authenticatie vereist, vul dan je authenticatiegegevens in.
  • Vink het vakje Deze repository wordt een spiegel.
  • Selecteer Repository migreren om de configuratie op te slaan.

De repository wordt nu periodiek gespiegeld vanaf de externe repository. Je kunt een synchronisatie dwingen door Synchroniseer nu te selecteren in de repositoryinstellingen.

Je kunt alleen pull-spiegeling instellen voor repositories die nog niet bestaan op je instantie. Zodra de repo is aangemaakt, kun je deze niet meer converteren naar een pull-spiegel.

Https configuratie

Er is meer in de ssl configuratie: https://docs.gitea.com/next/administration/https-setup

maar we proberen dit nu (gehaald van de gitea site):

Gebruik van de ingebouwde server

Voordat je HTTPS inschakelt, zorg er dan voor dat je geldige SSL/TLS-certificaten hebt. Je kunt zelf gegenereerde certificaten gebruiken voor evaluatie en testen. Voer alsjeblieft uit

gitea cert --host [HOST]

om een zelfondertekend certificaat te genereren.

Als je Apache of nginx gebruikt op de server, wordt aanbevolen om de omgekeerde proxy gids te controleren.

Om de ingebouwde HTTPS-ondersteuning van Gitea te gebruiken, moet je je app.ini-bestand aanpassen:

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

Let op dat als je certificaat is ondertekend door een derde partij certificaatautoriteit (dus niet zelfondertekend), dan moet cert.pem de certificaatketen bevatten. Het servercertificaat moet het eerste item zijn in cert.pem, gevolgd door de tussenliggers in volgorde (indien van toepassing). Het wortelcertificaat hoeft niet opgenomen te worden, omdat de verbindingende client het al moet hebben om de vertrouwensrelatie op te bouwen. Voor meer informatie over de configuratieopties, raadpleeg de Config Cheat Sheet.

Voor het veld CERT_FILE of KEY_FILE is de bestandslocatie relatief ten opzichte van de GITEA_CUSTOM omgevingsvariabele als het een relatief pad is. Het kan ook een absolute pad zijn.

Instellen van HTTP-omleiding De Gitea-server kan alleen luisteren naar één poort; om HTTP-aanvragen om te leiden naar de HTTPS-poort, moet je de HTTP-omleidingsdienst inschakelen:

[server]
REDIRECT_OTHER_PORT = true
; Poort waarop de omleidingsdienst moet luisteren
PORT_TO_REDIRECT = 3080

Als je Docker gebruikt, zorg er dan voor dat deze poort is ingesteld in je docker-compose.yml-bestand.

Gebruik van omgekeerde proxy

In dit bericht: Gitea-ssl configureer ik Apache als TLS-terminerende omgekeerde proxy.

Todo

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

back-up en herstel testen.