Guia de tecnologias

Como instalar o GitLab CE no Ubuntu 16.04 — guia passo a passo

10 min read DevOps Atualizado 17 Oct 2025
Instalar GitLab CE no Ubuntu 16.04
Instalar GitLab CE no Ubuntu 16.04

Importante: Ubuntu 16.04 atingiu o fim do suporte padrão; recomendamos avaliar atualização para uma versão suportada do Ubuntu depois da implantação. Este tutorial preserva todos os comandos originais e imagens do material fonte.

Intento principal e variações de busca relacionadas

  • Intento principal: instalar GitLab CE no Ubuntu 16.04
  • Variações: instalar GitLab Ubuntu 16.04 omnibus, configurar GitLab HTTPS Ubuntu, GitLab CE instalação passo a passo, tutoriais GitLab para servidor próprio

O que é o GitLab (definição rápida)

GitLab é um gerenciador de repositórios GIT baseado em Rails, com wiki, rastreamento de issues, revisão de código, CI/CD e gerenciamento de merge requests. Em uma linha: um conjunto integrado de ferramentas para desenvolvimento colaborativo e entrega contínua.

Edições do GitLab (resumo)

  • GitLab CE (Community Edition) — self‑hosted e gratuito; suporte pela comunidade.
  • GitLab EE (Enterprise Edition) — self‑hosted, pago, com recursos empresariais adicionais.
  • GitLab.com — SaaS público, camada gratuita e planos pagos.
  • GitLab.io — instância privada gerida pelo GitLab Inc.

Importante: escolha a edição conforme requisitos de conformidade, suporte e recursos corporativos.


Pré-requisitos

  • Servidor Ubuntu 16.04 LTS (64 bits)
  • Mínimo recomendado: 2 GB de RAM (mais memória melhora desempenho)
  • Acesso root ou sudo
  • Um domínio reservado para o GitLab (ex.: gitlab.exemplo.com)
  • A porta 80 e 443 devem estar acessíveis para validação TLS e tráfego HTTPS

Nota: se o servidor estiver atrás de NAT, encaminhe portas 80/443 e SSH 22 para o host.

Sumário das etapas

  1. Instalar pacotes necessários
  2. Adicionar repositório Omnibus e instalar GitLab CE
  3. Configurar external_url
  4. Gerar certificado SSL Let’s Encrypt e dhparam
  5. Configurar Nginx/HTTPS no GitLab
  6. Configurar UFW (firewall)
  7. Pós-instalação: contas, SSH keys, limites
  8. Testes: criar projeto, commit e push

Passo 1 — Instalar pacotes requeridos no Ubuntu

Primeiro, faça login no servidor como root e atualize repositórios.

ssh root@GitLabServer
apt-get update

Instale pacotes necessários: curl, openssh-server, ca-certificates e postfix (para envio de e-mails).

sudo apt install curl openssh-server ca-certificates postfix

Durante a instalação do postfix selecione “Internet Site” quando solicitado e informe o nome de domínio do servidor para envio de e-mails.

Configurar Postfix no Ubuntu

Inserir nome do host do Postfix

Dica administrativa: caso prefira usar um SMTP externo (p.ex. SendGrid, Mailgun), configure as credenciais no GitLab em /etc/gitlab/gitlab.rb ou nas configurações de administração web.


Passo 2 — Adicionar repositório e instalar GitLab CE (Omnibus)

O pacote Omnibus instala e configura serviços necessários (Nginx, PostgreSQL, Redis, Sidekiq) por padrão.

Adicione o repositório oficial do GitLab:

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

Adicionando repositório do GitLab no Ubuntu 16.04

Instale o pacote gitlab-ce:

sudo apt install gitlab-ce

Aguarde o download e a instalação completa. O processo pode demorar (baixa dependências, configura serviços).

Instalar GitLab

Importante: verifique espaço em disco e memória antes de instalar; o Omnibus cria bancos locais por padrão.


Passo 3 — Configurar a URL principal do GitLab

