Dev · sin KYC
Aloja Gitea en un VPS offshore
Ejecuta tu propia forja Git ligera en un VPS sin KYC y con pago en criptomonedas, y mantén cada repositorio, issue y pipeline de CI fuera de las nubes de terceros.
Qué es
Gitea es un servicio Git autoalojado escrito en Go — una alternativa ligera a GitHub/GitLab que ofrece repositorios, pull requests, issues, wikis, releases y Actions (CI/CD). Se distribuye como un único binario o imagen Docker con un consumo de memoria mínimo, lo que lo hace ideal para equipos que quieren control total sobre su código fuente.
Por qué alojarlo offshore
El código fuente está entre los datos más sensibles que maneja un equipo; alojarlo en un VPS offshore y sin identidad lo mantiene fuera del alcance de las grandes plataformas de hospedaje de código y sus políticas de retención de datos y retirada de contenido. Pagar en cripto sin KYC significa que la infraestructura de tu proyecto no queda vinculada a una identidad corporativa, y el ancho de banda sin medición permite que los clones, las ejecuciones de CI y las descargas de releases fluyan sin sorpresas de consumo.
El despliegue
Una configuración de referencia funcional
Copia esto en una nueva instancia de ChainVPS. Sustituye los marcadores de posición y ponlo en marcha.
# docker-compose.yml — Gitea + PostgreSQL on Ubuntu 24.04
# 1) apt install docker.io docker-compose-v2
# 2) put this file in /opt/gitea and run: docker compose up -d
# 3) open http://SERVER_IP:3000 to finish the web installer
services:
server:
image: gitea/gitea:1.22
container_name: gitea
restart: always
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=CHANGE_ME_STRONG_DB_PW
# correct clone URLs — set to your domain once DNS is ready:
- GITEA__server__DOMAIN=git.example.com
- GITEA__server__ROOT_URL=https://git.example.com/
- GITEA__server__SSH_PORT=222
- GITEA__service__DISABLE_REGISTRATION=true
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000" # web UI — front with a TLS reverse proxy in production
- "222:22" # git-over-SSH (host 222 -> container 22)
depends_on:
- db
networks:
- gitea
db:
image: postgres:16
container_name: gitea-db
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=CHANGE_ME_STRONG_DB_PW
- POSTGRES_DB=gitea
volumes:
- ./postgres:/var/lib/postgresql/data
networks:
- gitea
networks:
gitea:
external: false
Firewall
Puertos que debes abrir
| Puerto | Protocolo | Propósito |
|---|---|---|
| 3000 | TCP | Interfaz web de Gitea y git por HTTP — mantenla detrás de un proxy inverso TLS (Caddy/Nginx) en producción |
| 222 | TCP | Git a través de SSH (puerto del host mapeado al 22 del contenedor) para clonar/hacer push mediante claves SSH |
| 443 | TCP | HTTPS a través de tu proxy inverso una vez que el dominio y el certificado estén configurados |
| 22 | TCP | SSH del host para administración — mantenlo en un puerto distinto al 222 de Gitea y solo con clave |
Dimensionamiento adecuado
Qué plan necesitas
VPS Nano/Small (1-2 vCPU, 2 GB RAM)
Desarrollador individual o un puñado de usuarios, unas pocas decenas de repositorios, sin CI. Gitea consume en reposo entre 150 y 200 MB de RAM.
VPS Pro (2-4 vCPU, 4-8 GB RAM)
Equipo pequeño, pull requests activos, además de uno o dos runners de Gitea Actions para CI. Añade un volumen de almacenamiento para artefactos de releases voluminosos.
Dedicated (or Storage VPS for repos)
Muchos usuarios concurrentes, monorepos grandes, alta concurrencia de CI o mucho contenido con LFS. La CPU dedicada mantiene ágiles las operaciones de clone/pack; combínalo con un plan de almacenamiento para los datos de repositorios/LFS.
Mejores ubicaciones: Elige una ubicación de nivel privacidad — Suiza (CH) e Islandia (IS) ofrecen la postura de protección de datos más sólida para código fuente, con Países Bajos (NL), Rumanía (RO), Moldavia (MD) y Luxemburgo (LU) como sólidas alternativas offshore. Elige la región más cercana a tus colaboradores para reducir la latencia de clone/push, ya que los intercambios de git son sensibles a la latencia.
Blíndalo
Lista de verificación de hardening
- Nunca expongas el puerto 3000 directamente a internet — pon Gitea detrás de un proxy inverso TLS (Caddy con HTTPS automático o Nginx + certbot) y configura GITEA__server__ROOT_URL con el dominio https para que las URLs de clonado sean correctas.
- Configura DISABLE_REGISTRATION=true (ya incluido en el compose) justo después de crear tu cuenta de administrador para que nadie pueda autorregistrarse; invita a los usuarios manualmente o desde el panel de administración.
- Mantén git-over-SSH en el puerto 222 y el sshd propio del host en un puerto distinto, ambos solo con clave (PasswordAuthentication no); Gitea gestiona internamente su authorized_keys, así que no lo edites a mano.
- Activa 2FA en todas las cuentas y exígelo para el administrador; saca la contraseña de la base de datos de las variables de entorno hacia un secreto de Docker o un archivo .env con permisos 600.
- Haz copias de seguridad programadas de ./gitea (repositorios, configuración, LFS) y de un pg_dump de la base de datos gitea, y fija la imagen a una etiqueta de versión (gitea/gitea:1.22) en lugar de latest para que las actualizaciones sean deliberadas — lee las notas de versión antes de subir de versión mayor.
Despliégalo en
El producto ChainVPS adecuado
Preguntas
Hosting Gitea — Preguntas frecuentes
¿Puedo ejecutar CI/CD sin un servicio aparte?
Sí. Gitea incluye Actions (compatible con GitHub Actions). Actívalo y luego registra un contenedor runner (gitea/act_runner) contra tu instancia. Para carga real de CI, usa un plan Medio o superior para que las compilaciones no le quiten recursos al servicio web.
¿SQLite, MySQL o PostgreSQL?
SQLite funciona para un único usuario con carga ligera y no necesita contenedor de base de datos. Para cualquier equipo o proyecto en crecimiento, usa PostgreSQL como se muestra en el compose — gestiona la concurrencia mucho mejor y es trivial respaldarlo con pg_dump.
¿Cómo migro mis repositorios desde GitHub/GitLab?
La herramienta de migración integrada de Gitea importa un repositorio por URL, incluyendo issues, PRs, releases y wiki. Añade un token de la plataforma de origen en el formulario de migración para traer repositorios privados y sus metadatos.
¿Soporta archivos grandes (Git LFS)?
Sí, LFS es compatible de forma nativa y se almacena bajo /data. Si alojas binarios grandes o contenido multimedia, pon ./gitea en un volumen de VPS de almacenamiento y calcula el espacio en disco en consecuencia — los objetos LFS se acumulan rápido.
¿Mi código se mantiene privado en un host sin KYC?
Tus repositorios viven por completo en el disco de tu VPS, en la jurisdicción offshore que elijas; nada se replica hacia terceros. Mantén el registro desactivado, usa HTTPS + claves SSH, activa 2FA y realiza copias de seguridad cifradas fuera del servidor para tener control total.
Más para autoalojar
Otros stacks de un clic
Desplegar Gitea
en los próximos 60 segundos.
Ancho de banda ilimitado · DDoS incluido · 21 criptomonedas · sin KYC.