Como instalar o GitLab CE no Ubuntu 16.04 — guia passo a passo
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
- Instalar pacotes necessários
- Adicionar repositório Omnibus e instalar GitLab CE
- Configurar external_url
- Gerar certificado SSL Let’s Encrypt e dhparam
- Configurar Nginx/HTTPS no GitLab
- Configurar UFW (firewall)
- Pós-instalação: contas, SSH keys, limites
- 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 updateInstale pacotes necessários: curl, openssh-server, ca-certificates e postfix (para envio de e-mails).
sudo apt install curl openssh-server ca-certificates postfixDurante a instalação do postfix selecione “Internet Site” quando solicitado e informe o nome de domínio do servidor para envio de e-mails.


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
Instale o pacote gitlab-ce:
sudo apt install gitlab-ceAguarde o download e a instalação completa. O processo pode demorar (baixa dependências, configura serviços).

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.rbLocalize 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 -yGere o certificado (modo standalone ou webroot). Exemplo básico:
letsencrypt certonly -d gitlab.hakase-labs.coForneça um e-mail para notificações de renovação e aceite os termos.


Os certificados são salvos em /etc/letsencrypt/live/
mkdir -p /etc/gitlab/ssl/
sudo openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048
sudo chmod 600 /etc/gitlab/ssl/*
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.rbAltere:
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
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.coPasso 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
Verifique se as regras aparecem corretamente.

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

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

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

- Aba Account -> alterar username -> Update Username

Adicionar chave SSH (copiar conteúdo de id_rsa.pub):
ssh-keygen
cat ~/.ssh/id_rsa.pubCole em Perfil -> SSH Keys -> Add Key.

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

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.

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.mdAdicione, commit e faça push:
git add .
git commit -m "Add README.md file by hakase-labs"
git push origin masterDigite a senha do usuário quando solicitado. Verifique no navegador se o README.md aparece no repositório.


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):
- Editar /etc/gitlab/gitlab.rb
- Validar sintaxe se aplicável
- Executar sudo gitlab-ctl reconfigure
- Testar serviços: sudo gitlab-ctl status
- Verificar logs em /var/log/gitlab
Rollback (configuração que quebrou Nginx/SSL):
- Restaurar /etc/gitlab/gitlab.rb a partir de backup (ex: /etc/gitlab/gitlab.rb.bak)
- sudo gitlab-ctl reconfigure
- sudo gitlab-ctl restart nginx
- 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.).
Materiais semelhantes
Instalar e usar Podman no Debian 11
Apt‑pinning no Debian: guia prático
Injete FSR 4 com OptiScaler em qualquer jogo
DansGuardian e Squid com NTLM no Debian Etch
Corrigir erro de instalação no Android