Skip to main content
[ PIER ]

Gitea

Un servicio Git autohospedado sin dolor — como GitHub, pero tuyo.

Service #git#repository#ci#devops#code

Gitea es un servicio Git autohospedado ligero escrito en Go. Se ve y funciona como GitHub — repos, pull requests, issues, integración CI, code review, releases — pero corre como un binario único o un contenedor Docker de 100MB. Usado por desarrolladores individuales, proyectos OSS y empresas que no quieren su código en la nube de otros.

Desplegar con Pier

  1. 1 Abre el panel de Pier y haz clic en Add service.
  2. 2 Elige Gitea en la lista de plantillas.
  3. 3 Elige la versión, asigna un nombre al servicio y Pier provisionará automáticamente el contenedor, el almacenamiento y los puertos.
  4. 4 Vincula un dominio si quieres HTTPS. Traefik genera el certificado de Let's Encrypt automáticamente.

¿Qué es Gitea?

Gitea es un servicio Git autohospedado, ligero y desarrollado por la comunidad. Se ve y se comporta como GitHub — repos, pull requests, issues, milestones, releases, code review con comentarios inline, branch protection — pero corre como un único contenedor Docker de ~100 MB en un VPS de $5/mes. Originalmente forkeado de Gogs en 2016, ahora tiene una comunidad próspera y un feature set enterprise-grade que incluye Actions (CI/CD), registries de paquetes, mirroring de código, integraciones LDAP/OAuth/SSO y soporte de webhooks.

Para individuos y equipos que no quieren su código en la nube de otros — o están cansados de pagar fees por asiento — Gitea es la elección por defecto. Escala desde un desarrollador con un repo de side-project privado hasta organizaciones con miles de usuarios y decenas de miles de repos.

Cómo lo despliega Pier

Pier usa la imagen Docker oficial gitea/gitea con /data montado como volumen persistente — contiene la base SQLite (backend por defecto), los repos Git, attachments y configuración. El puerto por defecto es 3000/tcp para HTTP. Pier autogenera la contraseña inicial de admin durante el setup.

Para un despliegue más pesado con backend PostgreSQL, usa la plantilla gitea-postgresql — provisiona Gitea + un contenedor PostgreSQL dedicado en un mismo stack Docker Compose.

Para HTTPS, adjunta un dominio — Traefik maneja la emisión del cert y el ROOT_URL de Gitea se setea automáticamente desde el header X-Forwarded-Host.

Cuándo NO usar Gitea

Para DevSecOps completo con scanning de vulnerabilidades, scanning de contenedores y visualización integrada de pipeline CI/CD — GitLab CE es más completo (pero mucho más pesado). Para workflows minimalistas email-driven — sr.ht. Para proyectos hobby/de una persona — git directo sobre SSH en un servidor puede ser todo lo que necesitas.

Características clave

UI estilo GitHub

UI web para repos, branches, PRs, issues, milestones, releases, wikis. Si has usado GitHub, ya sabes Gitea.

Binario único, bajos recursos

Imagen Docker de ~100 MB, corre cómodamente en un VPS de 1 GB. Backends SQLite, MySQL/MariaDB o PostgreSQL — elige tu almacenamiento.

Actions (CI/CD)

Gitea Actions es compatible con GitHub Actions — la mayoría de actions/* y community actions simplemente funcionan. Corre runners en contenedores vía la imagen gitea/act_runner.

Code review y PRs

Pull requests con comentarios inline, hilos de review, reviewers requeridos, estrategias de merge (merge / rebase / squash), branch protection, code owners.

Registry de paquetes

Registries integrados para npm, Maven, NuGet, PyPI, Cargo, Composer, RubyGems, Helm, Docker, Pub, Conan, Generic. Reemplaza un Verdaccio/Nexus aparte.

Integraciones multi-auth

Cuentas locales, LDAP, SMTP, OAuth2 (Google, GitHub, GitLab, Discord, Azure AD, OIDC custom), SSPI, PAM. Auto-link vía JIT provisioning.

Casos de uso

Servidor Git privado de equipo

Hospeda el código de tu equipo sin pagar GitHub por asiento. Mismas features por ~$5/mes de VPS.

Casa de proyecto OSS

Hospeda un proyecto OSS (con issues, PRs, releases, Actions) en infraestructura que controlas. Mirror a GitHub para visibilidad.

Mirroring de código

Pull mirror desde GitHub/GitLab en horario — mantén una copia off-site de cada dep que use tu equipo.

Registry para artefactos internos

Un servidor para código + npm + Maven + imágenes Docker. Sin Verdaccio, sin Nexus, sin JFrog.

CI/CD para cargas no-cloud

Gitea Actions corre en tus propios runners — targets IoT/embebidos, cajas con GPU, entornos air-gapped donde los runners hosted de GitHub no alcanzan.

Ejemplos de código

Push de un repo nuevo bash
git remote add origin https://gitea.example.com/yourname/repo.git
git push -u origin main
Workflow de Gitea Actions yaml
# .gitea/workflows/test.yaml
name: test
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 22 }
      - run: npm ci
      - run: npm test
Publicar al registry npm bash
# ~/.npmrc
@yourorg:registry=https://gitea.example.com/api/packages/yourorg/npm/
//gitea.example.com/api/packages/yourorg/npm/:_authToken=<token>

npm publish
API — crear un repo bash
curl -X POST \
  -H "Authorization: token $GITEA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"my-repo","private":true}' \
  https://gitea.example.com/api/v1/user/repos

Comparativa

vs GitHub GitHub es hosted, pulido, $4-21/usuario/mes para repos privados. Gitea es OSS, autohospedado, gratis para usuarios ilimitados al coste de un VPS de $5/mes. La paridad de features es alta; Gitea no tiene integración con GitHub Copilot y algunas features enterprise avanzadas.
vs GitLab GitLab CE es rico en features pero pesado — devorador de RAM, setup complejo. Gitea alcanza 80% de las features con 5% del footprint de recursos. Elige GitLab para DevSecOps completo; Gitea para un servidor Git + CI + registry limpio.
vs Forgejo Forgejo es un fork community-friendly de Gitea (forkeado en 2022 por preocupaciones de gobernanza). Misma UI, mismas features, mismo codebase en su mayoría. Pier incluye Gitea; puedes instalar Forgejo vía plantilla Docker custom.
vs Sourcehut, Gogs Sourcehut (sr.ht) es minimalismo email-driven — paradigma distinto. Gogs es el proyecto original del que Gitea hizo fork en 2016 y ahora está menos activamente mantenido.

Preguntas frecuentes

¿Qué versión despliega Pier?
Default `latest` (Gitea 1.22+). Versiones específicas como `1.22` y `1.21` son variantes fijadas.
¿SQLite, MySQL o Postgres como backend?
Para solo / equipo pequeño — SQLite vale y es lo más simple. Para 10+ usuarios o uso pesado, corre Postgres aparte (usa la plantilla `gitea-postgresql` que empaqueta ambos).
¿Cómo corro CI?
Gitea Actions está integrado pero necesita runners. Spawn el contenedor `gitea/act_runner`, regístralo con un token y los workflows de Actions disparan automáticamente en push.
¿Cómo maneja HTTPS Pier?
Adjunta un dominio en el tab Domains de Pier. Traefik emite un cert Let's Encrypt; el `ROOT_URL` de Gitea se setea al dominio automáticamente.
¿Acceso SSH para git clone?
El puerto SSH de Gitea (default 22, interno) necesita ser NATeado vía Traefik (que no hace TCP raw por defecto) o expuesto a nivel de host. Lo más fácil — usa clone HTTPS con personal access tokens.
¿Cómo migro desde GitHub?
Gitea tiene un importer integrado para repos de GitHub, incluyendo issues, PRs, comentarios, milestones, releases y wikis. Settings → Migrations → Import from GitHub.
¿Estrategia de backup?
Dos piezas — la DB SQLite/Postgres (Pier la respalda en horario) y el directorio `/data/git/repositories` (rsync del volumen o `gitea dump` para un archivo completo).

Servicios relacionados

Desplegar en tu VPS

Gitea es un servicio Git autohospedado ligero escrito en Go. Se ve y funciona como GitHub — repos, pull requests, issues, integración CI, code review, releases — pero corre como un binario único o un contenedor Docker de 100MB. Usado por desarrolladores individuales, proyectos OSS y empresas que no quieren su código en la nube de otros.

Desplegar este servicio →