Guía de despliegue

Gitea vs GitLab: ¿qué forja Git self-hosted en VPS?

Desplegar en un VPS Cloud →

Comparativa

Gitea vs GitLab: ¿qué forja Git self-hosted en VPS?

Comparativas10 min de lectura10 pasos

Alojar tu propia forja Git es recuperar el control de tu código, de tu CI y de tus secretos. Gitea apuesta por la ligereza; GitLab, por la plataforma completa. Te explicamos cómo decidirte y desplegarla en un VPS — desde la comparativa de licencias hasta la instalación en cuatro pasos.

Contenido· Por qué autoalojar tu forja Git en un VPS1/13
  1. 01Por qué autoalojar tu forja Git en un VPS
  2. 02Las ventajas de una forja autoalojada
  3. 03Gitea vs GitLab: diferencias de licencia en 2026
  4. 04Rendimiento y recursos del servidor
  5. 05Gitea vs GitLab CE: tabla comparativa completa
  6. 06Comparativa de funcionalidades CI/CD
  7. 07Migración GitLab a Gitea: lo que cubre la CVE-2026-85706
  8. 08Cuándo elegir GitLab CE pese al coste en recursos
  9. 09Requisitos según la forja elegida
  10. 10Instalar Gitea en un VPS ServOrbit en 4 pasos
  11. 11Desplegar Gitea (o GitLab) en un VPS con Docker
  12. 12Gitea vs GitLab CE: tabla comparativa
  13. 13Gitea + Woodpecker CI: el stack ligero para equipos de 1 a 15

Por qué autoalojar tu forja Git en un VPS

Una forja Git autoalojada mantiene tu propiedad intelectual fuera de las plataformas públicas y elimina cualquier límite arbitrario sobre el número de repositorios privados, de colaboradores o de minutos de CI. En un VPS, controlas la localización de los datos, las copias de seguridad y la integración con tu pipeline interno. Gitea (y su fork Forgejo) está escrito en Go: un binario único, arranque instantáneo, huella de memoria mínima, ideal para un VPS modesto. GitLab CE es una suite integrada (incidencias, CI/CD, registro Docker, registro de paquetes, wiki, entornos), pero consume mucha más RAM.

Las ventajas de una forja autoalojada

  • Repositorios privados sin tope ni suscripción por puesto
  • CI/CD bajo tu control, con tus propios runners en el VPS
  • Secretos y tokens almacenados en tu servidor, fuera de una plataforma de terceros
  • Registro de imágenes Docker y de paquetes integrado, cerca de tus despliegues
  • Cumplimiento y localización de los datos completamente bajo control
  • Con Gitea: un único binario, con una copia de seguridad que se limita a una carpeta y una base de datos

Gitea vs GitLab: diferencias de licencia en 2026

Gitea se publica bajo licencia MIT: puedes leer el código, modificarlo, redistribuirlo y alojarlo sin restricciones comerciales. Forgejo, su fork comunitario nacido en 2022, aplica la misma licencia. GitLab CE también es MIT — pero únicamente la capa Community Edition. GitLab EE (Enterprise Edition) es propietario: las funcionalidades premium (SAML SSO avanzado, aprobaciones de MR múltiples, SAST/DAST integrados, epics, roadmaps) están bloqueadas detrás de una suscripción de pago que empieza en varios cientos de euros por usuario al año. Para un equipo que autoaloja GitLab CE, el riesgo principal no es la licencia sino el efecto de arrastre hacia el nivel de pago: las funcionalidades ausentes en CE empujan progresivamente hacia EE. Con Gitea o Forgejo, todas las funcionalidades disponibles están incluidas en la versión libre, sin nivel de pago.

Rendimiento y recursos del servidor

Gitea consume aproximadamente 100 a 150 MB de RAM en reposo en un despliegue Docker estándar con PostgreSQL. Con una decena de runners activos y algunas pipelines simultáneas, te mantienes por debajo de 400 MB para la forja — encaja fácilmente en un VPS de 2 GB. GitLab CE en omnibus es una categoría diferente: PostgreSQL, Redis, Sidekiq, Gitaly, Puma y NGINX corren en paralelo. En reposo, el conjunto supera habitualmente los 3 a 4 GB de RAM y puede subir a 6-8 GB bajo carga CI. GitLab recomienda oficialmente 8 GB de RAM para uso en producción con CI activado.

Gitea vs GitLab CE: tabla comparativa completa

Desplace la tabla

