Gitea: tu propio GitHub en una Raspberry Pi
Cómo monté Gitea con Docker para guardar mis proyectos en casa, con acceso por SSH en otro puerto y el registro cerrado. Y cómo subir un proyecto que ya tienes.
Estoy estudiando administración de sistemas y genero muchos archivos: apuntes, scripts, configuraciones del laboratorio… Quería tenerlos con historial de cambios (Git) pero sin subir nada a un servicio externo. La solución: Gitea, un servidor Git ligero con una web muy parecida a GitHub.
En una Raspberry Pi 5 va sobrado: arranca en segundos y apenas usa memoria.
El docker-compose
services:
gitea:
image: docker.gitea.com/gitea:1.25
container_name: gitea
restart: unless-stopped
environment:
USER_UID: "1000"
USER_GID: "1000"
GITEA__database__DB_TYPE: sqlite3
GITEA__server__ROOT_URL: http://192.168.1.50:3000/
GITEA__server__SSH_PORT: "2222"
GITEA__service__DISABLE_REGISTRATION: "true"
GITEA__security__INSTALL_LOCK: "true"
ports: ["3000:3000", "2222:22"]
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
Lo que merece la pena explicar:
- Imagen con versión fija (
1.25) en vez delatest. Así una actualización no me pilla por sorpresa: subo de versión cuando yo quiero. - SQLite como base de datos. Para uso personal sobra, y toda la información queda en la carpeta
./gitea. La copia de seguridad es copiar esa carpeta. - Las variables
GITEA__seccion__claverellenan la configuración de Gitea (app.ini) sin tener que editarla a mano. INSTALL_LOCKse salta el asistente web de instalación, porque ya le doy la configuración por variables.DISABLE_REGISTRATION: nadie puede crearse una cuenta desde la web. Las cuentas las creo yo.
El puerto SSH
Git puede trabajar por HTTP o por SSH. Por SSH es más cómodo (sin contraseñas, con tu clave), pero hay un problema: el puerto 22 ya lo usa el SSH de la propia Pi.
La solución es publicar el SSH del contenedor en otro puerto: 2222:22. Y decírselo a Gitea con SSH_PORT, para que las direcciones que te muestra en la web sean correctas:
ssh://git@192.168.1.50:2222/ivan/mi-proyecto.git
Crear el usuario administrador
Como el registro está cerrado y me salté el asistente, el primer usuario se crea desde la terminal:
docker exec -u git gitea gitea admin user create \
--admin --username ivan --email yo@ejemplo.com \
--password 'una-temporal' --must-change-password
Con --must-change-password, Gitea te obliga a cambiarla al entrar por primera vez. Hazlo, y guarda la buena en tu gestor de contraseñas. Una contraseña temporal apuntada en unas notas es justo el tipo de cosa que se olvida ahí para siempre.
Subir un proyecto que ya tienes
- En la web de Gitea: + → Nuevo repositorio, vacío, sin README.
- En tu ordenador, dentro de la carpeta del proyecto:
git init
git add .
git commit -m "Primer commit"
git remote add origin http://192.168.1.50:3000/ivan/mi-proyecto.git
git push -u origin master
Si usas la dirección ssh:// y has añadido tu clave pública en Configuración → Claves SSH, no te pedirá contraseña nunca más.
¿Y si ya uso GitHub?
No son excluyentes. Gitea puede hacer réplicas (mirrors) de repositorios de GitHub, y al revés: empujar tus repositorios de casa a GitHub automáticamente. Yo uso Gitea para lo personal y lo que no quiero fuera de casa.
Copias
Todo está en ./gitea: repositorios, base de datos SQLite, configuración. Mi copia nocturna al NAS copia esa carpeta con el resto. Para una copia «en caliente» más formal, Gitea trae el comando gitea dump.
En resumen
Diez minutos de montaje y tienes tu propio GitHub en casa, con historial de todo lo que haces. Para alguien que estudia sistemas, además, es la excusa perfecta para usar Git a diario.
¿Te has quedado con la idea?
Tres preguntas rápidas. Cada acierto suma 10 XP.