Alojando mi propio servidor git con Forgejo

Publicado el Jueves, 8 de enero de 2026

Forgejo es una plataforma de software web colaborativa para alojar repositorios git. Es software libre y gratuito, publicado bajo la licencia GPLv3. Una de las plataformas más populares actuales de alojamiento git es GitHub. Forgejo es similar, con la ventaja de ser software libre y permitirnos alojarla donde, cómo y cuándo queramos. Codeberg.org es una instancia de Forgejo, una plataforma equivalente a GitHub, pero con otro montón de ventajas: es un esfuerzo sin fines de lucro, no yanqui, liderado por la comunidad.

Ambos proyectos están bajo el paraguas de Codeberg e.V., una organización democrática sin fines de lucro en Alemania.

Forgejo se jacta de ser "fácil de instalar y de bajo mantenimiento, simplemente hace el trabajo". Y debo decir que en mi experiencia hasta ahora, esto se cumple. Además su documentación da gusto. No es que haya necesitado buscar demasiada cosa, una vez que quedó funcionando no le cambié mucho. Pero siempre que necesité algo lo encontré ahí.

Instalando Forgejo

Para mi instancia local de Forgejo, estoy usando mi leal Raspberry Pi 4 donde también tengo alojado Navidrome y alguna cosa más de la que escribiré más adelante:

Neofetch Raspberry Pi 4 - enero 2026

Forgejo publica una versión estable cada tres meses y una versión de soporte a largo plazo una vez por año. Se publican versiones parches con arreglos de bugs y vulnerabilidades de seguridad más frecuentemente. Tenemos un montón de opciones para instalarlo: descargar un binario, usar el gestor de paquetes de nuestro sistema o con Docker.

En mi caso elegí usar Docker con un archivo docker-compose. Docker Compose nos permite definir y ejecutar aplicaciones con varios contenedores Docker. En este caso por un lado necesitamos el contenedor para forgejo y opcionalmente el contenedor para la base de datos. Forgejo nos provee ejemplos para armar una versión a la medida. También funciona con Podman, pero no tengo experiencia con esta herramienta así que por ahora me quedo con Docker.

Si no usamos uno de los ejemplos de docker-compose con base de datos (MySQL o PostgreSQL), va a usar SQLite por defecto. En mi caso creé un directorio forgejo en /home/fernandoy ahí adentro creé el archivo compose.yml. Copie y pegué el ejemplo con PostgreSQL de la documentación oficial, seteando algunas variables a medida. Al ejecutar docker compose up, tenemos Forgejo corriendo en el puerto 3000 (por defecto) de nuestro sistema. Y así de fácil fue.

