Como configurar um servidor Git privado

Conteúdo

Logotipo do Git

Se você deseja configurar o controle de origem para um projeto, mas você prefere não hospedá-lo em um serviço como o GitHub, pode executar o seu git servidor em um VPS para armazenar seu código e atuar como um repositório mestre para qualquer contribuidor.

Por que executar seu próprio servidor?

Com quantos hosts gratuitos git provedores lá, O que GitHub, GitLab, e Bitbucket, não faz muito sentido fazer você mesmo. Mas existem algumas situações em que é uma solução viável.

Em primeiro lugar, rodar seu próprio servidor é muito mais privado, especialmente si está trabajando en un código que prefiere no almacenar en lanubede otra persona. Isso não quer dizer que provedores como o GitLab não sejam seguros., mas hospedar tudo sozinho pode dar a algumas pessoas mais paz de espírito.

Ao mesmo tempo, se você estiver usando um serviço de terceiros, existem restrições de tamanho de arquivo que podem não ser ideais. GitHub não suporta arquivos maiores que 100 MB, que pode ser um grande obstáculo para projetos com binários grandes. Usar seu próprio servidor remove este limite, presumindo que você pode pagar mais espaço no disco rígido.

Seja qual for o seu caso de uso, Provavelmente posso fazer melhor do que barebones git. Do GitLab Edição da comunidade é gratuito e de código aberto, e é fácil de configurar em seu próprio servidor. Isso dá a você todos os benefícios de hospedar você mesmo, juntamente com uma interface da web muito agradável e várias ferramentas de CI. / CD. Recomendamos fortemente que você use o GitLab se tiver espaço livre no servidor. (Precisa por perto 3 GB de RAM). Você pode ler nosso guia para instalar e configurá-lo para obter mais informações.

Mas, se você não quer todos os sinos e assobios, e você só quer executar um simples git controlo remoto, você pode continuar lendo.

Os remotos Git são apenas o repositório de outra pessoa

A primeira coisa a prestar atenção git é que hospedar um servidor não é realmente muito complicado. Git usa um modelo de controle de código-fonte distribuído; seu clone local de um repositório não se conecta a todos os seus colegas de trabalho, pero sí se conecta a un “controlo remoto”, geralmente em um servidor ou serviço central externo. Quando você empurra e puxa, fazer modificações na cópia mestre oficial do controle remoto. Quando seus colegas de trabalho pesquisam pelo controle remoto, baixe suas confirmações.

Tecnicamente, você pode executar git como um serviço absolutamente descentralizado. Se você tivesse duas pessoas, cada um obteria atualizações do outro. (Não é recomendado enviar para repositórios fora do servidor nesta configuração). Isso não é realmente utilizável na prática, a menos que ambas as partes tenham endereços IP estáticos e estejam sempre online, é por isso que a maioria das pessoas opta pelo modelo cliente-servidor.

Então, tudo isso git O servidor é então apenas um repositório regular que é configurado como a cópia master e está aberto para a internet. É surpreendentemente fácil de configurar. Primeiro, precisaremos criar um novo usuário. Git usa SSH para autenticação e todo o tráfego entre servidores e clientes, então vamos precisar de um usuário de serviço para gerenciar o repositório.

sudo useradd git

A seguir, troque para git usuário para o resto da configuração:

vai agua

Você precisará adicionar suas chaves SSH para git Nome do usuário authorized_keys procedimentos:

nano ~ / .ssh / authorized_keys

Esta é uma área onde serviços como GitHub e GitLab têm linha de comando Git beat. O gerenciamento de acesso não é facilmente tratado desta forma, já que você deve dar a todos acesso ao mesmo usuário do serviço, o que não é ideal, ou você precisará configurar usuários separados para cada pessoa, que também não é. ideal. De qualquer maneira, As confirmações aparecerão com qualquer nome de usuário e e-mail que o usuário final configurou em seu git definições.

De qualquer forma, para criar o repositório real, apenas corra git init no git diretório home do usuário:

git init --bare repository.git

a --bare A opção é necessária aqui. Em geral, ao clonar um repositório, git armazena todos os arquivos que você usa para gerenciar versões no oculto .git Arquivo, e mantém uma versão utilizável de onde quer que seu HEAD esteja desprotegido. Isso geralmente torna sua pasta de repositório cerca de duas vezes maior do que seria sem git, mesmo que possa ser maior se você tiver binários grandes e muitas mudanças ao longo do tempo.

Um repositório simples é simplesmente um repositório sem as versões utilizáveis ​​dos arquivos extraídos atualmente. Em vez de, a pasta do repositório é apenas o conteúdo do que seria o .git Arquivo. Isso economiza espaço de armazenamento e configura o repositório como um servidor mestre. Porque não há conteúdo local, não haverá conflitos com o branch HEAD. É uma convenção nomear repositórios vazios com o .git extensão de arquivo, mas não explicitamente necessário.

Isso é tudo o que é necessário no lado do servidor. De sua máquina local, você precisará clonar o repositório ou adicionar um novo controle remoto:

git remote add origin [email protected]:repository.git

O URL começa com git@ porque ele se conecta via SSH como o git Nome do usuário. a :repository.git no final é na verdade um nome de caminho, não apenas um identificador. O caminho é relativo a git diretório home do usuário, então se você colocar o repositório em outro lugar, você vai querer movê-lo aqui ou usar o caminho completo.

Depois de conectar seu repositório local, deve ter acesso total para empurrar e puxar como de costume. Tenha em mente, Apesar disto, do que o padrão git não tem um sistema de permissão embutido, então não há nada que impeça qualquer pessoa com acesso ao git que o usuário tenha controle total sobre seu repositório principal.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.