¿Qué es GitLab?
GitLab es mucho más que un repositorio de código. Es una plataforma DevOps completa que cubre todo el ciclo de vida del software: planificación, desarrollo, CI/CD, seguridad, monitoreo y entrega. Nació como una alternativa open-source a GitHub, pero ha evolucionado hasta convertirse en un ecosistema integral que compite directamente con soluciones como Jenkins, SonarQube, Nexus y hasta Jira en ciertos escenarios.
Lo que distingue a GitLab de otras plataformas es su enfoque single application: no necesitas integrar diez herramientas distintas. Desde una sola interfaz gestionas repositorios, pipelines CI/CD, registries de contenedores, escaneo de seguridad, revisión de código y más. Esto reduce drásticamente la fricción operativa y los costos de mantenimiento.
GitLab vs GitHub: diferencias clave
La comparación más habitual es con GitHub. Ambas son excelentes, pero tienen enfoques distintos:
╔══════════════════════════════════╦══════════════════════╦══════════════════════╗ ║ Característica ║ GitLab ║ GitHub ║ ╠══════════════════════════════════╬══════════════════════╬══════════════════════╣ ║ Self-hosted (CE gratis) ║ ✅ Sí ║ ❌ Solo GHES pago ║ ║ CI/CD integrado ║ ✅ Sí (native) ║ ✅ GitHub Actions ║ ║ Container Registry ║ ✅ Integrado ║ ✅ GitHub Packages ║ ║ Auto DevOps ║ ✅ Sí ║ ❌ No ║ ║ Built-in monitoring/prometheus ║ ✅ Sí ║ ❌ Limitado ║ ║ Wiki integrado ║ ✅ Sí ║ ✅ Sí ║ ║ Pages para sitios estáticos ║ ✅ Sí ║ ✅ GitHub Pages ║ ║ Auditoría de seguridad ║ ✅ Avanzada ║ ✅ Básica ║ ║ Límite repos privados (gratis) ║ ✅ Ilimitados ║ ✅ Ilimitados ║ ╚══════════════════════════════════╩══════════════════════╩══════════════════════╝
La gran ventaja de GitLab frente a GitHub es la capacidad de self-hosting. Para organizaciones que manejan datos sensibles o requieren control total sobre su infraestructura, instalar GitLab CE en servidores propios es una solución ideal.
Instalar GitLab CE en Debian 12
La instalación de GitLab Community Edition es directa. Eso sí, asegúrate de que el servidor tenga al menos 4 GB de RAM (2 GB pueden funcionar pero será muy lento). Estos son los pasos:
# 1. Instalar dependencias apt update && apt install -y curl wget ca-certificates # 2. Agregar el repositorio oficial de GitLab curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash # 3. Instalar GitLab CE EXTERNAL_URL="https://gitlab.midominio.com" apt install -y gitlab-ce # 4. Configurar la URL externa en /etc/gitlab/gitlab.rb # Busca la línea external_url 'http://gitlab.example.com' # y cámbiala por: # external_url 'https://gitlab.midominio.com' # 5. Reconfigurar GitLab para aplicar los cambios gitlab-ctl reconfigure
La reconfiguración puede tomar varios minutos. Al finalizar, accede a https://gitlab.midominio.com y establece la contraseña del usuario root. GitLab genera automáticamente certificados Let’s Encrypt si configuras HTTPS.
Primer proyecto y GitLab Runner
Una vez instalado, crea tu primer proyecto desde la interfaz web o vía API. Para ejecutar pipelines CI/CD necesitas al menos un GitLab Runner:
# Instalar GitLab Runner en Debian curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | bash apt install gitlab-runner -y # Registrar el runner contra tu instancia # Obtén el token desde Settings > CI/CD > Runners en tu proyecto gitlab-runner register --url https://gitlab.midominio.com --registration-token TU_TOKEN_AQUI --executor docker --docker-image alpine:latest --description "Docker Runner" # Verificar que el runner está activo gitlab-runner status
El runner ejecutará los jobs definidos en el archivo .gitlab-ci.yml de cada proyecto. En el próximo artículo profundizaremos en cómo construir pipelines de integración y despliegue continuo.
