Gitea: Git Self-Hosted Ligero para tu Homelab

¿Por qué Git Self-Hosted?

En la era de la nube, confiamos nuestro código a plataformas de terceros como GitHub o GitLab. Sin embargo, cada vez más usuarios valoran la privacidad, el control total sobre sus datos y la independencia de servicios externos. ¿Qué pasa si GitHub cambia sus términos de servicio? ¿O si tu cuenta se ve comprometida?

Alojar tu propio servidor Git en tu NAS o Raspberry Pi te ofrece:

  • Privacidad absoluta: Tu código nunca sale de tu red (a menos que tú quieras).
  • Control total: Tú decides quién tiene acceso y qué características activar.
  • Sin límites arbitrarios: Repositorios privados ilimitados, sin pagar suscripciones.
  • Aprendizaje: Entender cómo funciona Git a bajo nivel te hace mejor desarrollador.

Si estás buscando una solución ligera, rápida y fácil de mantener, Gitea es probablemente tu mejor opción.

¿Qué es Gitea?

Gitea es un servicio de Git autoalojado escrito en Go, diseñado para ser ligero, rápido y multiplataforma. Nace como un fork de Gogs con el objetivo de ofrecer un desarrollo más abierto y una comunidad más activa.

La principal ventaja de Gitea es que consigue ofrecer una experiencia similar a GitHub o GitLab pero con un consumo de recursos mínimo. Mientras que GitLab puede requerir 4GB de RAM solo para funcionar, Gitea corre perfectamente con 512MB, haciéndolo ideal para:

Características Principales

Gitea no es solo un servidor Git básico. Incluye la mayoría de funcionalidades que necesitas para gestionar proyectos de software:

Repositorios Git

Creación ilimitada de repositorios públicos y privados, con soporte para forks, mirrors, y migración desde GitHub/GitLab.

Pull Requests y Code Review

Flujo de trabajo completo con PRs, comentarios en líneas específicas de código, aprobaciones requeridas y protección de ramas.

Issues y Kanban

Sistema de seguimiento de incidencias con etiquetas, milestones, asignaciones y tableros tipo Kanban para gestión ágil.

Wiki integrada

Cada repositorio puede tener su propia wiki basada en Markdown, perfecta para documentación.

Gitea Actions (CI/CD)

Desde la versión 1.19, Gitea incluye Actions, un sistema de integración continua compatible con los workflows de GitHub Actions. Puedes ejecutar tests, compilar aplicaciones o desplegar automáticamente usando runners autoalojados.

Otras características

  • Registro de contenedores Docker integrado
  • Packages (npm, PyPI, Maven…)
  • Autenticación OAuth, LDAP, SAML
  • Notificaciones por email
  • API REST completa
  • Interfaz web responsive

Gitea vs GitLab vs Gogs

CaracterísticaGiteaGitLab CEGogs
RAM mínima512 MB4 GB512 MB
CI/CD integrado✅ Actions✅ GitLab CI
Container Registry
Actividad desarrolloAltaMuy altaBaja
Fácil de instalar⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
ComunidadGrandeMuy grandePequeña

¿Cuándo elegir cada uno?

  • Gitea: Balance perfecto entre características y ligereza. Ideal para homelabs.
  • GitLab CE: Si necesitas CI/CD avanzado, análisis de código o gestión de proyectos completa y tienes recursos de sobra.
  • Gogs: Solo si necesitas lo más básico posible y no te importa la falta de actualizaciones.

Requisitos del Sistema

Una de las grandes ventajas de Gitea es que funciona prácticamente en cualquier hardware:

Mínimos (funcional)

  • 1 core CPU
  • 512 MB RAM
  • 1 GB espacio en disco

Recomendados (cómodo)

  • 2 cores CPU
  • 1 GB RAM
  • 10+ GB espacio (según tus repos)

Esto significa que puedes ejecutar Gitea en:

Docker Compose: Instalación Completa

La forma más sencilla de instalar Gitea es usando Docker Compose. A continuación te presento una configuración completa con PostgreSQL como base de datos (más robusta que SQLite para uso en producción):

version: "3.8"

services:
  db:
    image: postgres:16-alpine
    container_name: gitea-db
    restart: unless-stopped
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=tu_password_segura_aqui
      - POSTGRES_DB=gitea
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    networks:
      - gitea-net

  gitea:
    image: gitea/gitea:1.22-rootless
    container_name: gitea
    restart: unless-stopped
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=tu_password_segura_aqui
      - GITEA__server__DOMAIN=gitea.tudominio.com
      - GITEA__server__ROOT_URL=https://gitea.tudominio.com/
      - GITEA__server__SSH_DOMAIN=gitea.tudominio.com
      - GITEA__server__SSH_PORT=2222
      - GITEA__server__SSH_LISTEN_PORT=2222
      - GITEA__actions__ENABLED=true
    ports:
      - "3000:3000"
      - "2222:2222"
    volumes:
      - ./gitea-data:/var/lib/gitea
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    networks:
      - gitea-net
    depends_on:
      - db

networks:
  gitea-net:
    driver: bridge

Notas importantes:

  • Usamos la imagen rootless por seguridad (no ejecuta como root).
  • Cambia tu_password_segura_aqui por una contraseña fuerte.
  • El puerto 2222 se usa para SSH (evita conflictos con el SSH del host).
  • Los datos persistentes se guardan en subdirectorios locales.

Guía de Instalación Paso a Paso

Paso 1: Crear directorio de trabajo

mkdir ~/gitea && cd ~/gitea

Paso 2: Guardar el docker-compose.yml

nano docker-compose.yml
# Pega el contenido anterior, guarda (Ctrl+O) y sal (Ctrl+X)

