É sexta à tarde, o pull request da sua equipe está aguardando revisão e seu notebook apita com uma mensagem conhecida: o GitHub está com problemas de novo.
Talvez o Actions esteja travado.
Talvez o git push retorne um erro 500 pela terceira vez este mês.
A conversa no chat da equipe já tem oito mensagens.
Na primeira vez que isso acontece, você ri. Na segunda, alguém compartilha o link da página de status do GitHub e todo mundo vai tomar um café. Na terceira, geralmente logo antes de uma janela de lançamento, alguém finalmente coloca a pergunta em palavras: Não seria melhor rodar o nosso próprio?
Para a maioria das equipes, a resposta honesta é não. O plano Free do GitLab.com atende bem equipes pequenas, e o custo operacional de manter seu próprio servidor de controle de versão não é zero.
É o tipo de troca que você só faz por um motivo real.
Talvez sua equipe tenha um desses motivos: um contrato com cliente que proíbe SaaS de terceiros, uma exigência de conformidade ou uma conta de licenças por usuário que está começando a ficar absurda. Nesse caso, auto-hospedar o GitLab CE é a saída mais limpa. Ele é de código aberto e roda em uma única VPS. Depois de ajustado, a manutenção leva cerca de uma hora por mês.
Na DreamHost, já hospedamos inúmeros servidores autogerenciados e sempre vemos o mesmo padrão. Os desenvolvedores que têm sucesso com o GitLab auto-hospedado escolhem o plano certo desde o início e fazem direito a preparação do Secure Shell Protocol (SSH) e do Domain Name System (DNS). Depois que tudo fica estável, eles resistem à vontade de continuar mexendo.
Por que auto-hospedar o GitLab em vez de usar o GitLab.com?
Você auto-hospeda o GitLab quando o GitLab.com ou o GitHub.com não atendem às suas necessidades de privacidade, conformidade ou controle de custos. Para a maioria das outras equipes, a opção hospedada é uma troca melhor.
Três motivos reais resistem a uma análise cuidadosa:
- Privacidade e soberania de dados: seu código-fonte fica em uma infraestrutura que você gerencia e atualiza no seu próprio ritmo. Não há acesso de terceiros nem plataforma compartilhada, e o impacto de um vazamento não vai além do seu próprio servidor.
- Conformidade: setores regulados, como saúde, finanças e governo, muitas vezes precisam controlar onde os dados ficam armazenados. O GitLab CE auto-hospedado é a forma mais simples de manter o código dentro de um perímetro controlado.
- Controle de custos em escala: o GitLab.com cobra por usuário ativo. Segundo a página de preços do GitLab, o Premium custa US$ 29 por usuário por mês, e o preço do Ultimate só é informado sob consulta. Uma equipe de 50 pessoas no Premium gasta US$ 17.400 por ano, sem contar complementos. Uma VPS autogerenciada mais uma hora de manutenção mensal costuma sair mais barato.
Se a sua equipe tem duas pessoas e nenhum motivo de privacidade ou conformidade, a resposta certa é o plano gratuito do GitLab. (Sim, sabemos que isso soa engraçado vindo de uma empresa de hospedagem).
Com a auto-hospedagem, você troca uma conta mensal de SaaS por tempo operacional contínuo. Essa troca só vale a pena se você tiver um bom motivo para fazer a mudança.
Veja quando essa opção faz sentido e quando não faz:
| Cenário | Melhor opção |
|---|---|
| Exigência de privacidade ou conformidade | GitLab CE auto-hospedado |
| Equipe com mais de ~30 usuários ativos | Auto-hospedar costuma ser mais barato |
| O código é sua propriedade intelectual e você quer mantê-lo localmente | GitLab CE auto-hospedado |
| Equipe de 2 a 5 pessoas, sem exigências de conformidade | GitLab.com (gratuito) |
| Você não quer atualizar um servidor | GitLab.com |
O GitLab Community Edition é gratuito sob uma licença de código aberto no estilo MIT. Não há limite de usuários, nem bloqueio de recursos básicos, nem ofertas insistentes de upgrade. A plataforma inteira é sua para rodar.
Quais são os requisitos de hardware do GitLab CE?
O GitLab CE tem requisitos de hardware claros. Acertá-los é a diferença entre uma instalação ágil e uma que vive se arrastando na memória swap (o espaço em disco que o sistema operacional usa quando a RAM enche).
Segundo os requisitos oficiais de instalação do GitLab, o dimensionamento é expresso em requisições por segundo, e não em faixas fixas por usuário. A referência publicada é de 8 vCPUs e 16 GB de RAM para até 1.000 usuários (cerca de 20 requisições por segundo). Equipes menores podem rodar com menos. Para avaliação, o mínimo documentado é de 2 GB de RAM mais 1 GB de swap, mas o desempenho cai abaixo de 4 GB.
Uma instalação nova do GitLab consome cerca de 4 a 6 GB em repouso. Quando os jobs de CI/CD começam a rodar, o uso de memória dispara rápido. Então planeje uma folga, ou prepare-se para a lentidão.
Em relação ao armazenamento, a referência oficial do GitLab é de 40 GB mais o tamanho dos repositórios, mas 50 GB é um ponto de partida mais seguro na prática. Os repositórios crescem e os artefatos de build se acumulam. O NVMe, um tipo mais rápido de armazenamento em estado sólido, faz uma diferença perceptível nas operações do Git e na leitura do cache de CI.
Veja como esses requisitos se encaixam nos planos de hospedagem VPS da DreamHost:
| Caso de uso | RAM recomendada | Plano de VPS da DreamHost |
|---|---|---|
| Avaliação ou até 5 desenvolvedores com as configurações de memória reduzida do GitLab | 8 GB de RAM | Stack 8 |
| Até ~1.000 usuários (referência publicada pelo GitLab: 8 vCPUs, 16 GB) | 16 GB de RAM e 8 vCPUs | Stack 32 |
| Runners de CI/CD | Servidor próprio | Um Stack 8 por runner |
O plano certo para a maioria das equipes com pipelines de CI/CD de verdade é o Stack 32, o único Stack que atende à referência de 8 vCPUs do GitLab. O Stack 16 tem a memória necessária, mas metade dos núcleos, então trate-o como um tamanho para testes. Parece exagero até você ver o primeiro build começar e o Sidekiq, o Postgres e um runner dispararem ao mesmo tempo*.*
Com 16 GB de RAM, você tem folga suficiente para o conjunto de serviços do GitLab (cerca de 4 a 6 GB em repouso em uma instalação padrão). Também sobra espaço para alguns workers de CI (1 a 2 GB cada) rodarem a todo vapor ao mesmo tempo, sem que ninguém no chat da equipe perceba.
Como preparar sua VPS antes de instalar o GitLab?
Dedique 10 minutos à preparação: isso compensa na primeira vez que você reiniciar o servidor. É só seguir estes passos:
- Provisione a VPS: escolha o Ubuntu 24.04 LTS. Ele é compatível com os pacotes oficiais Omnibus do GitLab (o instalador tudo-em-um que o GitLab distribui) e ainda tem anos de atualizações de segurança gratuitas pela frente.
- Aponte um domínio para o IP do servidor: crie um registro A (o tipo de registro DNS que associa um domínio a um endereço IP). Antes de instalar, aguarde pelo menos 15 a 30 minutos para a propagação. Sem isso, a configuração automática de SSL vai falhar, porque a autoridade certificadora não terá onde fazer a validação.
- Atualize os pacotes: conecte-se à VPS com
ssh root@your-server-ipe executesudo apt update && sudo apt upgrade -y. - Instale as dependências: execute
sudo apt install -y curl openssh-server ca-certificates perl postfix. O pacotepostfixé um servidor de e-mail que cuida das mensagens enviadas, para que o GitLab possa mandar notificações de merge requests e redefinições de senha.
Quando o instalador perguntar sobre a configuração de e-mail, escolha Internet Site e use seu domínio. Assim, o GitLab já começa a enviar e-mails imediatamente.
Para produção: dispense o postfix local e configure um relay SMTP no gitlab.rb. IPs de VPS aparecem com frequência em listas de bloqueio de spam, e e-mails de redefinição de senha enviados pelo postfix local muitas vezes caem no spam. SendGrid, Mailgun e relays SMTP semelhantes funcionam bem. Consulte a documentação de configuração SMTP do GitLab. - Abra as portas certas: configure um firewall com o UFW (a ferramenta de firewall nativa do Ubuntu) e libere as portas 80, 443 e 22.
sudo ufw allow http
sudo ufw allow https
sudo ufw allow ssh
sudo ufw enableComo instalar o GitLab CE no Ubuntu com o pacote Omnibus?