Edite o arquivo de configuração principal em /etc/gitlab/gitlab.rb.

cd /etc/gitlab
vim gitlab.rb

Localize a linha external_url e defina-a para o domínio da sua instância. Exemplo inicial (HTTP):

external_url 'http://gitlab.hakase-labs.co'

Salve e saia. Posteriormente alteraremos para HTTPS após gerar os certificados.


Passo 4 — Gerar certificado SSL com Let’s Encrypt e dhparam

Instale a ferramenta letsencrypt (Certbot) e gere o certificado para o domínio.

sudo apt install letsencrypt -y

Gere o certificado (modo standalone ou webroot). Exemplo básico:

letsencrypt certonly -d gitlab.hakase-labs.co

Forneça um e-mail para notificações de renovação e aceite os termos.

Gerar certificado SSL no Ubuntu 16.04

Aceitar termos do Let's Encrypt

Os certificados são salvos em /etc/letsencrypt/live//. Em seguida crie o diretório ssl do GitLab e gere um arquivo dhparams (melhora segurança do TLS):

mkdir -p /etc/gitlab/ssl/
sudo openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048
sudo chmod 600 /etc/gitlab/ssl/*

Gerar dhparam com openssl

Nota: o comando dhparam pode demorar; você pode gerar em uma máquina local e transferir o arquivo se preferir reduzir tempo no servidor.


Passo 5 — Habilitar HTTPS no Nginx do GitLab

Edite /etc/gitlab/gitlab.rb e troque external_url para https. Em seguida adicione os caminhos dos certificados.

cd /etc/gitlab
vim gitlab.rb

Altere:

external_url 'https://gitlab.hakase-labs.co'

E adicione (ou descomente) as configurações do Nginx:

nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab.hakase-labs.co/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.hakase-labs.co/privkey.pem"
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"

Salve e aplique a configuração:

sudo gitlab-ctl reconfigure

Aplicar configurações do GitLab concluído

Verifique que o Nginx do GitLab esteja ouvindo em 443 e que o certificado seja o correto.

Comando útil para verificar certificados instalados (local):

openssl s_client -connect gitlab.hakase-labs.co:443 -servername gitlab.hakase-labs.co

Passo 6 — Configurar firewall UFW

Habilite o UFW e permita SSH, HTTP e HTTPS:

ufw enable
ufw allow ssh
ufw allow http
ufw allow https
ufw status

Permitir HTTP e HTTPS no UFW

Verifique se as regras aparecem corretamente.

Verificar regras UFW

Importante: confirme que não bloqueou a porta SSH antes de ativar o UFW. Se estiver em um provedor cloud, confirme regras de segurança na camada de rede (security groups).


Passo 7 — Pós-instalação e configuração inicial do GitLab

Abra seu navegador em https://gitlab.hakase-labs.co. Você será solicitado a definir a senha do usuário root padrão.

Redefinir senha root

Redefinir senha padrão do GitLab

Faça login com usuário root e a senha definida.

Login no GitLab como root

Configurações recomendadas após o primeiro login:

  • Trocar nome e e-mail do perfil
  • Alterar username padrão
  • Adicionar chave SSH pública do usuário
  • Revisar políticas de signup e limites de projeto

Passos na interface web (exemplos mostrados nas imagens):

  • Perfil -> Profile Settings -> Update Profile

Alterar perfil do GitLab

  • Aba Account -> alterar username -> Update Username

Alterar username

Adicionar chave SSH (copiar conteúdo de id_rsa.pub):

ssh-keygen
cat ~/.ssh/id_rsa.pub

Cole em Perfil -> SSH Keys -> Add Key.

Adicionar chave SSH

Configurar restrições de sign-up e limites em Admin Area -> Settings -> Account and Limit Settings.

Configurar limites e restrições


Passo 8 — Testes: criar projeto, commit e push

Crie um novo projeto na interface web: botão + -> New project. Configure nome, visibilidade e clique em Create project.

Criar novo projeto no GitLab

No cliente Git local, configure seu usuário global e clone o repositório:

git config --global user.name "hakase"
git config --global user.email "[email protected]"

git clone https://[email protected]/hakase/howtoforge.git
cd howtoforge/
vim README.md

Adicione, commit e faça push:

git add .
git commit -m "Add README.md file by hakase-labs"
git push origin master

Digite a senha do usuário quando solicitado. Verifique no navegador se o README.md aparece no repositório.

Primeiro commit de teste

Repositório visível no GitLab

Parabéns — o GitLab CE está instalado e funcional no Ubuntu 16.04.


Checklist de verificação rápida (Role-based)

Administrador de infraestrutura:

  • Certificado TLS instalado e válido
  • Portas 22/80/443 acessíveis e regras de firewall configuradas
  • Backups automáticos configurados para /var/opt/gitlab
  • Monitoramento básico (disco, CPU, memória)

Equipe DevOps:

  • Configurar runner(s) do GitLab CI/CD
  • Integração com registro de container (se necessário)
  • Rotinas de renovação de certificados configuradas

Desenvolvedor:

  • Conta de usuário e chave SSH adicionadas
  • Projeto criado e push inicial testado
  • Templates de merge request e regras de proteção de branch aplicadas

SOP mínimo para deploy e rollback

Deploy (após alteração em gitlab.rb):

  1. Editar /etc/gitlab/gitlab.rb
  2. Validar sintaxe se aplicável
  3. Executar sudo gitlab-ctl reconfigure
  4. Testar serviços: sudo gitlab-ctl status
  5. Verificar logs em /var/log/gitlab

Rollback (configuração que quebrou Nginx/SSL):

  1. Restaurar /etc/gitlab/gitlab.rb a partir de backup (ex: /etc/gitlab/gitlab.rb.bak)
  2. sudo gitlab-ctl reconfigure
  3. sudo gitlab-ctl restart nginx
  4. Revisar logs e reverter alteração aplicada

Importante: sempre faça backup do /etc/gitlab/gitlab.rb antes de editar.


Renovação automática do Let’s Encrypt (boas práticas)

  • Use Certbot em modo automático com um hook para reiniciar/reconfigurar o GitLab após renovar.
  • Exemplo (crontab ou systemd timer):
0 3 * * * certbot renew --quiet --deploy-hook "gitlab-ctl reconfigure"

Nota: teste a renovação com certbot renew –dry-run antes de automatizar.


Segurança recomendada e hardening (essenciais)

  • Forçar HTTPS e redirecionar HTTP para HTTPS (já configurado)
  • Usar certificados de 2048/3072 bits, preferir 4096 para chaves RSA se suas máquinas suportarem
  • Restringir acesso SSH por IP quando possível e usar autenticação por chave
  • Habilitar backups regulares e testar restaurações
  • Atualizar o sistema operacional e o pacote gitlab-ce regularmente (atenção ao ciclo de suporte do Ubuntu)
  • Revisar permissões de /etc/gitlab/ssl e arquivos de chaves (mode 600)
  • Usar SMTP autenticado em vez de Postfix local se precisar de alta entrega

Migração e compatibilidade (Notas importantes)

  • Ubuntu 16.04 é uma versão antiga; considere migrar para Ubuntu 18.04/20.04/22.04 para receber atualizações de segurança e versões mais novas do GitLab.
  • Antes de atualizar a versão do sistema operacional, verifique compatibilidade das versões do GitLab e dos pacotes Omnibus. Leia as notas de lançamento oficiais do GitLab.

Testes e critérios de aceitação

Critérios mínimos:

  • Página inicial do GitLab acessível via HTTPS com certificado válido
  • Login como root funcionando
  • Criação de projeto e push via HTTPS ou SSH funcionando
  • Serviço GitLab ativo: sudo gitlab-ctl status mostra serviços UP
  • Backups simples executáveis (ex.: sudo gitlab-rake gitlab:backup:create)

Test cases (amostra):

  • TC1: Acessar https:// e verificar certificado -> PASS
  • TC2: Criar projeto público, clonar via HTTPS, adicionar arquivo, push -> PASS
  • TC3: Adicionar SSH key, clonar via SSH, push -> PASS

Problemas comuns e soluções rápidas

  • Erro de certificado inválido: verifique se nginx[‘ssl_certificate’] aponta para o fullchain.pem correto.
  • gitlab-ctl reconfigure travando: verifique /var/log/gitlab/chef-client/ e logs individuais em /var/log/gitlab/
  • Portas ocupadas: checar sudo ss -ltnp | grep :80 ou :443 e resolver conflitos com outros servidores web
  • Let’s Encrypt falha por porta 80 bloqueada: abra temporariamente a porta 80 ou use webroot mode

Exemplos de alternativa de instalação

  • Instalar GitLab usando pacotes Docker/containers (imagens oficiais) para isolamento
  • Usar GitLab.com (SaaS) se não quiser gerenciar infraestrutura
  • Usar Omnibus com PostgreSQL externo se for necessário escalar banco separadamente

Mini metodologia de hardening e manutenção (sugestão de cadência)

  • Diário: verificar logs críticos e uso de disco
  • Semanal: atualizar pacotes de sistema e revisar jobs CI/CD ativos
  • Mensal: testar backup e restauração
  • Antes de qualquer mudança: realizar snapshot/backup completo

Galeria de casos extremos (edge-cases)

  • Cenário: servidor sem IP público — usar VPN/rede corporativa para acesso
  • Cenário: multi‑tenant com isolamento estrito — contemplar execução em VMs/containers separados ou GitLab EE
  • Cenário: grandes volumes de repositórios — provisionar mais RAM e armazenamento em disco rápido (SSD)

FAQ (perguntas rápidas)

Q: Como renovar automaticamente o certificado Let’s Encrypt?

A: Use certbot renew combinado com um deploy-hook que execute gitlab-ctl reconfigure para recarregar o Nginx do GitLab. Teste com certbot renew –dry-run.

Q: Posso usar um certificado comprado no lugar do Let’s Encrypt?

A: Sim. Aponte nginx[‘ssl_certificate’] e nginx[‘ssl_certificate_key’] para os arquivos do certificado e execute gitlab-ctl reconfigure.

Q: E se eu precisar migrar do Ubuntu 16.04 para 20.04?

A: Faça backup completo do GitLab, teste a restauração em uma instância de staging com a versão alvo do Ubuntu e siga as instruções oficiais de upgrade do GitLab e do sistema operacional.


Links e referências rápidas


Resumo final

Este guia cobriu a instalação do GitLab CE no Ubuntu 16.04 usando o pacote Omnibus, configuração de HTTPS com Let’s Encrypt, regras de firewall, pós-configuração e testes básicos. Para produção, implemente backups, monitoramento, renovação automática de certificados e considere atualizar o sistema operacional para uma versão suportada.

Importante: mantenha sempre cópias de segurança do /etc/gitlab e dos diretórios de dados antes de mudanças significativas.


1-line glossary:

  • Omnibus: pacote que instala e configura automaticamente todos os componentes do GitLab (Nginx, PostgreSQL, Redis, etc.).
Autor
Edição

Materiais semelhantes

Instalar e usar Podman no Debian 11
Containers

Instalar e usar Podman no Debian 11

Apt‑pinning no Debian: guia prático
Administração de sistemas

Apt‑pinning no Debian: guia prático

Injete FSR 4 com OptiScaler em qualquer jogo
Tecnologia

Injete FSR 4 com OptiScaler em qualquer jogo

DansGuardian e Squid com NTLM no Debian Etch
Infraestrutura

DansGuardian e Squid com NTLM no Debian Etch

Corrigir erro de instalação no Android
Android

Corrigir erro de instalação no Android

KNetAttach: Pastas de Rede remota no KDE
KDE

KNetAttach: Pastas de Rede remota no KDE