Tutoriales técnicos
Montar un repositorio Git privado en un VPS (2025) - Guía de despliegue ultrarrápido de Gitea
Despliega Gitea rápidamente en un VPS con Docker Compose y crea un repositorio Git privado. Incluye mapeo de puertos SSH, HTTPS automático con Caddy, configuración de CI/CD con Gitea Actions y guía de copias de seguridad.

Como desarrollador, el código es tu activo principal. GitHub es muy útil, pero los repositorios privados gratuitos tienen muchas limitaciones, la transferencia de archivos grandes es lenta y los datos dependen completamente de un tercero.
En 2025, montar un servicio Git privado en tu propio VPS se ha convertido en una opción mayoritaria. Este artículo recomienda Gitea, un servicio Git de código abierto ligero, ultrarrápido y potente. No solo consume menos recursos que GitLab (funciona con solo 256 MB de memoria), sino que también se actualiza con más actividad y tiene más funciones que Gogs.
Este artículo te enseñará a desplegar Gitea rápidamente con Docker Compose, configurar el acceso HTTPS y la perforación de puertos SSH, y crear un "GitHub privado" que sea completamente tuyo.
En 2025, Gitea sigue siendo la primera opción para los servicios Git autoalojados, por razones sencillas:
- Extremadamente ligero: Escrito en Go, compilado en un único archivo, con un consumo de recursos muy bajo (funciona incluso en una Raspberry Pi).
- Funciones completas: Pull Requests, Issues, Wiki, Kanban, LFS y Packages, todo incluido.
- CI/CD integrado: Compatible con Gitea Actions, cuya sintaxis es compatible con GitHub Actions, algo fundamental para las compilaciones automatizadas.
- Comunidad activa: En comparación con el "estancado" Gogs, Gitea itera rápidamente y ofrece mejores garantías de seguridad (Gogs reveló recientemente una vulnerabilidad de alta gravedad).
- Configuración del VPS: 1 núcleo y 1 GB de memoria es suficiente (se recomiendan 2 núcleos y 2 GB para una mejor experiencia).
- Sistema: Ubuntu 20.04+ / Debian 11+.
- Software: Docker y Docker Compose ya instalados.
Ve al proveedor de tu dominio (como Cloudflare) y añade un registro A:
git.yourdomain.com->你的 VPS IP- Estado del proxy: Desactivado (solo DNS), para que Caddy solicite el SSL automáticamente.
Usaremos Docker Compose para levantar Gitea y Caddy (como proxy inverso) con un solo comando.
mkdir -p ~/gitea/{data,config,caddy/data,caddy/config}
cd ~/gitea
Crea un archivo docker-compose.yml:
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=sqlite3 # 个人使用 SQLite 足够,无需独立数据库容器
restart: always
networks:
- gitea
volumes:
- ./data:/data # 持久化数据
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
# - "3000:3000" # Web端口,通过 Caddy 代理,无需对外暴露
- "2222:22" # SSH端口,映射到主机的 2222,避免冲突
caddy:
image: caddy:latest
container_name: caddy
restart: always
networks:
- gitea
ports:
- "80:80"
- "443:443"
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
- ./caddy/data:/data
- ./caddy/config:/config
Crea ./caddy/Caddyfile y escribe la configuración de tu dominio:
git.yourdomain.com {
reverse_proxy server:3000
}
Nota: Sustituye
git.yourdomain.compor tu dominio real.
docker compose up -d
Visita https://git.yourdomain.com y verás el asistente de instalación. Solo tienes que modificar los siguientes elementos clave y dejar el resto con los valores predeterminados:
- Configuración de la base de datos: Mantén SQLite3.
- Configuración general:
- Nombre del sitio: Ponle un nombre a tu repositorio, por ejemplo "My Private Git".
- Puerto del servicio SSH: Cámbialo a 2222 (¡muy importante! Porque en Docker mapeamos el 22 interno al 2222 externo).
- Dominio del servicio SSH: Introduce tu dominio
git.yourdomain.com. - URL base:
https://git.yourdomain.com/.
- Configuración de la cuenta de administrador: Asegúrate de crear una cuenta de administrador; no la dejes vacía.
Haz clic en "Instalar ahora" y, unos segundos después, ¡tu servicio Git privado estará en línea!
Muchas personas se atascan en la clonación por SSH al autoalojar Git, porque el puerto 22 del VPS suele estar ocupado por el inicio de sesión SSH. En docker-compose.yml mapeamos el puerto SSH de Gitea al 2222.
Tu dirección de clonación tendrá este aspecto:
ssh://[email protected]:2222/username/repo.git
Fíjate en el :2222 adicional en la URL.
Si no quieres escribir el número de puerto cada vez, puedes configurarlo en el archivo ~/.ssh/config de tu ordenador local:
Host git.yourdomain.com
HostName git.yourdomain.com
User git
Port 2222
IdentityFile ~/.ssh/id_rsa
Tras configurarlo, podrás clonar igual que con GitHub (sin añadir el puerto manualmente):
git clone [email protected]:username/repo.git
Gitea 1.19+ introdujo Actions, con una sintaxis compatible con GitHub Actions. Para activarlo, debemos añadir un Runner.
Añade el servicio runner bajo services:
runner:
image: gitea/act_runner:latest
container_name: act_runner
restart: always
depends_on:
- server
volumes:
- ./runner-data:/data
- /var/run/docker.sock:/var/run/docker.sock
environment:
- GITEA_INSTANCE_URL=http://server:3000
- GITEA_RUNNER_REGISTRATION_TOKEN=<你的Token>
- GITEA_RUNNER_NAME=vps-runner
- Ve al panel de administración de Gitea -> Actions -> Runners -> Create new Runner y copia el Token.
- Sustituye
<你的Token>arriba. - Reinicia el contenedor:
docker compose up -d.
Ahora puedes crear .gitea/workflows/demo.yaml en tu repositorio y empezar a experimentar con las compilaciones automáticas.
Los datos están todos en el directorio ~/gitea/data, incluido el archivo de base de datos (sqlite.db) y los archivos de los repositorios Git.
Comando de copia de seguridad:
# 打包整个 data 目录
tar -czvf gitea-backup-$(date +%Y%m%d).tar.gz ~/gitea/data
Se recomienda combinarlo con Rclone para subirlo automáticamente al almacenamiento de objetos en la nube y garantizar que los datos estén completamente a salvo.
Con Docker + Gitea, usando menos de 500 MB de memoria, tenemos una plataforma de alojamiento de código privado con todas las funciones, comparable a GitHub.
- Seguridad: El código está en tus manos, sin preocuparte por cambios en los términos de servicios de terceros.
- Velocidad: Con una red local o un VPS de calidad, el push/pull de archivos grandes es rapidísimo.
- Tranquilidad: SQLite + Docker, con un coste de mantenimiento casi nulo.
Este es el mejor punto de partida para que cada desarrollador construya su base de conocimiento personal y su repositorio de código.