Val av gratis on-prem git-server - Gitea är vinnaren!

Försöker välja en bra öppen källkod git-server

Sidinnehåll

Vill du flytta dina projekt bort från öppna molnbaserade git-leverantörer och funderar på att självhosta en intern git-server lokalt?

gitea-site

Val av servrar

Att köra sin egen git-server borde inte vara för svårt, eller?

Nu gäller det att välja en gratis git-server från en väldigt kort lista med alternativ. Bonobo Gogs vs Gitea vs Gitlab.

Bonobo är gratis men för Windows, och har ingen Linux-version.

Gitlab är funktionell och resurskrävande, det är en hands-on upplevelse. Det är ett kommersiellt produkt men har en gratis version också.

Gogs är väldigt lättviktigt, jag har testat det och det fungerade bra, men det saknar ett container-register.

Jämförelsen gynnar Gitea i mina ögon.

Både Gitea och Postgresql i container

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

sen

docker-compose up -d

gå till http://localhost:3000/

för att stänga av

docker-compose down

volymerna kommer att finnas kvar

Resursanvändning

Resursstatistik för containrar

Visar att containrarna använder 260MB RAM och lite CPU.

Statistik för Docker-images

Docker-images storlek totalt 583MB. Varav 422MB är postgres:14 image. postgres:14-alpine image upptar 239MB, kanske fungerar om resurserna är begränsade.

PS. Efter att ha migrerat 10+ repos till gitea, något forka och klona använder gitea-container ensam 420MB RAM nu. Man måste hålla ett öga på det.

Synkronisera två repos

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

Kan göra push och pull.

pull

  • Välj Ny migration i menyn Skapa… uppe till höger.
  • Välj tjänsten för det externa repositoryt.
  • Ange en repository-URL.
  • Om repositoryt kräver autentisering fyll i din autentiseringsinformation.
  • Kryssa i rutan Detta repository kommer att vara en spegel.
  • Välj Migrera repository för att spara konfigurationen.

Repositoryt synkroniseras nu periodiskt från det externa repositoryt. Du kan tvinga en synkronisering genom att välja Synkronisera nu i repository-inställningarna.

Kan bara ställa in pull-spegling för repos som inte finns ännu på din instans. När repositoryt har skapats kan du inte längre konvertera det till en pull-spegel.

Https-konfiguration

Det finns mer i ssl-konfigurationen: https://docs.gitea.com/next/administration/https-setup

men vi testar detta för tillfället (tagen från gitea-sidan):

Använda den inbyggda servern

Innan du aktiverar HTTPS, se till att du har giltiga SSL/TLS-certifikat. Du kan använda självgenererade certifikat för utvärdering och testning. Kör gärna

gitea cert --host [HOST]

för att generera ett självsignerat certifikat.

Om du använder Apache eller nginx på servern, rekommenderas det att kontrollera guide för reverse proxy.

För att använda Giteas inbyggda HTTPS-stöd måste du ändra din app.ini-fil:

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

Observera att om ditt certifikat är signerat av en tredje parts certifikatmyndighet (dvs. inte självsignerat), då ska cert.pem innehålla certifikatkedjan. Servercertifikatet måste vara den första posten i cert.pem, följt av mellanled i ordning (om några). Rotcertifikatet behöver inte inkluderas eftersom den anslutande klienten redan måste ha det för att etablera förtroenderelationen. För att lära dig mer om konfigureringsvärdena, kolla gärna Konfigurationskortet.

För CERT_FILE eller KEY_FILE-fältet är filvägen relativ till GITEA_CUSTOM-miljövariabeln när det är en relativ väg. Det kan också vara en absolut väg.

Inställning av HTTP-omdirigering Gitea-servern kan bara lyssna på en port; för att omdirigera HTTP-förfrågningar till HTTPS-porten måste du aktivera HTTP-omdirigeringstjänsten:

[server]
REDIRECT_OTHER_PORT = true
; Port som omdirigeringstjänsten ska lyssna på
PORT_TO_REDIRECT = 3080

Om du använder Docker, se till att den här porten är konfigurerad i din docker-compose.yml-fil.

Använda reverse proxy

I den här posten: Gitea-ssl konfigurerar jag Apache som TLS-avslutande reverse proxy.

Att göra

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

testa backup-restaura.

Användbara länkar