Adicione o repositório do GitLab CE:
curl -sSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bashEm seguida, instale o GitLab CE definindo seu domínio como URL externa:
sudo EXTERNAL_URL="https://gitlab.example.com" apt install gitlab-ceDefinir https:// aqui faz o GitLab solicitar automaticamente um certificado Let’s Encrypt durante a instalação. Para isso, as portas 80 e 443 precisam estar abertas e o DNS precisa estar apontado corretamente. Se algum desses itens não estiver pronto, a instalação termina, mas o SSL falha. Aí você passa os próximos trinta minutos tentando resolver algo que nem está quebrado de verdade.
Depois, aguarde a etapa de reconfiguração.
O GitLab executa gitlab-ctl reconfigure (o comando que aplica qualquer alteração na configuração do GitLab) automaticamente no fim da instalação. Isso leva de cinco a 10 minutos. E sim, a etapa de reconfiguração realmente demora tudo isso.
Obtenha a senha inicial de root:
sudo cat /etc/gitlab/initial_root_passwordEsse arquivo é gerado automaticamente e excluído em 24 horas, então copie a senha e faça login. Acesse seu domínio no navegador, entre como root e troque a senha imediatamente.
Por fim, verifique a instalação.
Na tela de boas-vindas do GitLab, crie um projeto de teste. Envie um commit para ele a partir da sua máquina local. Se o push funcionar e o arquivo aparecer na interface web, a instalação está saudável.
Se a etapa de reconfiguração travar, confira tail -f /var/log/gitlab/reconfigure/*.log. É ali que está o erro de verdade.
Como proteger uma instância auto-hospedada do GitLab?
O GitLab vem com padrões razoáveis, mas eles são ajustados para um servidor comunitário aberto, não para a instância privada da sua equipe. Reserve uma hora para isto.

- Desative o cadastro aberto. O cadastro aberto vem ativado por padrão. Na Admin Area, acesse Settings > General > Sign-up restrictions e desmarque a caixa
Sign-up enabled
. Caso contrário, qualquer pessoa com a URL pode criar uma conta. - Ative a autenticação de dois fatores. Acesse Admin Area > Settings > General > Sign-in restrictions e exija 2FA para todos os usuários. Reduza o período de carência do padrão de 48 horas para 8 horas.
- Restrinja a criação de projetos. Defina Default Project Creation como Maintainers ou No one, dependendo do nível de restrição que você quer.
- Verifique a renovação do SSL. Por padrão, o GitLab renova automaticamente os certificados Let’s Encrypt. Para confirmar, execute
sudo gitlab-ctl renew-le-certsuma vez e confira a saída. - Proteja o SSH na própria VPS. Desative o login de root com senha, permita apenas autenticação por chave SSH e (se der) tire o SSH da porta 22. Um servidor Git auto-hospedado só é tão seguro quanto a máquina em que ele roda.
Para uma versão mais aprofundada, o GitLab publicou um guia de reforço de segurança que cobre autenticação, criptografia e configurações da instância. Leia uma vez, aplique o que se encaixa no seu modelo de ameaças e siga em frente.
Como fazer backup e restaurar uma instância auto-hospedada do GitLab?

O GitLab inclui uma ferramenta de backup nativa. Na primeira vez que precisar dela, você vai ficar feliz por tê-la configurado.
Crie um backup:
sudo gitlab-backup createIsso gera um arquivo tarball em /var/opt/gitlab/backups. Agende a execução diária via cron com retenção de sete dias. Execute sudo crontab -e e adicione estas duas linhas:
0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1
0 3 * * * find /var/opt/gitlab/backups -name "*.tar" -mtime +7 -deleteA flag CRON=1 suprime a saída de progresso para não lotar os logs do cron.
Dica: o backup de dados não inclui /etc/gitlab/gitlab-secrets.json nem /etc/gitlab/gitlab.rb.
Esses arquivos guardam a chave de criptografia do banco de dados, as sementes da autenticação de dois fatores e as variáveis de CI/CD. Os segredos de configuração não fazem parte do backup normal e precisam ser salvos separadamente. Se você restaurar os dados sem o arquivo de segredos, as contas com dois fatores deixam de funcionar e as variáveis criptografadas viram lixo. E você passa uma longa noite tentando descobrir o porquê.
Adicione isto ao mesmo cron job:
sudo cp /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab.rb /var/opt/gitlab/backups/Um backup só pode ser restaurado na mesma versão e edição (CE para CE, não CE para EE) do GitLab em que foi criado.
Atualize com cuidado: não restaure um backup antigo em um GitLab recém-instalado sem antes fazer o downgrade da instalação para a versão correspondente.
Teste o processo de restauração pelo menos uma vez. Um backup que nunca foi testado é só um arquivo.
Auto-hospedar o GitLab realmente vale a pena para sua equipe?
Para a maioria das equipes, auto-hospedar o GitLab é uma decisão de controle. Às vezes a conta fecha, mas o motivo pelo qual as pessoas continuam com a auto-hospedagem raramente é o item no orçamento.
Veja o custo de tempo mensal real de uma instalação para uma equipe pequena:
- ~30 minutos de atualizações – upgrades via apt, versões secundárias do GitLab
- ~15 minutos de verificação de backup – não confie em um backup que você não restaurou
- ~15 minutos de verificação de capacidade – uso de disco, folga de RAM
- ~2x se o CI/CD rodar na mesma máquina – um runner movimentado pode dobrar a carga
Isso dá cerca de uma hora por mês em uma semana tranquila, ou duas em uma semana agitada.
A cerca de US$ 150 por hora, 12 horas de tempo operacional custam cerca de US$ 1.800, o equivalente a umas cinco licenças Premium do GitLab.com.
Um estudo de caso prático da Mad Devs mostra como a equipe deles economiza mais de US$ 10.000 por ano rodando o GitLab CE auto-hospedado em vez de pagar por licenças Premium. A economia só aparece quando a equipe é grande o bastante para que as licenças por usuário dominem o orçamento.
Dito isso, auto-hospedar é a escolha errada para:
- Equipes de duas ou três pessoas sem exigências de conformidade. O GitLab.com Free atende você. O tempo operacional custa mais do que você economiza.
- Equipes sem ninguém à vontade na linha de comando.
À vontade
não significa nível de sysadmin. Significa conseguir ler erros de/var/log/gitlabsem entrar em pânico. - Equipes cujo maior gargalo é contratar, não as ferramentas. A auto-hospedagem tira a atenção do produto. Se o limite é a velocidade de desenvolvimento do produto, a versão hospedada é a escolha certa.
Então, quando a auto-hospedagem faz sentido? Veja alguns cenários:
- Setores regulamentados com requisitos explícitos de residência de dados ou de cadeia de custódia
- Equipes da UE/Reino Unido preocupadas com a soberania de código hospedado nos EUA
- Equipes com mais de 30 pessoas em que as licenças por usuário dominam o orçamento
- Contratos com clientes que proíbem SaaS de terceiros para o código-fonte
Se o seu motivo é o GitHub cobra por usuário,
você provavelmente vai sair ganhando. Se o seu motivo é quero me sentir no controle,
talvez a realidade operacional seja menos romântica do que você imagina.
Você deve rodar os runners de CI/CD do GitLab na mesma VPS?
Para avaliação, sim. Para produção, não.
Um runner de CI na mesma máquina rouba memória e CPU da interface do GitLab. O sintoma clássico é o GitLab ficar lento às 9h,
o que geralmente acontece porque um build dispara o primeiro pipeline da manhã e deixa o frontend web sem recursos. A configuração mais limpa é uma VPS separada para o runner (um Stack 8 por runner), registrada na instância do GitLab pela rede.
Se você precisar manter os runners na mesma máquina, use o Stack 32 e deixe espaço para os jobs.
De acordo com os requisitos de sistema do runner do GitLab, o processo do runner em si é leve. Já as cargas de trabalho que ele executa não são, e elas dividem a CPU e o disco da máquina com tudo o mais que o GitLab está fazendo.
Pronto para fazer a mudança?
De volta ao chat da equipe na sexta à tarde.
Se o status do GitHub ficar amarelo e sua equipe rir disso de novo e for tomar um café, tudo bem.
Mas e se a queda do GitHub começar a parecer algo sério?
Talvez esteja ameaçando um contrato com um cliente? Apareceu em uma auditoria de conformidade? Ou a conta das licenças por usuário finalmente passou do limite?
Auto-hospedar o GitLab CE passa a ser uma opção totalmente razoável. Basta uma VPS, um domínio, uma instalação Omnibus e uma hora de reforço de segurança.
Na próxima vez que a página de status do GitHub acender, seus pushes vão continuar funcionando normalmente.
Perguntas frequentes sobre auto-hospedar o GitLab
O GitLab CE é gratuito para auto-hospedagem?
Sim, o GitLab CE é gratuito para auto-hospedagem, sob uma licença de código aberto no estilo MIT. Não há limite de usuários nem cobrança por usuário. Os únicos custos são a própria VPS e o tempo operacional para mantê-la.
Para uma equipe de até 5 desenvolvedores, as configurações de memória reduzida do GitLab rodam no Stack 8. Uma instalação padrão precisa da referência de nó único do GitLab, de 8 vCPUs e 16 GB de RAM, que só o Stack 32 atende.
Quanta RAM o GitLab CE realmente precisa?
Planeje 8 vCPUs e 16 GB de RAM para até 1.000 usuários, que é a referência de nó único publicada pelo GitLab (cerca de 20 requisições por segundo). Equipes menores podem usar menos, até um mínimo documentado de 2 GB mais 1 GB de swap para avaliação. De qualquer forma, se você rodar pipelines de CI/CD na mesma máquina, planeje 16 GB.
Posso auto-hospedar o GitLab em uma VPS de 4 GB?
Sim, você pode rodar o GitLab CE com 4 GB, mas ele vai ficar lento sob qualquer carga real. O GitLab documenta uma alternativa de 2 GB + 1 GB de swap para ambientes com pouca memória — esse caminho é para avaliação, não para produção. Para uma equipe que envia código ativamente e roda pipelines, 8 GB é o mínimo na prática.
Quanto tempo leva para instalar o GitLab CE em uma VPS?
Cerca de 10 a 15 minutos para instalar o pacote, mais aproximadamente uma hora para preparação e reforço de segurança, ou seja, cerca de 90 minutos do início ao fim. A instalação em si é basicamente esperar a etapa de reconfiguração.
O reforço de segurança, que exige desativar o cadastro aberto, tornar obrigatória a autenticação de dois fatores e restringir a criação de projetos, ocupa a hora restante e é indispensável para qualquer instância de produção.
Auto-hospedar o GitLab vale a pena para uma equipe de cinco pessoas?
Provavelmente não, a menos que você tenha um motivo de privacidade ou conformidade. O GitLab.com Free cobre até cinco usuários com projetos privados ilimitados e 400 minutos de CI/CD por mês. Com uma equipe desse tamanho, o tempo operacional da auto-hospedagem supera o que você economiza com licenças por usuário.
Em termos puramente de custo, a auto-hospedagem começa a compensar por volta de 30 ou mais usuários ativos.
Qual é a diferença entre o GitLab CE e o GitLab Community Edition?
GitLab CE e GitLab Community Edition são o mesmo produto. CE é a abreviação padrão. O termo Self-Managed
se refere a onde você o executa (na sua infraestrutura), não a qual edição.
O GitLab Community Edition é de código aberto. O GitLab Enterprise Edition (EE) adiciona recursos pagos sobre a mesma base de código.
Em que o GitLab CE difere do GitLab EE?
O GitLab CE é a edição gratuita e de código aberto. O GitLab EE usa a mesma base de código, com recursos pagos que são ativados quando você envia um arquivo de licença.
Na prática, a diferença se resume ao seguinte:
- O CE tem licença MIT e é totalmente funcional. Controle de código-fonte, merge requests, issues, CI/CD básico, registro de contêineres e tudo mais.
- O EE adiciona recursos corporativos mediante licença. Pense em épicos, frameworks avançados de conformidade, análise de fluxo de valor, múltiplas regras de aprovação e varredura de segurança avançada. Segundo a comparação de recursos da versão autogerenciada do GitLab, a diferença importa principalmente para organizações com processos formais de gestão de mudanças.
- Você pode instalar o EE sem licença, e ele funciona como o CE até ser licenciado. É assim que a maioria das equipes se prepara para uma eventual necessidade de upgrade.
- Não dá para fazer o downgrade do EE para o CE de forma limpa. Planeje-se.
Para a maioria das equipes que auto-hospedam, o CE é suficiente. Se o seu motivo é privacidade ou custo, os recursos do EE raramente mudam a conta.
Como manter minha instância auto-hospedada do GitLab atualizada?
Execute sudo apt update && sudo apt upgrade gitlab-ce para aplicar os patches de segurança. Uma frequência mensal é o mínimo prático para uma instância de produção. Sempre crie um backup antes de atualizar.
Atualizações de versão principal devem ser feitas em sequência — não é possível pular versões principais. Para ir da 16.x para a 18.x, é preciso atualizar primeiro para a 17.x e depois para a 18.x. Pular uma versão principal quebra as migrações do banco de dados. Sempre consulte a ferramenta de caminho de upgrade do GitLab antes de atualizar e crie um backup imediatamente antes de cada etapa.
Qual é o papel da DreamHost no GitLab auto-hospedado?
A hospedagem VPS da DreamHost oferece o servidor Linux com acesso root em que o GitLab CE é instalado. O Stack 32 (8 vCPUs, 32 GB de RAM) é o plano que atende à referência de nó único do GitLab, de 8 vCPUs e 16 GB, para até 1.000 usuários. O Stack 16 tem os 16 GB e metade dos núcleos: serve bem para um teste de um sprint, mas fique de olho na CPU.