Paso 3: Iniciar los contenedores

docker compose up -d

Paso 4: Configuración inicial

Abre tu navegador y accede a http://tu-ip:3000. Verás el asistente de instalación:

  1. Configura la base de datos (ya está preconfigurada en el compose).
  2. Establece la URL base y el dominio.
  3. Crea la cuenta de administrador (¡no olvides hacerlo ahora!).
  4. Haz clic en «Install Gitea».

Paso 5: Configurar reverse proxy (opcional pero recomendado)

Si usas Synology con Synology Proxy o Nginx Proxy Manager, configura un proxy inverso para acceder por HTTPS:

  • Domain: gitea.tudominio.com
  • Scheme: http
  • Forward Hostname: tu-ip-local
  • Forward Port: 3000

Configuración SSH para Git

Para poder usar los comandos git clone git@... o hacer push por SSH, necesitas configurar tu cliente:

En tu máquina local

Edita o crea el archivo ~/.ssh/config:

Host gitea
    HostName gitea.tudominio.com
    Port 2222
    User git
    IdentityFile ~/.ssh/id_ed25519

Ahora puedes clonar repositorios así:

git clone git@gitea:usuario/mi-repo.git

O si prefieres sin configurar el config:

git clone ssh://git@gitea.tudominio.com:2222/usuario/mi-repo.git

Añadir tu clave SSH a Gitea

  1. Copia tu clave pública: cat ~/.ssh/id_ed25519.pub
  2. En Gitea: Settings → SSH / GPG Keys → Add SSH Key
  3. Pega tu clave y guarda

CI/CD con Gitea Actions

Gitea Actions te permite automatizar tareas cuando ocurren eventos en tus repositorios (push, PRs, etc.). Aquí tienes un ejemplo básico que ejecuta tests en Python:

Crea el archivo .gitea/workflows/test.yml en tu repositorio:

name: Tests

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'
      
      - name: Install dependencies
        run: |
          pip install -r requirements.txt
          pip install pytest
      
      - name: Run tests
        run: pytest

Para que funcione, necesitas registrar un runner:

  1. En Gitea: Site Administration → Runners → Create New Runner
  2. Copia el token de registro
  3. En tu servidor, ejecuta el runner de Gitea con ese token

La sintaxis es 100% compatible con GitHub Actions, así que puedes reutilizar workflows existentes.

Gitea vs Alternativas: ¿Por Qué Elegir Gitea?

Existen varias soluciones de Git autoalojado disponibles. GitLab CE es la más completa pero consume muchos recursos (mínimo 4GB RAM). Gogs es ligero pero su desarrollo se ha estancado. Gitea nació como fork de Gogs, manteniendo su ligereza pero con desarrollo activo y una comunidad vibrante.

Gitea consume aproximadamente 200MB de RAM en reposo, frente a los 2-4GB de GitLab. Para un NAS doméstico o un homelab modesto, esta diferencia es crítica. Además, Gitea incluye CI/CD integrado mediante Gitea Actions (compatible con GitHub Actions), lo que lo convierte en una plataforma DevOps completa.

Otra ventaja significativa es la velocidad: Gitea responde prácticamente al instante incluso en hardware modesto, mientras que GitLab puede tardar varios segundos en cargar páginas en hardware limitado. Si tu prioridad es hosting de código ligero con funcionalidades modernas, Gitea es la elección acertada.

Integración con CI/CD

Gitea Actions te permite automatizar builds, tests y despliegues directamente desde tu repositorio. Los workflows son compatibles con la sintaxis de GitHub Actions, lo que facilita migrar pipelines existentes. Puedes configurar runners locales que se ejecuten en tu mismo NAS o en máquinas dedicadas de tu homelab.

Un ejemplo práctico: configura un workflow que compile automáticamente tu blog estático, ejecute tests de linting, y despliegue los cambios a tu servidor web cada vez que hagas push a la rama principal. Todo esto sin depender de servicios externos y con total privacidad de tu código fuente.

Si te interesa ampliar tu homelab, te recomendamos también nuestras guías sobre GitOps en tu NAS, mejores aplicaciones Docker para NAS, estrategia de backup 3-2-1.

Si te interesa ampliar tu homelab, te recomendamos también nuestras guías sobre GitOps en tu NAS, mejores aplicaciones Docker para NAS, estrategia de backup 3-2-1.

Conclusión

Gitea es la solución perfecta si buscas un servidor Git autoalojado que no consuma todos los recursos de tu NAS o Raspberry Pi. Con características como PRs, issues, wiki y CI/CD integrado, ofrece todo lo necesario para gestionar proyectos personales o pequeños equipos.

Su facilidad de instalación mediante Docker Compose y sus bajos requisitos de hardware lo convierten en una excelente opción para cualquier homelab.

¿Te animas a probarlo?

Si aún no tienes un NAS donde hospedar Gitea, aquí tienes algunas recomendaciones según presupuesto:

¿Tienes dudas sobre la instalación? Déjame un comentario y te ayudo. ¡Happy coding! 🚀

Recursos Relacionados para tu Homelab

Para ampliar tu conocimiento sobre homelab y NAS, consulta estas guías complementarias que profundizan en herramientas esenciales y configuraciones avanzadas:


Tags: Gitea, Git, Self-Hosted, Docker, CI/CD

Categorías: Homelab (7), Software NAS (6)

Status: draft

Precios y especificaciones sujetos a cambio. Verificar en web oficial del fabricante. Este artículo contiene enlaces de afiliado — si compras a través de ellos, nos ayudas a mantener el blog sin coste adicional para ti.

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*