Desde que o GitHub foi adquirido pela Microsoft, muitos desenvolvedores planejaram migrar seus próprios repositórios de código do github.com para uma solução auto-hospedada alternativa. O GitLab Community Edition (CE) é a escolha mais comum.
Como uma solução sofisticada e flexível, o GitLab CE pode ser implantado usando vários métodos, mas somente o método oficialmente recomendado, a instalação do pacote Omnibus, será abordado neste documento.
Pré-requisitos
- Uma nova instância do servidor Site & Site Debian 9 x64 com pelo menos 4 GB de memória. Recomenda-se 8 GB ou mais para servir até 100 usuários. Diga que seu endereço IPv4 é
203.0.113.1
. - Um usuário sudo .
- Um domínio
gitlab.example.com
sendo apontado para a instância mencionada acima.
Nota: Ao implementar em sua própria instância do servidor, certifique-se de substituir todos os valores de exemplo pelos reais.
Etapa 1: executar tarefas básicas para hospedar o GitLab CE
Acione um terminal SSH e faça login na sua instância do servidor Debian 9 x64 como um usuário sudo.
Adicione uma partição swap e ajuste a configuração de swappiness
Ao implantar o GitLab CE 11.x em uma máquina com 4 GB de memória, é necessário configurar uma partição de swap de 4 GB para um bom funcionamento.
sudo dd if=/dev/zero of=/swapfile count=4096 bs=1M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -m
Nota: Se você estiver usando um tamanho de servidor diferente, o tamanho da partição de troca poderá variar.
Para propósitos de desempenho do sistema, é recomendado configurar o swappiness do kernel para um valor baixo como 10
:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
cat /proc/sys/vm/swappiness
A saída do cat
comando será 10
.
Configurar o nome do host da máquina e o nome de domínio totalmente qualificado (FQDN)
Use os seguintes comandos para configurar um nome de host gitlab
, e um FQDN gitlab.example.com
, para a máquina:
sudo hostnamectl set-hostname gitlab
sudo sed -i "1 i\203.0.113.1 gitlab.example.com gitlab" /etc/hosts
Você pode confirmar os resultados:
hostname
hostname -f
Configurar regras de firewall
Configurar regras de firewall razoáveis para executar um site:
sudo iptables -F
sudo iptables -X
sudo iptables -Z
sudo iptables -A INPUT -s $(echo $(w -h ${USER}) | cut -d " " -f3) -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -d 127.0.0.0/8 -j REJECT
sudo iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP
Todas as configurações acima entrarão em vigor imediatamente. Use o seguinte comando para listá-los para revisão:
sudo iptables -L -n
Use a iptable-persistent
ferramenta para salvar todas as regras existentes do iptables em um arquivo /etc/iptables/rules.v4
, tornando todas as regras do iptables persistentes:
sudo apt install -y iptables-persistent
Durante a instalação, você será perguntado se deseja salvar as regras atuais de IPv4 / IPv6. Pressione ENTERduas vezes para salvar as regras atuais de IPv4 e IPv6 para /etc/iptables/rules.v4
e /etc/iptables/rules.v6
.
Se você tentar atualizar as regras do IPv4 mais tarde, use o seguinte para salvar sua atualização:
sudo bash -c 'iptables-save > /etc/iptables/rules.v4'
Atualize o sistema
sudo apt update
sudo apt upgrade -y && sudo shutdown -r now
Quando o sistema estiver ativo e funcionando novamente, efetue login novamente como o mesmo usuário sudo para continuar.
Etapa 2: instalar as dependências necessárias
Antes de instalar o GitLab CE, você precisa instalar as dependências necessárias:
sudo apt install -y curl openssh-server ca-certificates
Além disso, se você quiser usar o Postfix para enviar mensagens de notificação, você precisa instalar o Postfix:
sudo apt install -y postfix
Durante a instalação, uma tela de configuração pode aparecer:
- Pressione TABpara destacar o
<OK>
botão na primeira tela e pressione ENTER. - Selecione
Internet Site
e pressione ENTER. - Para o
mail name
campo, insira o FQDN do seu servidorgitlab.example.com
e pressione ENTER. - Se outras telas aparecerem, pressione ENTERpara aceitar as configurações padrão.
Inicie e ative o serviço Postfix:
sudo systemctl enable postfix.service
sudo systemctl start postfix.service
Modifique as regras de firewall para o Postfix:
sudo iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo bash -c 'iptables-save > /etc/iptables/rules.v4'
Com o Postfix instalado, você precisa configurar o Postfix editando seu arquivo de configuração principal de /etc/postfix/main.cf
acordo com as configurações reais do servidor.
Nota: Além das instruções acima, você precisa enviar um tíquete de suporte para cancelar o bloqueio padrão da Vultr na porta 25 do SMTP.
Alternativamente, se você quiser usar outra solução de mensagens, basta pular a instalação do Postfix e optar por usar um servidor SMTP externo após a instalação do GitLab CE.
Etapa 3: Configurar o repositório GitLab APT e, em seguida, instalar o GitLab CE
Configure o repositório GitLab CE APT em seu sistema:
cd
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
Em seguida, instale o GitLab CE 11.x:
sudo EXTERNAL_URL="http://gitlab.example.com" apt install -y gitlab-ce
A instalação pode demorar um pouco.
Por fim, aponte seu navegador da Web favorito para http://gitlab.example.com
, em seguida, envie uma nova senha conforme solicitado para concluir a instalação.
De agora em diante, use as credenciais abaixo para efetuar login como administrador:
- Nome de usuário:
root
- Senha:
<your-new-password>
Etapa 4: habilitar o acesso HTTPS integrando um certificado Let’s Encrypt SSL
Por enquanto, você instalou com sucesso o GitLab CE 11.x em sua instância de servidor, e os usuários já podem visitar o site usando o protocolo HTTP. Por motivos de segurança, é recomendável ativar o acesso HTTPS ao seu servidor GitLab, integrando um certificado Let’s Encrypt SSL.
Use o vi
editor para abrir o arquivo de configuração do GitLab CE:
sudo vi /etc/gitlab/gitlab.rb
Encontre as duas linhas seguintes:
external_url 'http://gitlab.example.com'
# letsencrypt['contact_emails'] = [] # This should be an array of email addresses to add as contacts
Substitua-os de acordo:
external_url 'https://gitlab.example.com'
letsencrypt['contact_emails'] = ['[email protected]']
Salve e saia:
:wq!
Reconfigure o GitLab CE usando as configurações atualizadas:
sudo gitlab-ctl reconfigure
A reconfiguração pode demorar um pouco.
Após a reconfiguração ser feita, todos os usuários serão forçados a usar o protocolo HTTPS ao acessar o site do GitLab.
Nota: Depois de alternar de HTTP para HTTPS, os cookies herdados podem causar um erro no GitLab 422. Limpar cookies corrige esse problema.