Instalación de Forgejo en Debian 13

forgejo

¿Que es Forgejo?

Forgejo es una forja de software autoalojada: un servidor Git con interfaz web donde alojar repositorios, gestionar issues, pull requests, wikis, etc. Es un fork de Gitea, mantenido por la comunidad, y destaca por ser muy ligero: está escrito en Go y se distribuye como un único binario, sin dependencias, lo que lo hace ideal para un homelab o una Raspberry Pi frente a alternativas más pesadas como GitLab.

En este tutorial lo instalaremos en Debian 13 usando SQLite como base de datos (la opción más sencilla, no necesita un servidor de base de datos aparte). El servidor es una Raspberry Pi 5 con arquitectura ARM de 64 bits (aarch64), por lo que descargaremos el binario linux-arm64.

Requisitos

  • Debian 13 instalado (en este caso sobre Raspberry Pi 5, aarch64).
  • git instalado en el sistema.
  • Privilegios de sudo o root.

Crear el usuario del sistema

Por seguridad, Forgejo se ejecuta con un usuario del sistema sin privilegios. Lo creamos junto a su directorio de trabajo:

root@forgejo:~# apt install git -y
root@forgejo:~# adduser --system --shell /bin/bash --gecos 'Forgejo' --group --disabled-password --home /opt/forgejo forgejo

Descargar el binario

Descargamos el binario de Forgejo para nuestra arquitectura (arm64) desde la página oficial de releases y le damos permisos de ejecución:

root@forgejo:~# wget -O /opt/forgejo/forgejo https://codeberg.org/forgejo/forgejo/releases/download/v14.0.3/forgejo-14.0.3-linux-arm64
root@forgejo:~# chmod +x /opt/forgejo/forgejo

En un servidor x86 descargaríamos el binario linux-amd64 en lugar de linux-arm64. El resto de la configuración es idéntica.

Creamos también los directorios donde Forgejo guardará los datos y ajustamos el propietario:

root@forgejo:~# mkdir -p /opt/forgejo/data /opt/forgejo/custom/conf
root@forgejo:~# chown -R forgejo:forgejo /opt/forgejo

Crear el servicio systemd

Para que Forgejo arranque con el sistema, creamos el fichero /etc/systemd/system/forgejo.service con el siguiente contenido:

[Unit]
Description=Forgejo
After=network.target

[Service]
Type=simple
User=forgejo
Group=forgejo
WorkingDirectory=/opt/forgejo
ExecStart=/opt/forgejo/forgejo
Restart=always
Environment=USER=forgejo HOME=/opt/forgejo

[Install]
WantedBy=multi-user.target

Recargamos systemd y habilitamos el servicio para que arranque automáticamente:

root@forgejo:~# systemctl daemon-reload
root@forgejo:~# systemctl enable --now forgejo

Asistente de instalación web

La primera vez, Forgejo levanta un asistente de instalación en el puerto 3000. Abrimos un navegador y accedemos a la IP del servidor seguida del puerto 3000. En la primera parte del formulario configuramos la base de datos y los ajustes generales:

forgejo-instalacion1

  • Tipo de base de datos: seleccionamos SQLite3, la opción más simple (Forgejo creará el fichero /opt/forgejo/data/forgejo.db automáticamente).
  • Título del sitio y, en la configuración del servidor, el dominio o la IP del servidor y la URL base.

Más abajo, en el mismo formulario, desplegamos Configuración de la cuenta de administrador para crear el usuario administrador y pulsamos en Instalar Forgejo:

forgejo-instalacion2

Al pulsar en “Instalar Forgejo”, se genera el fichero de configuración en /opt/forgejo/custom/conf/app.ini y ya podremos iniciar sesión.

Primer inicio de sesión

Una vez completada la instalación, accedemos con el usuario administrador que acabamos de crear y llegamos al panel principal de Forgejo:

forgejo-dashboard

Crear el primer repositorio

Desde el botón + de la barra superior elegimos Nuevo repositorio:

forgejo-repo1

Rellenamos el formulario indicando el propietario, el nombre del repositorio (en el ejemplo, Prueba1), una descripción opcional y la rama por defecto (main), y pulsamos en Crear repositorio:

forgejo-repo2

Al crearlo vacío, Forgejo nos muestra una guía rápida con la URL de clonación y los comandos necesarios para empezar a trabajar con él:

forgejo-repo3

Prueba de funcionamiento

Para comprobar que todo funciona, seguimos la guía rápida: creamos un repositorio local, lo enlazamos con Forgejo y subimos un primer commit:

usuario@debian:~$ mkdir prueba1 && cd prueba1
usuario@debian:~/prueba1$ echo "# Mi primer repositorio en Forgejo" > README.md
usuario@debian:~/prueba1$ git init
usuario@debian:~/prueba1$ git add README.md
usuario@debian:~/prueba1$ git commit -m "first commit"
usuario@debian:~/prueba1$ git remote add origin http://192.168.50.116:3000/administrador/Prueba1.git
usuario@debian:~/prueba1$ git push -u origin main

Si actualizamos la página del repositorio en Forgejo, veremos el archivo README.md que acabamos de subir.

Con esto ya tenemos Forgejo funcionando en Debian 13 como servidor Git ligero y autoalojado para nuestro homelab.