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:
- gitlab - Versão 16.6.1-ce.0
- gitlab-runner - Versão Alpine
Estrutura:
.
└── docker-compose.yml
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.
Para consultar a propagação do registro criado, consulte o site: WhatsMyDNS
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.
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
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
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
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
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.
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.
Em seguida, clique em "Edit profile".
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".
Será solicitado a confirmação da senha do usuário "root", utilize a senha temporária que pegamos anteriormente.
Agora clique na aba "Password" no menu lateral esquerdo.
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".
Você será deslogado e irá exibir uma mensagem dizendo que a senha foi atualizada com sucesso.
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".
Desmarque a opção "Sign-up enabled" e clique no botão "Save changes".
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".
No menu lateral esquerdo, clique em "CI/CD" e depois em "Runners".
Clique no botão "New instance runner".
Faça as seguintes configurações:
Em "Platform" marque "Linux".
Em "Tags" marque a caixa "Run untagged jobs".
Clique no botão "Create runner".
Copie e anote o comando exibido no "Step 1" e clique no botão "Go to runners page".
Veja que o nosso Runner está com o status "Idle" e a última interação está como "Never".
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
A execução deve retornar uma mensagem parecida com a do print seguinte "Runner registered sucessfully".
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.
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)
lol
Quando não mostrar a senha de root, faça os seguintes passos:
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.