GIT Server usando um Raspberry PI & Pendrive
Tags: raspberrypi, beginners, braziliandevs
Published: 2022-04-25 22:42:54


GIT completou 17 anos esse mês, ele é um sistema de controle de versões de código iniciado pelo Linus Torvalds, inicialmente feito para controle do desenvolvimento do kernel do Linux, e hoje usado de diversas maneiras (mas ainda principalmente no desenvolvimento de software).


Existem diversas razões para querer ter um GIT server próprio, acredito que a maior delas seja a segurança do seu código, se ele possui dados sensíveis ou seja proprietário, pode ser uma boa ideia não usar serviços populares como Github ou Bitbucket.

Enquanto não tenho oportunidade de comprar um Raspberry Pi 4, resolvi usar meu Model 3 pra brincar um pouco e decidir criar um servidor de GIT com ele. O processo é bem simples.

O que usei foi:

1. Raspberry Pi Model 3
2. Pendrive (FAT)
3. OS [Raspbian ](https://www.raspberrypi.com/software/)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uwbr0h6osff06barr1ty.jpg)

Como falamos de segurança, a primeira coisa a fazer é criar um usuário separado para usar, pois usaremos uma chave SSH para "publicar" no nosso server, você pode sim usar o usuário root mas não é aconselhável de jeito nenhum.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4zkysb9vnmoj09advgng.png)

Criei um user chamado gitsv e dei uma senha pra ele, agora voce pode acessar o user com

`su gitsv`

após

`cd`

Se tudo deu certo a gente já pode acessar por outra máquina na rede local.

`ssh "user@endereco"`
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fdd78dic3tkwj8oyy1fg.png)

Digite agora `ssh-keygen` e siga os passos, agora envie essa public key para o server com `ssh-copy-id -i [local]/unique_key.pub gitsv@[endereco]`

Agora pra garantir, manda um
`sudo apt-get update`
`sudo apt-get upgrade`
`sudo reboot`

Acesse novamente o Raspberry por SSH e instale o GIT
`sudo apt-get install wget git` Depois disso pode desligar o PI que vamos deixar pronto o pendrive.

Pode plugar o pendrive e iniciar o PI, logue nele e pode usar o comando `mkdir nome` no meu, usei _pdrivedir_ como nome. Depois, vamos usar o comando `blkid` que vai listar nossos blocks com um identificador único (UUID), o system type (TYPE) e rótulo de volume (LABEL). No meu caso, foi assim:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ooa4k51nmflhp6mf3b17.png)

Precisamos agora dizer pro PI que nossos arquivos irão pro diretório que criamos (pdrivedir).
Pra isso, usamos  `nano /etc/fstab` e adicionamos ao final do arquivo: `/dev/sda1 /home/pi/pdrivedir vfat uid=pi,gid=pi,umask=0022,sync,auto,nosuid,rw,nouser 0 0`
Lembrando de substituir o /dev/sda1 pela info do seu pendrive. Mete aquele CTRL-X, Y e Reboot.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/31d1ytsuj5phszpq0xqp.png)

Bora criar agora uma pasta com final .git que vai ser nosso repositorio:
`mkdir pdrivedir/projeto.git`
`cd pdrivedir/projeto.git`
E dentro da pasta, vamos iniciar o git, com:
`git init --bare`
[Inclusive recomendo esse link pra entender os repos bare e non-bare](https://www.geeksforgeeks.org/bare-repositories-in-git/)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5v2kzf2quviyxxtxokw3.png)

Quer saber como dar o primeiro commit? Então:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g3m1lkbcp6lt231gqxby.jpg)

Precisamos fazer com que nosso git local esteja ciente desse repositório que criamos, bora com:
`git remote add origin gitsv@endereco:/local/projeto.git`
"origin" pode ser qualquer nome de sua escolha. E agora o último passo é "pushar" o projeto para esse repositório, se for pra branch "master" o comando será esse `git push origin master`

Finalizado! O repo GIT está prontíssimo no seu servidor local, sendo armazenado no pendrive.

Se quiser, podemos também deixar esse Raspberry Pi online, definindo um endereço de IP fixo e redirecionando uma porta (nesse caso a 22).