Escolhendo um servidor Git on-prem gratuito: Gitea é o vencedor!

Tentando escolher um bom servidor Git de código aberto.

Conteúdo da página

Deseja mover seus projetos para longe de provedores de git em nuvem abertos e está pensando em hospedar um servidor git interno localmente?

Este guia faz parte de Ferramentas para Desenvolvedores: O Guia Completo para Fluxos de Trabalho de Desenvolvimento Moderno.

gitea-site

Escolhendo servidores

Executar seu próprio servidor git não deve ser muito difícil, certo?

Então, agora escolhendo um servidor git gratuito de uma lista muito curta de opções. Bonobo Gogs vs Gitea vs Gitlab.

O Bonobo é gratuito, mas apenas para Windows, e não tem uma versão para Linux.

O Gitlab é rico em recursos e pesado em recursos, essa é uma experiência prática. É um produto comercial, mas tem uma versão gratuita também.

O Gogs é muito leve, eu o testei e funcionou bem, mas falta um registro de contêiner.

A comparação favorece o Gitea, aos meus olhos.

Gitea e 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

depois

docker-compose up -d

navegue para http://localhost:3000/

para desligar

docker-compose down

os volumes permanecerão

Uso de recursos

Estatísticas de recursos de contêineres

Mostrando que os contêineres consomem 260MB de RAM e um pouco de CPU.

Estatísticas de imagens Docker

Tamanho das imagens Docker: 583MB no total. 422MB dos quais são da imagem postgres:14. A imagem postgres:14-alpine ocupa 239MB, pode funcionar também se os recursos forem limitados.

PS. Após migrar mais de 10 repositórios para o gitea, com alguns forks e clones, o contêiner do gitea sozinho está usando 420MB de RAM agora. Precisamos ficar de olho nisso.

Sincronizar dois repositórios

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

Pode fazer push e pull.

pull

  • Selecione Nova Migração no menu Criar… no canto superior direito.
  • Selecione o serviço de repositório remoto.
  • Insira uma URL de repositório.
  • Se o repositório precisar de autenticação, preencha suas informações de autenticação.
  • Marque a caixa Este repositório será um espelho.
  • Selecione Migrar repositório para salvar a configuração.

O repositório agora é espelhado periodicamente do repositório remoto. Você pode forçar uma sincronização selecionando Sincronizar Agora nas configurações do repositório.

Pode configurar apenas o espelhamento de pull para repositórios que ainda não existem na sua instância. Uma vez que o repositório seja criado, você não pode mais convertê-lo em um espelho de pull.

Configuração Https

Há mais em configurações de ssl: https://docs.gitea.com/next/administration/https-setup

mas estamos tentando isso por enquanto (peguei do site do gitea):

Usando o servidor embutido

Antes de habilitar o HTTPS, certifique-se de que você possui certificados SSL/TLS válidos. Você pode usar certificados auto-gerados para avaliação e testes. Por favor, execute

gitea cert --host [HOST]

para gerar um certificado auto-assinado.

Se você estiver usando Apache ou nginx no servidor, recomenda-se verificar o guia de proxy reverso.

Para usar o suporte HTTPS embutido do Gitea, você deve alterar seu arquivo app.ini:

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

Observe que se seu certificado for assinado por uma autoridade de certificação de terceiros (ou seja, não auto-assinado), então cert.pem deve conter a cadeia de certificados. O certificado do servidor deve ser a primeira entrada em cert.pem, seguido pelos intermediários em ordem (se houver). O certificado raiz não precisa ser incluído porque o cliente que se conecta já deve tê-lo para estabelecer o relacionamento de confiança. Para saber mais sobre os valores de configuração, consulte a Folha de Referência de Configuração.

Para o campo CERT_FILE ou KEY_FILE, o caminho do arquivo é relativo à variável de ambiente GITEA_CUSTOM quando é um caminho relativo. Também pode ser um caminho absoluto.

Configurando redirecionamento HTTP O servidor Gitea só pode ouvir uma porta; para redirecionar solicitações HTTP para a porta HTTPS, você precisará habilitar o serviço de redirecionamento HTTP:

[server]
REDIRECT_OTHER_PORT = true
; Porta que o serviço de redirecionamento deve ouvir
PORT_TO_REDIRECT = 3080

Se você estiver usando Docker, certifique-se de que esta porta esteja configurada em seu arquivo docker-compose.yml.

Usando proxy reverso

Neste post: Gitea-ssl estou configurando o Apache como proxy reverso de terminação TLS.

Todo

configuração ssh: https://docs.gitea.com/next/installation/install-with-docker

teste de backup-restauração. Veja Backup e Restauração do servidor Gitea para procedimentos detalhados de backup.

Assinar

Receba novos artigos sobre sistemas, infraestrutura e engenharia de IA.