Guía de tecnologías

Instalar GitLab CE en Ubuntu 16.04: guía paso a paso

9 min read DevOps Actualizado 17 Oct 2025
Instalar GitLab CE en Ubuntu 16.04
Instalar GitLab CE en Ubuntu 16.04

Esta guía explica cómo instalar GitLab Community Edition (omnibus) en un servidor Ubuntu 16.04. Cubre instalación de paquetes, configuración de URL, certificados Let’s Encrypt y DHPARAM, habilitación de HTTPS con Nginx, reglas UFW, ajustes posinstalación, pruebas básicas, y buenas prácticas de seguridad y operación.

Importante: Ubuntu 16.04 es una versión LTS antigua; considere actualizar a una LTS más reciente en entornos de producción a largo plazo.

Introducción

GitLab es un gestor de repositorios GIT web basado en Rails y desarrollado por GitLab Inc. Permite colaborar en código, gestionar incidencias, revisiones, wikis, feeds de actividad y despliegues. GitLab puede alojar múltiples proyectos y se distribuye en varias ediciones:

  • GitLab CE (Community Edition) — autoalojado, gratuito, soporte comunitario.
  • GitLab EE (Enterprise Edition) — autoalojado, de pago, con funciones adicionales.
  • GitLab.com — SaaS con opción gratuita.
  • GitLab.io — instancias privadas gestionadas por GitLab Inc.

En esta guía instalaremos GitLab CE usando la distribución “omnibus” que empaqueta todas las dependencias y servicios necesarios para simplificar la instalación.

Qué haremos

  1. Instalar paquetes necesarios
  2. Instalar GitLab CE
  3. Configurar la URL principal de GitLab
  4. Generar certificados SSL con Let’s Encrypt y DHPARAM
  5. Habilitar HTTPS en Nginx para GitLab
  6. Configurar UFW (firewall)
  7. Ajustes posinstalación básicos
  8. Probar el sistema

Requisitos previos

  • Servidor Ubuntu 16.04 de 64 bits
  • Mínimo 2 GB de RAM (recomendado más para entornos con muchos usuarios)
  • Privilegios de root o sudo
  • Dominio público apuntando al servidor (recomendado para HTTPS y certificados)

Paso 1 - Instalar paquetes requeridos

Conéctate al servidor como root y actualiza los repositorios:

ssh root@GitLabServer
apt-get update

Instala curl, openssh-server, ca-certificates y postfix (para envío de correo). Durante la instalación de postfix selecciona “Internet Site” y proporciona el nombre de dominio del servidor cuando se solicite.

sudo apt install curl openssh-server ca-certificates postfix

Configurar Postfix en Ubuntu

Ingresar el nombre de host para Postfix en Ubuntu

Notas:

  • Postfix configurado como “Internet Site” es suficiente para notificaciones por correo básicas. Si usas un proveedor SMTP externo (Gmail, SendGrid), configura Postfix o GitLab para usar el relay SMTP correspondiente.
  • Asegúrate de que los puertos 22, 80 y 443 estén accesibles desde donde vas a conectar.

Paso 2 - Instalar GitLab CE (omnibus)

Agrega el repositorio oficial de GitLab e instala el paquete omnibus.

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

Agregar repositorio de GitLab a Ubuntu 16.04

A continuación instala GitLab CE:

sudo apt install gitlab-ce

Espera a que termine la descarga e instalación. Verás múltiples pasos de instalación y configuración de servicios incluidos.

Instalar GitLab

Consejos:

  • La instalación omnibus instala Redis, PostgreSQL, Nginx (por defecto), Sidekiq y otros servicios. Revisa los logs si algo falla: sudo gitlab-ctl tail
  • Si vas a usar un servidor de base de datos externo o un proxy inverso distinto a Nginx integrado, consulta la documentación oficial para configuraciones avanzadas.

Paso 3 - Configurar la URL principal de GitLab

Edita el archivo de configuración principal en /etc/gitlab/gitlab.rb y establece la URL pública que usarán los usuarios. En este ejemplo usamos gitlab.hakase-labs.co; reemplázalo por tu dominio.

cd /etc/gitlab
vim gitlab.rb

Busca la línea que contiene external_url y cámbiala:

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

Guarda el archivo. Más adelante activaremos HTTPS y cambiaremos a https://.

Notas:

  • external_url define URLs y rutas que GitLab usa para generar enlaces y para la configuración de Nginx.
  • Si vas a usar un proxy inverso externo, ajusta la configuración relacionada con external_url y nginx[‘enable’].

Paso 4 - Generar certificados SSL con Let’s Encrypt y DHPARAM

Instala la herramienta de cliente de Let’s Encrypt (certbot). En Ubuntu 16.04 el paquete puede ser letsencrypt o certbot según repositorio; aquí usamos letsencrypt como en el ejemplo original.

sudo apt install letsencrypt -y

Genera un certificado solo (certonly) para tu dominio:

letsencrypt certonly -d gitlab.hakase-labs.co

Se te pedirá un correo para notificaciones y que aceptes los términos de servicio. Cuando termine, los archivos se colocarán en /etc/letsencrypt/live/gitlab.hakase-labs.co/

