Cómo crear tu propio servidor Git en un VPS usando solo SSH (Guía práctica 2026)

¿Estás buscando una alternativa ligera a GitHub o GitLab para proyectos personales, pruebas internas o simplemente para tener el control total sin depender de terceros?

Montar un servidor Git puro por SSH sigue siendo, en 2026, una de las soluciones más simples, seguras y eficientes que existen. Consigue control absoluto, cero servicios web expuestos innecesariamente y un consumo ridículamente bajo de recursos.

En esta guía vamos a montar un servidor Git minimalista usando solo las herramientas nativas del sistema operativo. Nada de Docker, nada de bases de datos, nada de interfaces web. El resultado: un servidor que normalmente consume entre 5 y 50 MB de RAM y que, una vez configurado, prácticamente no requiere mantenimiento.

¿Por qué SSH puro en vez de Gitea, Forgejo, GitLab…?

Este enfoque no pretende competir con las plataformas completas. Simplemente brilla cuando lo que más valoras es:

  • Eficiencia brutal: 5–50 MB de RAM vs. los cientos de MB o GB que piden las soluciones con interfaz web.
  • Seguridad minimalista: Solo expones el puerto SSH (idealmente cambiado del 22). No hay que estar parcheando vulnerabilidades de nginx, unicorn, redis, etc.
  • Mantenimiento casi nulo: Git es extremadamente estable. Configurado una vez, solo te preocupas por hacer backups.

Limitaciones claras (para que no haya sorpresas):

No tendrás pull requests, issues, wikis ni interfaz bonita. Pero si el proyecto crece y necesitas esas cosas, siempre puedes instalar cgit, Gitea o migrar a Forgejo más adelante sin perder ni un solo commit.

Prerrequisitos

  • Un VPS con Linux (funciona perfectamente en Debian 12/13 y Ubuntu 22.04/24.04 LTS).
  • Acceso con privilegios de sudo.
  • Git instalado tanto en tu máquina local como en el servidor.
  • Una clave SSH (recomiendo ed25519 por seguridad y rendimiento).

Instalar Git en el servidor (si no está ya):

sudo apt update && sudo apt install git -y

Paso 1: Crear un usuario dedicado (seguridad ante todo)

Nunca uses root ni tu usuario principal para alojar repositorios. Creamos un usuario git con shell restringido que solo permite ejecutar comandos de Git.

sudo adduser \
  --system \
  --shell /usr/bin/git-shell \
  --group \
  --home /home/git \
  --disabled-password \
  git

Paso 2: Estructura de carpetas y permisos

Desde el principio organizamos los repos por tipo para no tener caos cuando tengas 20 o 30 proyectos.

sudo mkdir -p /home/git/repositories/personal
sudo mkdir -p /home/git/repositories/equipo
sudo chown -R git:git /home/git
sudo chmod 700 /home/git

Paso 3: Configurar el acceso por clave SSH (sin contraseñas)

sudo mkdir -p /home/git/.ssh
sudo touch /home/git/.ssh/authorized_keys
sudo chmod 700 /home/git/.ssh
sudo chmod 600 /home/git/.ssh/authorized_keys
sudo chown -R git:git /home/git/.ssh

Tip de seguridad importante:

Cuando añadas claves al archivo authorized_keys, utiliza el prefijo de restricciones para que esa clave solo sirva para Git y nada más:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-ed25519 AAAAC3...tu_clave_pública... aqui@tu-laptop

Paso 4: Crear un repositorio bare en el servidor

Como el usuario git tiene el shell restringido, creamos los repositorios desde un usuario con sudo:

sudo -u git git init --bare /home/git/repositories/personal/mi-proyecto.git

Paso 5: Conectar tu proyecto local al servidor

Si ya tienes un proyecto local, solo añades el remote.

Importante: Si cambiaste el puerto SSH (muy recomendado por seguridad), usa la sintaxis completa con el puerto.

# Entra en tu carpeta de proyecto local
cd mi-proyecto

# Si es un proyecto nuevo
git init
git add .
git commit -m "Primer commit"

# Añadir el remote (ejemplo con puerto 2222)
git remote add origin ssh://git@TU_IP_O_DOMINIO:2222/home/git/repositories/personal/mi-proyecto.git

# Renombrar rama principal (si es necesario) y subir
git branch -M main
git push -u origin main

Paso 6: Script para crear repositorios rápidamente (automatización básica)

Para no escribir el mismo comando cada vez, puedes tener este pequeño script en tu máquina local (guárdalo como git-create.sh y dale permisos de ejecución):

#!/usr/bin/env bash

REPO_NAME="$1"
# Cambia estos valores según tu setup
SERVER="tu-vps.com"
PORT="2222"
ADMIN_USER="tu_usuario_con_sudo"

if [ -z "$REPO_NAME" ]; then
    echo "Uso: ./git-create.sh nombre-del-repo"
    exit 1
fi

ssh -p "$PORT" "$ADMIN_USER@$SERVER" "sudo -u git git init --bare /home/git/repositories/personal/$REPO_NAME.git"

echo "¡Repositorio creado!"
echo "Conéctalo con:"
echo "git remote add origin ssh://git@$SERVER:$PORT/home/git/repositories/personal/$REPO_NAME.git"

Paso 7: Backups sencillos (y efectivos)

Como los repos bare son solo carpetas, hacer backups es trivial con rsync:

rsync -avz -e 'ssh -p 2222' git@TU_IP:/home/git/repositories/ /ruta/local/de/backup/

O hacia otro servidor remoto:

rsync -avz -e 'ssh -p 2222' /home/git/repositories/ backup@otro-servidor:/backups/git/

Hasta aquí, ya tienes tu propio servidor Git en un VPS usando solo SSH

Configurar tu propio servidor Git por SSH no solo te da privacidad y control total sobre tus proyectos, sino que también te ayuda a entender mucho mejor cómo funciona Git por debajo. Es una solución elegante, ligera y muy profesional que encaja perfectamente en cualquier setup moderno, desde un hobby hasta entornos de pruebas o internos.

En un próximo artículo te cuento cómo usar Git Hooks para hacer despliegue automático: cada git push actualiza tu sitio web o aplicación en producción sin intervención manual.

¿Qué te parece esta configuración? ¿La has probado en Debian 13 o tienes algún truco extra para gestionar múltiples usuarios/claves? Si tienes dudas (sobre puertos no estándar, hardening de SSH, etc.), puedes dejar tus comentarios.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.