[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.