Al entrar al sitio web (e.g. http://raspberrypi:3000) tenemos que seguir algunas configuraciones y registrar un primer usuario. Éste usuario va a tener permisos de administración. Y así queda todo armado. ¡Es momento de empezar a crear repositorios y subir código!

forgejo @picandocodigo

De a poco voy a ir agregando más de mis proyectos. Lo que vengo haciendo es cada vez que modifico o actualizo algo en un proyecto personal, agrego el repositorio remoto nuevo y lo publico en Codeberg y Forgejo. Como la mayoría ya tienen un remoto origin que dirige a GitHub, estoy agregando local y codeberg para los nuevos remotos. La escasez de proyectos muestra lo poco que he estado trabajando en mis proyectos personales los últimos meses... Pero eso cambia este año 💪

Algunas cosas que aprendí

Forgejo tiene una herramienta forgejo cli para administrar nuestra instancia. Para entrar al contenedor y usarla tenemos que ejecutar:

docker exec -it forgejo /bin/sh

Al ejecutar un comando con forgejo, me saltó el error:
Forgejo is not supposed to be run as root.

Mirando el archivo /etc/group del contenedor, está listado el usuario git, así que ejecuté su - git para cambiarme al usuario git y se resuelve ese error.

Una vez estuve un tiempo sin entrar a la web y me olvidé el nombre de usuario y contraseña. Soy viejo, perdón... Pero con la línea de comando me resultó bastante fácil ver los usuarios y actualizar la contraseña. Con el comando forgejo admin user list veo la lista de usuarios, en este caso uno sólo picandcodigo, y con el siguiente comando puedo cambiarle la contraseña:
forgejo admin user change-password --username picandocodigo --password nuevoPassword

Inicialmente estaba usando la versión 12 de Forgejo. Pero publicada la versión 13, decidí actualizarme. Edité el archivo compose.yml y le cambié la versión a la imagen en image: codeberg.org/forgejo/forgejo:13. Para actualizar la imagen Docker de forgejo, ejecuté docker compose pull, y quedó ejecutando Forgejo 13. Tuve suerte, todo siguió funcionando bien, sin ningún problema. En algún momento debería escribir un script que se fije y me avise si hay una versión más nueva para actualizar. Pero mientras tanto me da algo de mantenimiento para hacer en mi Raspberry Pi.

Pensamientos finales

Otro aspecto muy interesante de Forgejo es que se está trabajando activamente en la federación. Esto implicaría que distintas instancias de Forgejo podrían conectarse entre sí y no estaría todo centralizado en Codeberg y otras asociaciones que decidieran alojar instancias de Forgejo. Esa es la web autónoma, sustentable y abierta que queremos ✊ (Yo y mis otros yos, por lo menos). Ya hay algunos plugins que proveen esta funcionalidad, pero en el futuro va a estar integrada nativamente en el código.

Gentoo es un proyecto software libre grande que recientemente migró de GitHub a Codeberg.: "Más que nada por los intentos contínuos de forzar el uso de Copilot (nota de Fernando: el clippy de código de Microslop/GitHub) para nuestros repositorios, Gentoo está actualmente considerando y planea la migración de nuestros espejos de repositorio y contribuciones a través de pull requests a Codeberg". Seguramente no sea el último.

Dejar de usar GitHub del todo es muy difícil por varias razones. Microslop tiene que terminar de romperlo para que la gente siga migrando, y más proyectos grandes tienen que acompañar la migración. Pero de a poco seguro va a ir ocurriendo. Mi teoría es que de acá a un tiempo, GitHub va a pasar a ser algo así como Jira. Una herramienta que en teoría "hace su trabajo", pero sólamente la usan las empresas corporativas porque alguien les vendió la idea de que así se hace el desarrollo. Microslop lo va a seguir arruinando y llenando de lo que llaman AI éstos días, y seguirá empeorando.

Por ahora no voy a quitar mis proyectos de GitHub, pero proyectos personales nuevos ya van a ir sólo a Codeberg y mi instancia de Forgejo. Espero que este artículo ayuda a inspirar a más gente a probar Codeberg y Forgejo, y con suerte alojar su propia instancia.

3 comentarios en este post

Feed de comentarios
  1. Avatar

    Drk0027 8 enero. 2026 - 12:32

    Jajaja llegas tarde. estuve mucho tiempo decidiendo si montar un sistema de git selfhosted, pero al final me decante por gitea. haré un post al respecto. aunque si que me tienta lo de la federación. porque la verdad, la instancia propia se siente muy solitaria

    • Avatar

      Fernando 8 enero. 2026 - 13:33

      Ah sí, en su momento miré Gitea también. Pero Forgejo parece ser el fork más abierto y comunitario. Hay una guía para migrar y todo 👀
      Espero tu blog para leer qué tal fue tu experiencia.

      Lo de la federación va a estar muy interesante. Ahí capaz hasta buscaría migrar mi instancia a un servidor externo y ponerlo en algún dominio propio para tenerlo público.

      • Avatar

        Drk0027 8 enero. 2026 - 16:46

        Uh, tendre lista la guia. Espero que luego saques un articulo contando que tal te fue. Al menos en gitea hasta donde voy, es mas como “funciona y ya” justo como prometía su pagina web. Lo que si estoy notando es que los escaneos crawlers y potencial malware le da duro al directorio y no puedo protegerlo como a wordpress

Dejar un comentario

Toasty!