Elegir un servidor de git en premisas gratuito: Gitea es el ganador!

Intentando elegir un buen servidor de git de código abierto

Índice

¿Quieres mover tus proyectos lejos de proveedores de git en la nube abierta y estás pensando en alojar un servidor git interno localmente?

gitea-site

Elegir servidores

Ejecutar tu propio servidor git no debería ser demasiado difícil, ¿verdad?

Ahora, eligiendo un servidor git gratuito de una lista muy corta de opciones. Bonobo Gogs vs Gitea vs Gitlab.

Bonobo es gratuito, pero solo para Windows, y no tiene una versión para Linux.

Gitlab es rico en características y requiere muchos recursos, es una experiencia de uso activo. Es un producto comercial, pero tiene una versión gratuita también.

Gogs es muy ligero, lo he probado y funcionó bien, pero carece de un registro de contenedores.

La comparación favorece a Gitea a mis ojos.

Ambos Gitea y Postgresql dockerizados

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

luego

docker-compose up -d

navega a http://localhost:3000/

para apagar

docker-compose down

los volúmenes permanecerán

Uso de recursos

Estadísticas de contenedores de recursos

Mostrando que los contenedores consumen 260 MB de RAM y un poco de CPU.

Estadísticas de imágenes de Docker

Tamaño total de las imágenes de Docker: 583 MB. De los cuales 422 MB es la imagen postgres:14. La imagen postgres:14-alpine ocupa 239 MB, podría funcionar también si los recursos están limitados.

PS. Después de migrar más de 10 repositorios a gitea, algunos forkeos y clonados del contenedor gitea solo están usando ahora 420 MB de RAM. Debo mantener un ojo en ello.

Sincronizar dos repositorios

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

Puedes hacer push y pull.

pull

  • Selecciona Nueva migración en el menú Crear… en la parte superior derecha.
  • Selecciona el servicio del repositorio remoto.
  • Introduce la URL del repositorio.
  • Si el repositorio necesita autenticación, completa tu información de autenticación.
  • Marca la casilla Este repositorio será un espejo.
  • Selecciona Migrar repositorio para guardar la configuración.

Ahora el repositorio se espejará periódicamente desde el repositorio remoto. Puedes forzar una sincronización seleccionando Sincronizar ahora en la configuración del repositorio.

Solo puedes configurar un espejo de pull para repositorios que aún no existan en tu instancia. Una vez que el repositorio se crea, ya no podrás convertirlo en un espejo de pull.

Configuración HTTPS

Hay más en la configuración SSL: https://docs.gitea.com/next/administration/https-setup

pero estamos intentando esto por ahora (tomado del sitio de gitea):

Usando el servidor integrado

Antes de habilitar HTTPS, asegúrate de tener certificados SSL/TLS válidos. Puedes usar certificados generados por ti mismo para evaluación y pruebas. Por favor, ejecuta

gitea cert --host [HOST]

para generar un certificado autofirmado.

Si estás usando Apache o nginx en el servidor, se recomienda revisar la guía de proxy inverso.

Para usar el soporte HTTPS integrado de Gitea, debes cambiar tu archivo app.ini:

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

Tenga en cuenta que si su certificado está firmado por una autoridad de certificación de terceros (es decir, no es autofirmado), entonces cert.pem debe contener la cadena de certificados. El certificado del servidor debe ser la primera entrada en cert.pem, seguido de los intermediarios en orden (si los hay). El certificado raíz no tiene que incluirse porque el cliente conectado ya debe tenerlo para establecer la relación de confianza. Para obtener más información sobre los valores de configuración, consulte la Hoja de referencia de configuración.

Para el campo CERT_FILE o KEY_FILE, la ruta del archivo es relativa a la variable de entorno GITEA_CUSTOM cuando es una ruta relativa. También puede ser una ruta absoluta.

Configuración de redirección HTTP El servidor Gitea solo puede escuchar en un puerto; para redirigir las solicitudes HTTP al puerto HTTPS, deberá habilitar el servicio de redirección HTTP:

[server]
REDIRECT_OTHER_PORT = true
; Puerto en el que debe escuchar el servicio de redirección
PORT_TO_REDIRECT = 3080

Si está usando Docker, asegúrese de que este puerto esté configurado en su archivo docker-compose.yml.

Usando proxy inverso

En este post: Gitea-ssl estoy configurando Apache como proxy inverso que termina TLS.

Pendiente

configuración ssh: https://docs.gitea.com/next/installation/install-with-docker

prueba de respaldo y restauración.

Enlaces útiles