Generar certificado SSL en Ubuntu 16.04

Aceptar los términos de Let's Encrypt

Certificado Let's Encrypt generado

Crear directorio ssl en la configuración de GitLab y generar DHPARAM para mejor seguridad TLS:

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

Generar certificado DHPARAM con openssl

Ajusta permisos de los certificados para que sean legibles solo por root:

chmod 600 /etc/gitlab/ssl/*

Notas de seguridad:

  • DHPARAM de 2048 bits mejora la seguridad durante el intercambio de claves. Para mayor seguridad usa 3072 o 4096, pero tardará más en generarse.
  • Los certificados Let’s Encrypt caducan cada 90 días; automatiza la renovación.

Paso 5 - Habilitar HTTPS en Nginx para GitLab

Edita /etc/gitlab/gitlab.rb para forzar HTTPS y apuntar al certificado que generaste.

cd /etc/gitlab
vim gitlab.rb

Cambia external_url por la versión HTTPS:

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

Añade o modifica las siguientes opciones para que Nginx use los archivos de Let’s Encrypt y el DHPARAM:

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"

Nota: la cadena de escape para comillas dobles es parte del archivo de configuración y debe conservarse tal cual como arriba.

Guarda y aplica la configuración ejecutando:

sudo gitlab-ctl reconfigure

Esto reconfigurará todos los servicios según /etc/gitlab/gitlab.rb y reiniciará Nginx con la nueva configuración.

Habilitar HTTPS en GitLab y redirección HTTP a HTTPS

Aplicar configuración de GitLab completada

Comprobaciones:

  • Asegúrate de que el puerto 443 está escuchando: sudo netstat -tlnp | grep 443
  • Revisa los logs si Nginx no arranca: sudo gitlab-ctl tail nginx

Paso 6 - Configurar UFW (firewall)

Habilita y configura UFW para permitir SSH, HTTP y HTTPS. Si tienes un panel de control en la nube también asegúrate de abrir estos puertos en el proveedor.

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

Permitir HTTP y HTTPS en UFW Ubuntu

Comprobar reglas UFW Ubuntu

Consejo operativo:

  • Si gestionas acceso administrativo remoto desde IPs fijas, restringe SSH a esas IPs por seguridad: ufw allow from to any port 22

Paso 7 - Ajustes posinstalación básicos

Tras acceder a la URL https://gitlab.tudominio, GitLab pedirá restablecer la contraseña del usuario root. Accede con root y realiza los siguientes ajustes mínimos:

  • Cambiar contraseña del usuario root
  • Actualizar perfil (nombre y correo)
  • Crear usuarios y grupos según la organización
  • Añadir claves SSH personales para permitir push/pull sin contraseña

Restablecer contraseña por defecto:

Restablecer contraseña por defecto de GitLab

Iniciar sesión con root:

Iniciar sesión en GitLab con usuario root

Editar perfil y nombre de usuario:

Cambiar perfil por defecto de GitLab

Cambiar nombre y correo en GitLab

Cambiar nombre de usuario en GitLab

Añadir clave SSH para acceso sin contraseña:

ssh-keygen

Luego copia el contenido de id_rsa.pub al apartado de “SSH Key” en tu perfil y pulsa “Add Key”.

Generar nueva clave SSH en Ubuntu

Añadir clave SSH en GitLab

Configuraciones de administración:

  • En el área de administración puedes ajustar límites por usuario (número máximo de proyectos) y restricciones de registro (whitelist de dominios de correo).

Configurar el sistema GitLab

Configurar límites y restricciones de registro en GitLab

Paso 8 - Pruebas básicas

Crea un proyecto nuevo desde la interfaz web: introduce nombre, descripción y visibilidad y pulsa “Create project”.

Crear nuevo proyecto en GitLab

Realiza el primer commit desde tu máquina local. Configura git con tu usuario global:

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

Clona, edita y sube:

git clone https://[email protected]/hakase/howtoforge.git
cd howtoforge/
vim README.md
git add .
git commit -m 'Add README.md file by hakase-labs'
git push origin master

Se te pedirá la contraseña o usarás autenticación por SSH si añadiste tu clave.

Prueba de primer commit en GitLab

Repositorio GitLab operativo

Criterios de aceptación mínimos

  • La URL https://gitlab.tudominio resuelve y responde con certificado válido
  • Inicio de sesión con root y cambio de contraseña completado
  • Creación de al menos un proyecto y push inicial exitoso
  • Puertos 22, 80 y 443 accesibles según reglas UFW

Buenas prácticas y endurecimiento de seguridad

  1. Actualizaciones: asegúrate de aplicar actualizaciones de seguridad regulares tanto del sistema operativo como de GitLab.
  2. Backups: configura backups regulares con gitlab-rake gitlab:backup:create y rota las copias fuera del servidor.
  3. Permisos: restringe el acceso SSH solo a IPs necesarias y desactiva el login por contraseña si usas SSH keys.
  4. Monitorización: integra métricas y alertas (Prometheus/Grafana o tu herramienta preferida).
  5. Renovación de certificados: automatiza con certbot renew y reinicia gitlab-ctl reconfigure si cambian rutas de certificado.
  6. Revisar cuentas de administrador y políticas de fuerza de contraseñas.

Seguridad adicional (opcional):

  • Habilitar autenticación de dos factores (2FA) para usuarios con privilegios.
  • Revisar la configuración de contenido y tamaños máximos en Nginx si manejas grandes artefactos.

Operación y mantenimiento

Plan de respaldo básico:

  • Configurar backup periódico de GitLab: editar /etc/gitlab/gitlab.rb para configurar object storage si necesitas almacenamiento externo.
  • Verificar integridad de backups y probar restauraciones en entorno controlado.

Rollback rápido ante fallo tras actualización:

  1. Detener servicios: sudo gitlab-ctl stop
  2. Restaurar el backup más reciente: sudo gitlab-rake gitlab:backup:restore BACKUP=
  3. Reconfigurar y reiniciar: sudo gitlab-ctl reconfigure && sudo gitlab-ctl start

Incidente de certificado caducado:

  • Ejecutar certbot renew –dry-run para comprobar; si renueva correctamente reinicia los servicios: sudo gitlab-ctl restart nginx

Role-based checklists

Administrador del sistema (Ops):

  • Verificar requisitos mínimos de memoria y disco
  • Configurar DNS y firewall
  • Automatizar backups y renovación de certificados
  • Monitorizar logs y servicios

Administrador de GitLab (Admin):

  • Crear grupos y proyectos base
  • Definir políticas de acceso y límites
  • Revisar y aprovisionar cuentas administradoras

Desarrollador:

  • Añadir clave SSH al perfil
  • Configurar git local con usuario y correo
  • Probar clonación y push al repositorio

Mini metodología de despliegue (playbook)

  1. Preparación: DNS, recursos, seguridad básica
  2. Instalación base: dependencias y GitLab omnibus
  3. Configuración TLS: Let’s Encrypt + DHPARAM
  4. Reconfiguración: gitlab-ctl reconfigure
  5. Pruebas funcionales: login, crear proyecto, push
  6. Handover: documentar credenciales y procedimientos de backup

Pruebas y casos de aceptación

Prueba 1: Acceso HTTPS

Prueba 2: Push por HTTPS

  • PASOS: Clonar repo, modificar README, push
  • CRITERIOS: Cambios aparecen en la interfaz web

Prueba 3: Push por SSH

  • PASOS: Añadir clave SSH, clonar con SSH, push
  • CRITERIOS: Push exitoso sin pedir contraseña

Compatibilidad y migración

  • Si migras desde otra versión de GitLab o desde otro servidor, utiliza las herramientas de backup/restore y revisa las notas de la versión.
  • Ten en cuenta que Ubuntu 16.04 puede requerir paquetes legacy; considera migrar a Ubuntu 18.04/20.04 para soporte a largo plazo.

Notas de privacidad y cumplimiento

  • GitLab almacena código y metadatos de usuarios. Si tratas datos personales, documenta el flujo de datos y aplica políticas de retención.
  • Para GDPR: asegúrate de saber dónde se alojan backups y acceso a los datos, y provee procesos para eliminación/anonimización a petición.

Preguntas frecuentes

¿Necesito un dominio para instalar GitLab?

No estrictamente, puedes usar la IP del servidor, pero un dominio público facilita certificados HTTPS y uso por parte de equipos remotos.

¿Puedo usar certificados comerciales en lugar de Let’s Encrypt?

Sí. Apunta nginx[‘ssl_certificate’] y nginx[‘ssl_certificate_key’] a los archivos del certificado comercial.

¿Cómo automatizo la renovación de Let’s Encrypt?

Usa cron o systemd timers para ejecutar certbot renew periódicamente y, si cambian los archivos, ejecuta sudo gitlab-ctl reconfigure o reinicia nginx.

¿Qué hacer si gitlab-ctl reconfigure falla?

Revisa la salida de la orden y los logs: sudo gitlab-ctl tail. Corrige el archivo /etc/gitlab/gitlab.rb y vuelve a intentar.

Resumen final

Has instalado y configurado GitLab CE en Ubuntu 16.04 usando el paquete omnibus, habilitado HTTPS con certificados Let’s Encrypt, generado DHPARAM, configurado UFW y realizado pruebas básicas como creación de proyecto y push. Sigue las buenas prácticas de respaldo y seguridad para mantener la plataforma estable y segura.

Referencias rápidas

Autor
Edición

Materiales similares

Podman en Debian 11: instalación y uso
DevOps

Podman en Debian 11: instalación y uso

Apt-pinning en Debian: guía práctica
Sistemas

Apt-pinning en Debian: guía práctica

OptiScaler: inyectar FSR 4 en casi cualquier juego
Guía técnica

OptiScaler: inyectar FSR 4 en casi cualquier juego

Dansguardian + Squid NTLM en Debian Etch
Redes

Dansguardian + Squid NTLM en Debian Etch

Arreglar error de instalación Android en SD
Android

Arreglar error de instalación Android en SD

Conectar carpetas de red con KNetAttach
Redes

Conectar carpetas de red con KNetAttach