DEV Community

Alfredo Castro
Alfredo Castro

Posted on • Edited on

Instalando GitLab Usando Docker

O GitLab é uma plataforma robusta para gerenciamento de repositórios Git, oferecendo uma variedade de recursos para equipes de desenvolvimento colaborarem de forma eficiente. Uma forma prática de implantar o GitLab é através do Docker Compose, facilitando a configuração e o gerenciamento do ambiente.

Neste tutorial, irei demonstrar os passos necessários para instalar o GitLab usando Docker Compose, permitindo que você tenha seu próprio servidor GitLab em execução rapidamente e com facilidade.

Ambiente

Para está implementação, estou utilizando um servidor Linux com a distribuição Ubuntu na versão 22.04.

O servidor que utilizei possui a seguinte configuração: 2 vCPUs, 4GB RAM e um disco SSD de 30GB.

Para que nosso servidor seja acessível pela internet, e para que o nosso GitLab gere o certificado via Let's Encrypt, precisamos possuir um endereço IP público e precisamos liberar as portas 80 e 443 para a internet.

Também é necessário possuirmos um registro DNS para criarmos as URLs para o GitLab.

Disponibilizei o Docker Compose no seguinte repositório do GitHub: https://github.com/alfredotavio/gitlab-docker

Imagens utilizadas:

Estrutura:

.
└── docker-compose.yml
Enter fullscreen mode Exit fullscreen mode

Não irei abordar a instalação do Docker Engine, caso ainda não saiba realizar a instalação, consulte este outro post:

https://dev.to/alfredotavio/como-instalar-o-docker-engine-no-linux-5092

Etapa 01 - Criando os registro DNS

Antes de tudo, vamos definir e criar a URL que iremos utilizar para o GitLab.

Irei utilizar o domínio alfredocastro.com.br, defini a URL gitlab.alfredocastro.com.br - ATENÇÃO: Você precisa alterar no arquivo do Docker Compose (docker-compose.yml).

Acesse o seu gerenciador de registros DNS do seu domínio e crie um registro do tipo A colocando como valor o endereço IP público do seu servidor.

Veja um exemplo:
Image description

Para consultar a propagação do registro criado, consulte o site: WhatsMyDNS
Image description

Etapa 02 - Clonando o repositório do Docker Compose

Após realizar a instalação do Docker Engine, vamos dar seguimento com a nossa implementação.
Image description

Execute os seguintes comandos para clonar nosso Docker Compose para dentro do nosso servidor:

cd /opt
git clone https://github.com/alfredotavio/gitlab-docker.git
cd gitlab-docker
Enter fullscreen mode Exit fullscreen mode

Image description

NOTA: Utilizei o diretório /opt do Linux, caso queira você pode alterar para outro diretório de sua escolha.

Etapa 03 - Definindo a URL do GitLab

Primeiro vamos definir a URL de acesso, edite o arquivo docker-compose.yml na raiz do projeto e altere a URL do GitLab, são duas linhas, no atual projeto está definido como gitlab.example.com.

vim /opt/gitlab-docker/docker-compose.yml
Enter fullscreen mode Exit fullscreen mode

Image description

Etapa 04 - Executando o Docker Compose

Para subirmos nosso ambiente, basta executarmos o seguinte comando dentro do diretório raiz onde está nosso docker-compose.yml:

docker compose up -d
Enter fullscreen mode Exit fullscreen mode

Image description

NOTA: O Docker irá fazer o download e o provisionamento de todas as imagens. Aguarde alguns minutos até que as imagens concluam a primeira configuração.

Etapa 05 - Acessando o ambiente

Por padrão, o GitLab define automaticamente uma senha temporária encontrada dentro do arquivo "initial_root_password". Para obter a senha, utilize o seguinte comando:

docker exec -it gitlab grep "Password:" /etc/gitlab/initial_root_password
Enter fullscreen mode Exit fullscreen mode

Image description

Acesse a URL do GitLab que definimos na primeira etapa, será solicitado um usuário e senha para acessar, por padrão o usuário é o "root" e a senha será a exibida no comando anterior.
Image description
Image description

