
Crear tu propio servidor de Git con Linux es una excelente decisión para empresas, equipos de desarrollo, universidades, laboratorios y administradores que necesitan repositorios privados, control de acceso y soberanía sobre su código. No siempre es necesario depender de GitHub, GitLab.com o Bitbucket: con un servidor Linux puedes alojar proyectos internos, scripts, documentación, configuraciones, playbooks, código fuente y respaldos técnicos.
La solución puede ser muy simple, usando solo Git + SSH, o más completa, usando plataformas web como Gitea o Forgejo. La elección depende del tamaño del equipo, el nivel de control requerido, la necesidad de interfaz web, issues, pull requests, usuarios, organizaciones y backups automatizados.
Idea central: un servidor Git seguro debe resolver tres cosas: acceso privado por SSH, permisos claros por usuario o equipo, y copias de seguridad verificadas.
1. Qué opciones tienes para montar un servidor Git
Antes de instalar, conviene elegir el modelo correcto. No todos los equipos necesitan una plataforma completa. Para pocos usuarios, Git por SSH puede ser suficiente. Para empresas o equipos con flujo colaborativo, conviene Gitea, Forgejo o GitLab Community Edition.
| Opción | Cuándo usarla | Ventaja |
|---|---|---|
| Git + SSH | Equipos pequeños, repositorios privados simples, scripts internos. | Ligero, rápido y sin base de datos. |
| Gitolite | Cuando necesitas permisos finos sobre ramas, usuarios y repositorios. | Control de acceso avanzado sobre Git por SSH. |
| Gitea | Equipos que quieren interfaz web, usuarios, issues y repositorios privados. | Ligero, fácil de administrar y muy práctico. |
| Forgejo | Equipos que buscan una forja Git comunitaria y autoalojada. | Buena alternativa libre para colaboración y control interno. |
2. Requisitos mínimos del servidor
Para comenzar, no necesitas hardware costoso. Un VPS pequeño o un servidor Linux interno puede alojar repositorios Git sin problema, siempre que tenga disco confiable, backups y acceso seguro.
Requisitos recomendados
- Linux Debian, Ubuntu Server, Rocky Linux, AlmaLinux o similar.
- Git instalado.
- SSH activo y protegido.
- Usuario dedicado llamado git.
- Directorio para repositorios, por ejemplo /srv/git.
- Backups externos o en otro servidor.
- Firewall permitiendo solo los puertos necesarios.
3. Instalación básica: Git privado por SSH
La forma más simple de crear un servidor Git privado es usar repositorios bare y acceso SSH. Un repositorio bare no tiene árbol de trabajo; está pensado para recibir pushes y servir como repositorio remoto central.
Luego crea un repositorio privado:
Desde una computadora cliente, el desarrollador podrá agregar el remoto y subir su código:
4. Agregar llaves SSH de usuarios
Cada usuario debe generar su propia llave SSH en su computadora y entregar solo la llave pública. Nunca debe compartir la llave privada.
En el servidor, agrega la llave pública al usuario git:
Consejo: usa llaves distintas por usuario. Si una persona deja el equipo, basta con retirar su llave pública sin afectar a los demás.
5. Restringir el usuario git para que no tenga shell normal
Una mala práctica es permitir que el usuario git tenga una shell completa. Para reducir riesgos, usa git-shell, que permite operaciones Git por SSH, pero evita acceso interactivo normal al servidor.
También puedes reforzar cada llave en authorized_keys agregando restricciones como:
6. Control de acceso: simple, intermedio y avanzado
El control de acceso depende del tamaño del equipo. Para pocos usuarios, puedes gestionar acceso con llaves SSH y permisos del sistema. Para más usuarios, Gitolite, Gitea o Forgejo simplifican la administración.
| Nivel | Método | Recomendado para |
|---|---|---|
| Básico | Llaves SSH en authorized_keys. | 1 a 5 usuarios, proyectos simples. |
| Intermedio | Grupos Linux, permisos por directorio y repositorio. | Equipos internos pequeños. |
| Avanzado | Gitolite con reglas por repositorio, rama o usuario. | Equipos técnicos con varios proyectos. |
| Colaborativo | Gitea o Forgejo. | Empresas que necesitan web, usuarios, issues y revisiones. |
7. Cuándo conviene usar Gitea o Forgejo
Si quieres una experiencia parecida a GitHub, pero en tu propio servidor, Gitea o Forgejo son opciones muy recomendables. Permiten crear usuarios, organizaciones, repositorios privados, issues, pull requests, wiki, llaves SSH, tokens, webhooks y administración desde una interfaz web.
En entornos empresariales, estas plataformas facilitan la adopción porque los usuarios no dependen solo de comandos. También permiten centralizar permisos, crear equipos, revisar actividad y administrar proyectos con mayor comodidad.
Recomendación práctica: usa Git + SSH para máxima simplicidad. Usa Gitea o Forgejo cuando necesites colaboración web, usuarios, organizaciones, revisión de cambios y administración más amigable.
8. Seguridad mínima del servidor Git
Un servidor Git puede contener código fuente, credenciales accidentalmente subidas, configuraciones internas, scripts de despliegue y documentación sensible. Por eso debe protegerse como un activo crítico.
- Permite acceso solo por SSH con llaves públicas.
- Deshabilita acceso directo de root por SSH.
- Usa firewall y permite solo puertos necesarios.
- Restringe el usuario git con git-shell.
- No uses cuentas compartidas para administración.
- Retira llaves SSH de usuarios que ya no pertenecen al proyecto.
- Actualiza Git, OpenSSH y el sistema operativo.
- Activa logs y revisa intentos de acceso fallidos.
- No expongas repositorios internos innecesariamente a Internet.
- Realiza backups y pruebas de restauración.
9. Copias de seguridad para repositorios Git
Un servidor Git sin backups es un riesgo grave. Git protege muy bien el historial del código, pero no protege contra pérdida del servidor, errores administrativos, borrado accidental, corrupción de disco, ransomware o fallas de infraestructura.
Para repositorios Git simples, puedes respaldar el directorio /srv/git. También puedes crear espejos con git clone --mirror o paquetes portables con git bundle.
Regla básica: si usas Gitea o Forgejo, no basta con copiar repositorios. También debes respaldar base de datos, archivos adjuntos, configuración, llaves, avatares, hooks y datos de la aplicación.
10. Backup de Gitea o Forgejo
Gitea y Forgejo incluyen comandos de volcado para respaldar archivos y base de datos. Aun así, antes de depender de un backup, se debe probar la restauración en otro servidor o entorno de laboratorio.
Para backups más robustos, puedes usar BorgBackup o Restic, porque permiten respaldos cifrados, comprimidos, deduplicados y automatizables hacia otro servidor o almacenamiento externo.
11. Estructura recomendada de backups
| Elemento | Qué respaldar |
|---|---|
| Repositorios | Directorios .git, refs, objetos, hooks y configuración. |
| Configuración | Archivos de Gitea, Forgejo, Nginx, SSH, systemd y certificados. |
| Base de datos | SQLite, PostgreSQL o MySQL/MariaDB según la instalación. |
| Datos web | Adjuntos, avatares, issues, wiki, releases y archivos cargados. |
| Prueba de restauración | Restaurar en entorno alterno y verificar clone, push, usuarios y permisos. |
12. Buenas prácticas de operación
- Usa nombres claros para repositorios: sistema-api.git, infra-ansible.git, documentacion-ti.git.
- Define propietarios por repositorio.
- No guardes contraseñas, tokens ni llaves privadas dentro del código.
- Activa revisión de cambios si usas Gitea o Forgejo.
- Protege ramas principales como main o stable.
- Usa etiquetas y releases para versiones importantes.
- Documenta cómo clonar, crear ramas, hacer merge y solicitar revisión.
- Automatiza backups diarios y retención semanal/mensual.
- Monitorea espacio en disco y crecimiento de repositorios.
- Prueba restauración cada cierto tiempo.
13. Errores comunes al crear un servidor Git
- Usar el usuario root para alojar repositorios.
- Permitir acceso SSH con contraseña débil.
- No retirar llaves de usuarios antiguos.
- No restringir el usuario git con git-shell.
- No separar repositorios por proyecto o equipo.
- No hacer backups externos.
- Hacer backups, pero nunca probar restauración.
- Guardar secretos dentro de repositorios.
- No actualizar el sistema operativo ni Git.
- Exponer la interfaz web sin HTTPS ni controles básicos.
Preguntas clave
¿Puedo tener un servidor Git sin interfaz web?
Sí. Git por SSH funciona perfectamente para repositorios privados simples. Solo necesitas Git, SSH, repositorios bare y llaves públicas.
¿Qué es un repositorio bare?
Es un repositorio Git sin carpeta de trabajo. Está diseñado para funcionar como remoto central, recibir pushes y permitir clones.
¿Qué es mejor: Gitolite, Gitea o Forgejo?
Gitolite es ideal si quieres control de acceso avanzado sin interfaz web. Gitea y Forgejo son mejores si necesitas usuarios, organizaciones, interfaz web, issues y colaboración.
¿Un backup con rsync es suficiente?
Para Git simple puede ser suficiente si se hace correctamente y se prueba la restauración. Para Gitea o Forgejo debes incluir base de datos, configuración y archivos de la aplicación.
¿Conviene exponer el servidor Git a Internet?
Solo si es necesario. Para uso interno, es mejor acceder por VPN, red privada o túnel seguro. Si se expone, debe tener SSH protegido, HTTPS, firewall, actualizaciones y monitoreo.
Recomendamos
- Comandos básicos que debes aprender para administrar tu servidor Linux
- Por qué los servidores usan Linux: ventajas para empresas y administradores TI
- Guía completa de redes en Linux: comandos, diagnóstico, configuración y solución de problemas
- Ciberseguridad en Linux: 50 herramientas gratuitas para proteger servidores y estaciones
- Cómo instalar Wazuh paso a paso como SIEM y XDR en Linux
En resumen
Crear tu propio servidor Git con Linux es una forma práctica de recuperar control sobre el código, la documentación y los proyectos internos. Para escenarios simples, Git por SSH con repositorios bare es suficiente. Para control avanzado, Gitolite ofrece reglas precisas. Para colaboración completa, Gitea o Forgejo permiten interfaz web, usuarios, issues, pull requests y administración más sencilla.
La clave está en no olvidar la seguridad: llaves SSH, usuario dedicado, git-shell, permisos correctos, backups externos, restauración probada y control de acceso por proyecto. Un servidor Git no es solo un lugar donde guardar código; es parte crítica de la infraestructura tecnológica.
Conclusión editorial
Git autoalojado en Linux combina tres ventajas poderosas: privacidad, control y reducción de dependencia externa. Pero ese control exige responsabilidad: permisos bien definidos, seguridad por SSH y una política seria de copias de seguridad. Si se implementa correctamente, puede convertirse en una pieza central para DevOps, administración TI, documentación y desarrollo empresarial.

