Escolhendo um servidor de git gratuito local – o Gitea é o vencedor!

Tentando escolher um bom servidor de git open source

Conteúdo da página

Querendo mover seus projetos para fora de provedores de git em nuvem aberta e pensando em hospedar internamente um servidor git localmente?

gitea-site

Escolhendo servidores

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

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

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

Gitlab é rico em recursos e exige muitos recursos, é uma experiência mais envolvida. É um produto comercial, mas tem uma versão gratuita também.

O Gogs é muito leve, já tentei e funcionou bem, mas falta um registro de contêiner.

A comparação favorece o Gitea, na minha opinião.

Ambos o Gitea e o 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 até http://localhost:3000/

para desligar

docker-compose down

os volumes continuarão existindo

Uso de recursos

Estatísticas dos contêineres de recursos

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

Estatísticas das imagens do Docker

Tamanho total das imagens do Docker é de 583MB. 422MB delas 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, alguns forking e clonando o contêiner do gitea sozinho está usando 420MB de RAM agora. Preciso manter um 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 do repositório remoto.
  • Insira a URL do 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.

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

Você só pode configurar o espelhamento de pull para repositórios que ainda não existem em sua instância. Uma vez que o repositório seja criado, você não poderá convertê-lo em um espelho de pull novamente.

Configuração HTTPS

Há mais sobre a configuração 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 HTTPS, certifique-se de que você tenha certificados SSL/TLS válidos. Você pode usar certificados autoassinados para avaliação e testes. Por favor, execute

gitea cert --host [HOST]

para gerar um certificado autoassinado.

Se você estiver usando Apache ou nginx no servidor, é recomendado 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

Note que, se seu certificado for assinado por uma autoridade de certificado terceirizada (ou seja, não autoassinado), o cert.pem deve conter a cadeia de certificados. O certificado do servidor deve ser a primeira entrada no cert.pem, seguida pelos intermediários em ordem (se houver). O certificado raiz não precisa ser incluído porque o cliente conectando já deve tê-lo para estabelecer a relação de confiança. Para aprender mais sobre os valores de configuração, por favor consulte a Folha de Dicas de Configuração.

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

Configuração de 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 na qual o serviço de redirecionamento deve ouvir
PORT_TO_REDIRECT = 3080

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

Usando proxy reverso

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

Pendente

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

teste de backup e restauração.