Após realizar o primeiro login, é recomendado alterar a senha e o email do usuário "root", também é recomendado desativar a opção de registro público.

Para alterar a senha e o email do usuário "root", após realizar o login, clique na foto do perfil do usuário na aba lateral esquerda.
Image description

Em seguida, clique em "Edit profile".
Image description

Na aba "Profile", desça até o campo "Email" e altere o email "admin@example.com" para o seu endereço de email, em seguida clique em "Update profile settings".
Image description

Será solicitado a confirmação da senha do usuário "root", utilize a senha temporária que pegamos anteriormente.
Image description

Agora clique na aba "Password" no menu lateral esquerdo.
Image description

Em "Current password", digite a senha temporária que pegamos anteriormente, em "New password" defina uma nova senha e em "Password confirmation" repita a nova senha, em seguida clique em "Save password".
Image description

Você será deslogado e irá exibir uma mensagem dizendo que a senha foi atualizada com sucesso.
Image description

Faça o login novamente, agora utilizando a nova senha. Vamos desativar a opção de registro público, após o login, será exibido uma mensagem de alerta "Check your sign-up restrictions - Your GitLab instance allows anyone to register for an account, which is a security risk on public-facing GitLab instances. You should deactivate new sign ups if public users aren't expected to register for an account." clique no botão "Deactivate".
Image description

Desmarque a opção "Sign-up enabled" e clique no botão "Save changes".
Image description

Pronto, agora já subimos o GitLab e fizemos as primeiras configurações de segurança.

Etapa 06 - Integrando o GitLab com o GitLab Runner

Para realizar a integração do GitLab Runner com o GitLab, é necessário a geração de um token e realizar o registro dentro do GitLab Runner.

Para gerar o token você precisar acessar a "Admin Area", na tela inicial após realizar o login, clique na caixa "Configure GitLab".
Image description

No menu lateral esquerdo, clique em "CI/CD" e depois em "Runners".
Image description

Clique no botão "New instance runner".
Image description

Faça as seguintes configurações:

Em "Platform" marque "Linux".

Em "Tags" marque a caixa "Run untagged jobs".

Clique no botão "Create runner".
Image description
Image description

Copie e anote o comando exibido no "Step 1" e clique no botão "Go to runners page".
Image description

Veja que o nosso Runner está com o status "Idle" e a última interação está como "Never".
Image description

Agora devemos acessar o terminal onde está o nosso Docker Compose para executar o comando de registro do GitLab Runner. Acesse sua instância Linux e digite o seguinte comando para realizar o registro do GitLab Runner dentro do seu GitLab, lembre-se de alterar os campos "--url" e "--token" para as informações correspondentes ao seu Runner gerado anteriormente.

docker exec -it gitlab-runner gitlab-runner register --name MyRunner --url "https://gitlab.alfredocastro.com.br" --token "glrt-FyeL9ZZz6QozSD2aJE3x" --executor docker --docker-image "docker:latest" --non-interactive
Enter fullscreen mode Exit fullscreen mode

A execução deve retornar uma mensagem parecida com a do print seguinte "Runner registered sucessfully".
Image description

Volte para o browser com os Runners e atualize a página para vermos o status do nosso Runner, veja no print que ele está com o status "Online" e já possui o tempo da última interação.
Image description

Pronto, já subimos nosso ambiente com GitLab e GitLab Runner integrado.

Espero tê-lo ajudado! Se houver alguma dúvida, não hesite em entrar em contato.

Top comments (2)

Collapse
 
aaravpatel1985 profile image
AaravPatel1985

lol

Collapse
 
thales_corey_79f904c11ae3 profile image
Thales Corey • Edited

Quando não mostrar a senha de root, faça os seguintes passos:

  • Acesse o contêiner do GitLab e digite o comando: docker exec -it gitlab /bin/bash
  • Use o console do Rails para redefinir a senha do usuário root: gitlab-rails console
  • Execute os comandos:
    user = User.where(id: 1).first
    user.password = 'novasenha'
    user.password_confirmation = 'novasenha'
    user.save!

  • Saia do console: Exit.

  • Reiniciei o container do gitlab: docker restart gitlab.

Pronto!
Com isso você consegue resolver o problema.