Executando verificação de segurança...
9

[Tutorial] Como ter seu próprio servidor Git

Introdução

Todo desenvolvedor conhece o git, então vou dispensar as apresentações.

O github é um execelente serviço, entretanto ele tem algumas restrições nas contas gratuitas, como a impossibilidade de se utilizar repositórios privados. Isso pode ser um problema caso o seu código contenha informações confidenciais ou seja de propriedade da empresa, etc.

Há várias formas de se executar um servidor git em sua própria infraestrutura, uma delas seria instalar o GitLab, por exemplo.

Vou ensinar uma forma de se fazer um servidor git sem a necessidade de nenhum software adicional, além do ssh e do próprio git.

Os exemplos do servidor e do cliente serão no linux ubuntu.
O cliente pode ser windows ou outro S.O. sem problemas, no servidor só testei em linux.

Requisitos

  • Servidor Linux rodando qualquer distribuição.
  • Openssh atualizado
  • Cliente linux ou windows

Colocando a mão na massa

1. Instale o Git no cliente e no servidor (provavelmente já estará instalado).

sudo apt install git

2. Crie um usuário no servidor para armazenar os repositórios

Deve-se criar um usuário no servidor para armazenar todos os repositórios ou pode-se ter um usuário no servidor para cada usuário remoto. Nesse tutorial vou criar apenas um usuário para armazenar todos os repositórios para fins de simplificar o tutorial.

sudo useradd git
sudo passwd git

3. Criar uma chave ssh para acesso ao servidor sem precisar digitar usuário/senha (opcional).

No cliente digite:

ssh-keygen -t rsa

Para esse tutorial, aceite todas as opções padrão.

Agora copie a chave criada para o servidor:

cat ~/.ssh/id_rsa.pub | ssh git@SERVIDOR_REMOTO "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

4. Agora você deve acessar o servidor por ssh ou outro modo para criar uma pasta para o projetos. Pode-se utilizar qualquer caminho no servidor. No tutorial vou utilizar um atalho /repos apontando para o diretório real, de modo a diminuir o tamanho da url de acesso.

Para isso acesse o servidor e use os comandos abaixo:

ssh git@SERVIDOR_REMOTO
mkdir -p ~/repos
sudo ln -s /home/git/repos /repos

5. Agora vamos criar o primeiro projeto.

cd /repos
mkdir projeto1.git
cd projeto1.git
git init --bare

Para criar mais projetos basta repetir o passo 5 quantas vezes forem necessárias, apenas alterando o nome da pasta criada.

6. Configuração no cliente.

Para utilizar o repositório remoto os passos são os mesmos já utilizados para acessar o github. Pode-se criar um novo projeto ou utilizar algum já existente.
Vou mostrar como se criar um novo projeto. O nome do projeto não precisa ser igual ao nome do repositório remoto, vou criar igual apenas como exemplo:

mkdir -p ~/src/projeto1
cd ~/src/projeto1
git init

Agora adicione alguns arquivos ao projeto.

echo "teste" > arquivo.txt
git add .
git commit -am "Commit inicial"

Agora precisamos adicionar a url do servidor ao repositório local:

git remote add origin git@SERVIDOR_REMOTO:/repos/projeto1.git

Fazendo o primeiro push:

git push origin master

7. Clonando o repositório

Caso precise trabalhar com o repositório em outro computador, ou outra pessoa precise acessar, basta clonar o repositório:

git clone git@SERVIDOR_REMOTO:/repos/projeto1.git

Agora pode-se trabalhar normalmente no projeto, fazer commits, push, pull, etc.

Conclusão

Nesse tutorial ensinei como usar um servidor remoto linux como repositório git sem uso de softwares adicionais.
Há outras formas de se fazer isso, como utilizar o gitlab, que vai te fornecer uma interface web para gerenciamento dos projetos, etc.
Entretanto, da forma que mostrei, não é necessário o uso de nenhum software ou serviço sendo executado no servidor, além do ssh e próprio git, o que reduz um muito a ocorrência de eventuais falhas de segurança e também permite a execução em servidores com menos recursos de hardware.

Caso tenham algum dúvida ou sugestão de melhoria, fiquem a vontade para comentar.
Espero que esta postagem seja útil.

Carregando publicação patrocinada...
1
1

Muito bom o tutorial tentei recriar aqui e deu certo, eu não entendo muito de git mas daria como eu criar um usuário mas com um permissões e visualizações diferentes?

1

Boa, Estar tão acostumado com eco-sistemas de repositório tipo gitlab, github; tinha até me feito esquecer que o git em si é um repositório rsrsrsr

1
1

Gosto muito do git e do ssh. Utilizo demais o ssh para outras finalidades (acesso remoto, backup, rsync, etc), mas nunca tinha visto tal utilizade. Gostei de sua proposta.

Porém (tinha que ter um né), utilizo o gitlab na empresa e tem atendido muito bem os desenvolvedores, mas é necessário uma VM parruda pra rodar bem.

Outra alternativa é o gitea:

De acordo com a documentação oficial, Gitea é um serviço de desenvolvimento de software completo, auto-hospedado e simples. Inclui hospedagem Git, revisão de código, colaboração em equipe, registro de pacotes e CI/CD. É semelhante ao GitHub, Bitbucket e GitLab.

Seu objetivo é fornecer a maneira mais fácil, rápida e simples de configurar um serviço Git auto-hospedado. Escrito em Go, pode ser implementado em todas as plataformas suportadas por Go, incluindo Linux, macOS e Windows, em arquiteturas x86, amd64, ARM e PowerPC.

Se quiser ter mais detalhes de como eu fiz: https://wiki.tiozaodolinux.com/Guide-for-Linux/Complete-Install-Gitea-With-Docker

Espero que goste do Gitea!