CriterioGitea / ForgejoGitLab CE
RAM en reposo~128 MB (solo la forja)3 a 4 GB (omnibus completo)
RAM recomendada producción1 a 2 GB8 GB
ArquitecturaBinario Go únicoSuite multiservicio (omnibus)
Tiempo de arranqueCasi instantáneoVarios minutos
LicenciaMIT (Gitea) / MIT (Forgejo)MIT (CE) / propietaria (EE)
CI/CD integradaGitea Actions (estilo GitHub)GitLab CI/CD, muy completa
Runners distribuidosBásico (act runner)Avanzado (runners distribuidos, executor k8s)
SAST / DAST integradoNo (vía plugins CI)Solo EE
Aprobaciones de MR múltiplesSimpleAvanzado (EE)
Registro Docker / paquetesIncluido y ligeroIncluido, completo
Gestión de proyectos (incidencias, tableros)EsencialAvanzada (epics según la edición)
Facilidad de copia de seguridadCarpeta + dump SQLProcedimiento omnibus dedicado
Ideal paraVPS modesto, equipos de 1 a 30 devsPlataforma DevOps enterprise

Comparativa de funcionalidades CI/CD

Gitea Actions apareció en Gitea 1.19 (2023) y reutiliza exactamente la sintaxis de los workflows de GitHub Actions: los archivos .github/workflows/*.yml existentes son reutilizables sin modificación en la mayoría de los casos. El ejecutor subyacente es act, encapsulado en un runner Docker. Es suficiente para la mayoría de las pipelines: build, test, lint, push de imagen, despliegue SSH. Las limitaciones aparecen en los casos avanzados: sin cachés compartidas entre runners a escala, sin entornos de revisión nativos. GitLab CI es más maduro en estos puntos: runners distribuidos en varias máquinas, ejecutores Kubernetes, cachés compartidas, entornos dinámicos, review apps, directivas rules: e include: potentes. La regla práctica: Gitea Actions es suficiente para equipos de 1 a 20 desarrolladores con pipelines estándar; GitLab CI se impone cuando la madurez del pipeline es en sí misma un criterio de elección.

Migración GitLab a Gitea: lo que cubre la CVE-2026-85706

La CVE-2026-85706 es una vulnerabilidad de tipo Server-Side Request Forgery (SSRF) descubierta en GitLab CE y EE que afecta a las versiones anteriores al parche de marzo de 2026. Permite a un atacante autenticado forzar a GitLab a hacer solicitudes HTTP hacia recursos de la red interna a través de la funcionalidad de importación de repositorio remoto. En un VPS donde GitLab comparte la red interna con otros servicios (bases de datos, registros, APIs), la exposición es real. Gitea no está afectado por esta CVE específica. La migración GitLab a Gitea está documentada y cubierta por gitea-migration-tool: importa repositorios, incidencias, etiquetas, hitos, pull requests y comentarios desde la API de GitLab. Si estás ejecutando una versión sin parchear de GitLab CE en un VPS expuesto, migrar a Gitea o actualizar urgentemente son las únicas opciones razonables.

Cuándo elegir GitLab CE pese al coste en recursos

  • Equipos de más de 50 desarrolladores activos: la gestión detallada de permisos y los grupos anidados de GitLab justifican la complejidad
  • Compliance enterprise o certificación ISO 27001: los logs de auditoría, las aprobaciones de MR con quórum y las políticas de push protegido son más maduras
  • SAST / DAST integrado en el pipeline (requiere GitLab EE, pero algunos equipos prefieren consolidar en una única herramienta de pago)
  • Review apps y entornos dinámicos por MR: GitLab CI lo gestiona nativamente; Gitea Actions requiere herramientas externas
  • Runners de Kubernetes con autoescalado: GitLab dispone de un operador K8s dedicado y un executor nativo
  • Wiki vinculada al repositorio con historial Git y renders de Mermaid / PlantUML integrados en la interfaz

Requisitos según la forja elegida

Gitea es frugal: 1 vCPU y 1 GB de RAM bastan para un equipo pequeño, 2 GB con la base de datos y algunos runners. GitLab CE es mucho más exigente: apunta como mínimo a 4 GB de RAM (8 GB recomendados en uso real con CI), 4 vCPU y un disco rápido, porque la suite incorpora PostgreSQL, Redis, Sidekiq y Gitaly. En ambos casos necesitas Docker y Compose, un subdominio (git.tudominio.com), un reverse proxy para el TLS e, idealmente, un segundo subdominio si activas el registro Docker.

Instalar Gitea en un VPS ServOrbit en 4 pasos

  1. Preparar el volumen y la red Docker

    En tu VPS ServOrbit, crea los directorios de datos y una red Docker aislada: mkdir -p /srv/gitea/{data,db} && docker network create forge. Esta red permite que Gitea y PostgreSQL se comuniquen sin exponer la base de datos a la interfaz pública.

  2. Escribir el docker-compose.yml

    Declara dos servicios: gitea/gitea:latest montado en /srv/gitea/data y postgres:16-alpine montado en /srv/gitea/db. Expón el puerto 3000 internamente y el puerto SSH de Git 2222 externamente. Pasa GITEA__database__DB_TYPE=postgres, GITEA__server__DOMAIN y GITEA__server__ROOT_URL como variables de entorno.

  3. Configurar el dominio y el SSL

    En tu área de cliente ServOrbit, crea un registro DNS para git.tudominio.com apuntando a la IP de tu VPS. Haz de proxy de ese subdominio con Caddy o Nginx hacia el puerto 3000 de Gitea. Caddy gestiona Let's Encrypt automáticamente; con Nginx, añade un bloque certbot. Verifica que se transmite X-Forwarded-Proto: https para que las URL de clonado sean correctas.

  4. Crear el primer repositorio y conectar un runner CI

    Ejecuta docker compose up -d, luego accede a https://git.tudominio.com. El asistente de instalación se abre en la primera conexión: indica el tipo de base de datos (PostgreSQL), confirma el dominio y crea la cuenta de administrador. Para CI, instala act_runner, regístralo en Administración > Runners y coloca tu primer .gitea/workflows/ci.yml en un repositorio.

Desplegar Gitea (o GitLab) en un VPS con Docker

  1. Crear los volúmenes y la red

    Prepara mkdir -p /srv/gitea/{data,db} y una red Docker dedicada docker network create forge. La separación data/db facilita copias de seguridad diferenciadas del código y de la base de datos.

  2. Definir el docker-compose.yml

    Para Gitea, declara el servicio gitea/gitea más un postgres, monta los volúmenes y expón el puerto HTTP 3000 y el puerto SSH de Git 2222 en local. Para GitLab, utiliza gitlab/gitlab-ce con la variable GITLAB_OMNIBUS_CONFIG para fijar la external_url.

  3. Arrancar y finalizar la instalación

    Ejecuta docker compose up -d. Gitea muestra un asistente de instalación en la primera conexión (indica el tipo de base de datos y el dominio); GitLab tarda varios minutos en inicializarse, recupera en los logs la contraseña root generada.

  4. Configurar el reverse proxy y el SSL

    Haz de proxy de git.tudominio.com hacia el puerto HTTP de la forja con Caddy o Nginx para obtener un certificado Let's Encrypt. Asegúrate de transmitir el X-Forwarded-Proto correcto para que las URL de clonado HTTPS sean correctas.

  5. Activar el SSH de Git

    Mapea el puerto SSH del contenedor hacia un puerto del VPS (por ejemplo, 2222) y configura tus claves. Rellena SSH_DOMAIN para que los comandos git clone que propone la interfaz sean exactos.

  6. Conectar la CI/CD

    Registra un runner: Gitea Actions (compatible con la sintaxis de GitHub Actions) o un GitLab Runner Docker. Limita sus recursos y aíslalo en su propio contenedor para que un job pesado no tumbe la forja.

Gitea vs GitLab CE: tabla comparativa

Desplace la tabla

CriterioGiteaGitLab CE
RAM mínima recomendadaDe 1 a 2 GBDe 4 a 8 GB
ArquitecturaBinario Go únicoSuite multiservicio (omnibus)
Tiempo de arranqueCasi instantáneoVarios minutos
CI/CD integradaGitea Actions (estilo GitHub)GitLab CI/CD, muy completa
Registro Docker / paquetesIncluido y ligeroIncluido, completo
Gestión de proyectos (incidencias, tableros)EsencialAvanzada (epics según la edición)
Facilidad de copia de seguridadCarpeta + dump SQLProcedimiento omnibus dedicado
Ideal paraVPS modesto, equipo pequeño/medianoPlataforma DevOps completa

Gitea + Woodpecker CI: el stack ligero para equipos de 1 a 15

Si Gitea Actions te parece demasiado cercano al ecosistema GitHub y quieres una CI estrictamente self-hosted sin dependencia de act, mira Woodpecker CI (un fork de Drone CI, licencia Apache 2.0). Se integra nativamente con Gitea vía OAuth, corre en Docker, y su sintaxis YAML es más explícita que GitHub Actions. El stack Gitea + Woodpecker CI consume menos de 300 MB de RAM en reposo en un VPS de 2 GB — frente a un mínimo de 4 GB para GitLab CE con CI activado. Para equipos de 1 a 15 desarrolladores con pipelines estándar, es la combinación self-hosted más frugal disponible.

En GitLab, evita el OOM-kill en un VPS pequeño reduciendo la concurrencia: pon puma['worker_processes'] a 2 y sidekiq['max_concurrency'] a 10 en la configuración omnibus. Si la RAM sigue siendo un problema, echa un vistazo a Forgejo (fork comunitario de Gitea), que conserva la ligereza y cubre el 90% de las necesidades de un equipo, registro y Actions incluidos.

Su forja Git lista para clonar

Un VPS Cloud ServOrbit con plantilla Docker le permite desplegar Gitea o GitLab con reverse proxy, SSL y runner de CI en unos pocos pasos, desde su área de cliente.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva