Skip to main content
[ PIER ]

Gitea con PostgreSQL

Gitea de producción — cableado a PostgreSQL out of the box.

Service #git#repository#postgresql#devops#code

Gitea (el servicio Git ligero autohospedado) emparejado con un backend PostgreSQL dedicado para uso de producción. Gitea por defecto usa SQLite, que está bien para equipos pequeños; PostgreSQL es el backend recomendado una vez que cruzas un puñado de usuarios concurrentes, quieres backups HA, o corres Gitea Actions a cualquier volumen.

Desplegar con Pier

  1. 1 Abre el panel de Pier y haz clic en Add service.
  2. 2 Elige Gitea with PostgreSQL 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 con PostgreSQL?

Gitea es un servicio Git ligero autohospedado — repos, issues, PRs, code review, releases, registries de paquetes, Gitea Actions (CI compatible GitHub Actions). Por defecto SQLite para simplicidad, pero Postgres es el backend recomendado una vez que tienes múltiples usuarios activos, alto volumen webhook, o corres Gitea Actions a cualquier volumen.

Esta plantilla corre Gitea más un PostgreSQL dedicado en un stack Pier con el cableado env ya correcto. Inicias sesión y usas Gitea exactamente como en la plantilla standalone — código, issues, PRs, paquetes — el backend solo performa mejor bajo carga concurrente.

Cómo lo despliega Pier

Pier usa la imagen oficial gitea/gitea y postgres:17-alpine para el backend. Puertos por defecto — Gitea web en 3000, Gitea SSH en 22 (remapeado a un puerto externo alto como 222). PostgreSQL queda en la red Docker interna (no expuesto).

Volúmenes persistentes — /data para Gitea (repos, uploads, config) y /var/lib/postgresql/data para Postgres. Ambos sobreviven a reinicios de contenedor y version upgrades.

Setup inicial es la pantalla estándar de install Gitea en la primera visita - elige base de datos (pre-completada para apuntar al Postgres bundleado), configura usuario admin, save. Adjunta un dominio custom en Pier para HTTPS vía Traefik.

Cuándo NO usar esta plantilla

Para 1-3 usuarios y conteos pequeños de repos, la plantilla standalone Gitea (SQLite) es más simple. Para plataformas DevOps completas (Wiki, Pages, Container Registry built-in, escaneo de seguridad avanzado), GitLab CE es más feature-complete pero mucho más pesado en recursos. Para governance community-governed, Forgejo es un fork Gitea que vale considerar. Esta plantilla es la respuesta correcta para “Gitea de producción en mi propio VPS.”

Características clave

Gitea production-ready

Hosting Git web, issues, PRs, code review, releases, paquetes, Actions — todo Gitea, cableado a Postgres para confiabilidad de writes concurrentes.

Config DB pre-cableado

Pier configura el tipo de base de datos Gitea a postgres, más host/db/user/password env vars. Gitea arranca directo en Postgres en el primer launch.

Misma UI Gitea

Repositorios, issues, PRs, mirrors, actions, registries de paquetes (npm/pypi/maven/docker/...), webhooks, acceso SSH — todo idéntico al Gitea standalone.

Gitea Actions

CI/CD built-in compatible con sintaxis GitHub Actions. Corre en sandbox por repo; runners se despliegan separadamente.

Backup vía PostgreSQL

pg_dump captura el estado Gitea entero. Más el volumen de repos. Historia de backup más limpia que el "detén el mundo y copia" de SQLite.

Multi-tenant friendly

Organizaciones, equipos, ACLs fine-grained escalan cómodamente con Postgres. SSO vía OAuth2/OIDC/LDAP/SAML.

Casos de uso

GitHub autohospedado para un equipo

Un equipo de 5-500 usando Gitea diariamente para code review, issues, releases. PostgreSQL maneja la carga concurrente de writes issue/PR suavemente.

Git + CI interno production

Agrega runners Gitea Actions, apunta CI a PRs, ship a tu propio registry — todo en tu VPS, sin facturas de minutos GitHub Actions.

Hosting OSS público

Algunos proyectos hostean repos públicos en su propio Gitea en vez de GitHub. Postgres maneja la carga de visibility/concurrent-read.

Mirror de GitHub / GitLab

Auto-pull mirrors de repos upstream a tu Gitea para acceso offline o backup. Webhook-driven, sin sync manual.

Hub de registry de paquetes

Registry interno npm / PyPI / Maven / Docker / Helm junto a repos Git. Una superficie de auth, un target de backup.

Ejemplos de código

Clonar sobre SSH bash
# Puerto SSH expuesto por Pier (default 222 → mapea a 22 interno)
git clone ssh://[email protected]:222/alice/myrepo.git
Crear workflow Gitea Action yaml
# .gitea/workflows/build.yml
name: build
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: go test ./...
Mirror de repo GitHub text
Página de Migration en UI -
  Tipo - Mirror
  URL - https://github.com/orgs/orgname/repo
  Auth - PAT (si privado)
  Intervalo - 1h
Push imagen Docker al registry Gitea bash
docker login gitea.example.com -u alice -p $PAT
docker tag myapp gitea.example.com/alice/myapp:1.0
docker push gitea.example.com/alice/myapp:1.0

Comparativa

vs Gitea con SQLite (plantilla standalone) SQLite Gitea está bien para 1-3 usuarios y conteos pequeños de repos. Postgres-backed Gitea es el setup recomendado una vez que tienes writes concurrentes, quieres HA, o corres Actions a cualquier volumen.
vs GitLab CE GitLab es más potente (plataforma DevOps completa) pero heavyweight (mínimo realista 8 GB RAM). Gitea es ligero (~500 MB RAM); elige por recursos disponibles.
vs Forgejo Forgejo es un hard fork de Gitea gobernado por la comunidad (Codeberg). Mismo feature set, mayormente drop-in compatible. Elige basándote en governance preferida.
vs GitHub Enterprise SaaS o self-hosted, pricing enterprise. Gitea es la alternativa abierta a cero costo por seat.

Preguntas frecuentes

¿Por qué PostgreSQL sobre SQLite?
Bajo writes concurrentes (issue comments, PR updates, webhooks, Actions runs), SQLite se vuelve el cuello de botella. PostgreSQL maneja miles de conexiones concurrentes limpiamente.
¿Puedo migrar de SQLite Gitea?
Sí — Gitea envía un flow `gitea dump` / `gitea migrate`. Corre dump en SQLite Gitea, despliega plantilla Postgres, restora el dump apuntando a Postgres.
¿Necesito un runner separado para Gitea Actions?
Sí — act_runner corre como contenedor/binario separado que conecta a Gitea y ejecuta workflows. Pier no lo bundlea (aún); despliega un runner manualmente.
¿Acceso SSH?
Pier expone SSH en puerto alto (e.g. 222). Configura tu `git remote` para usar ese puerto, o configura aliases SSH config.
¿Cómo funciona el registry de paquetes?
El registry de Gitea soporta npm, PyPI, Maven, Composer, NuGet, Cargo, RubyGems, Docker, Helm, container, Conan, generic. Autentica con tokens de acceso personal.
¿Backups?
`gitea dump` más pg_dump del backend Postgres cubre todo. Más el volumen de datos que contiene repos + archivos subidos.
¿SSO / LDAP / SAML?
Sí — todo configurado en Site Administration → Authentication Sources. Gitea soporta OAuth2, OIDC, LDAP, SAML y basic auth.

Servicios relacionados

Desplegar en tu VPS

Gitea (el servicio Git ligero autohospedado) emparejado con un backend PostgreSQL dedicado para uso de producción. Gitea por defecto usa SQLite, que está bien para equipos pequeños; PostgreSQL es el backend recomendado una vez que cruzas un puñado de usuarios concurrentes, quieres backups HA, o corres Gitea Actions a cualquier volumen.

Desplegar este servicio →