Escolhendo um servidor Git on-prem gratuito: Gitea é o vencedor!
Tentando escolher um bom servidor Git de código aberto.
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.

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

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

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.