No estás usando esta distribución?

Selecciona una versión o distribución diferente

El pasado octubre de 2022 el proyecto Gitea pasó de ser comunitaria a ser comprada por una empresa llamada Gitea Ltd. El principal desarrollador y creador de Gitea, publicó una carta en la que decía que dicha empresa tenía el control total del proyecto.

La comunidad decidió escribir una carta abierta que por lo visto fue ignorada por la nueva empresa y la respuesta fue montar un fork llamado Forgejo.

Forgejo es un servidor git rápido y fácil de usar escrito en Go. Incluye un editor de archivos de repositorio, seguimiento de problemas del proyecto, gestión de usuarios, notificaciones, wiki incorporado, y mucho más.

Forgejo es una aplicación ligera y puede instalarse en la mayoría de distribuciones de GNU/Linux. Si estás buscando una alternativa a Gitlab con una huella de memoria mucho más pequeña y no necesitas todas las características que ofrece Gitlab, entonces deberías darle una oportunidad a Forgejo.

Este artículo explica cómo instalar y configurar Forgejo en Ubuntu 22.04. Para esta instalación usaremos SQLite, pero también podéis configurarlo sin problemas con PostgreSQL o MySQL.

Instalación de Forgejo

Forgejo proporciona imágenes Docker y puede ser instalado desde el código fuente, binario y como un paquete. Vamos a instalar Forgejo desde el binario.

Instalación de Git

Lo primero que instalaremos será git:

$ apt update
$ apt install git

Verificamos la versión de git que debe ser superior a la 2.xx:

$ git --version
git version 2.34.1

Creamos usuario git

Deberemos de crear un usuario nuevo para que ejecute la aplicación de Forgejo, para eso creamos un usuario llamado git:

$ adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git

Descargamos el binario de Forgejo

Desde la página de descarga de Forgejo, podemos descargar la última versión de Forgejo. En el momento de escribir este artículo, la última versión de Forgejo es 1.18.3.

$ wget -O /tmp/forgejo https://codeberg.org/attachments/81b83949-c44b-44ec-a74b-ff9cead25dac

Una vez descargado, copiamos el binario en el directorio correspondiente:

$ mv /tmp/forgejo /usr/local/bin
$ chmod +x /usr/local/bin/forgejo

Luego crearemos los directorios necesarios para el funcionamiento de Forgejo:

$ mkdir -p /var/lib/forgejo/{custom,data,log}
$ chown -R git:git /var/lib/forgejo/
$ chmod -R 750 /var/lib/forgejo/
$ mkdir /etc/forgejo
$ chown root:git /etc/forgejo
$ chmod 770 /etc/forgejo

Creamos el servicio de systemD

Para poder gestionar Forgejo desde SystemD, descargaremos el fichero desde el repositorio:

$ wget https://codeberg.org/forgejo/forgejo/raw/branch/forgejo/contrib/systemd/forgejo.service -P /etc/systemd/system/

No es necesario editar el fichero, la configuración que estamos haciendo es acorde a la configuración del servicio.

Iniciamos el servicio y lo habilitamos al arranque:

$ systemctl daemon-reload
$ systemctl enable --now forgejo.service

Configurar Nginx Proxy para acceder vía dominio

Por defecto, Forgejo escucha internamente por el puerto 3000. Para acceder desde IP se deberá de habilitar este puerto en el Firewall. En este caso lo que vamos hacer es configurar un Nginx Proxy para acceder vía web con un dominio.

Para ello deberemos de seguir estos pasos:

Configurar Proxy Inverso con Nginx para que escuche a un puerto interno
En ocasiones tenemos servicios o aplicaciones web que escuchan directamente a un puerto interno. Para evitar acceder a dicha aplicación o servicio por la IP del servidor, una configuración que podemos hacer es acceder desde un Nginx Proxy.

Si queréis ampliar más en la configuración de Nginx para Forgejo, podéis añadir lo siguiente:

server {
    listen 80;
    server_name git.example.com;

    include snippets/letsencrypt.conf;
    return 301 https://git.example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name git.example.com;

    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    client_max_body_size 50m;

    # Proxy headers
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/git.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/git.example.com/chain.pem;
    include snippets/letsencrypt.conf;
    include snippets/ssl.conf;

    # log files
    access_log /var/log/nginx/git.example.com.access.log;
    error_log /var/log/nginx/git.example.com.error.log;

    # Handle / requests
    location / {
       proxy_redirect off;
       proxy_pass http://127.0.0.1:3000;
    }
}

Finalmente, creamos el fichero de configuración para Forgejo:

$ nano /etc/forgejo/app.ini

A continuación, añadimos lo siguiente:

[server]
DOMAIN           = git.example.com
ROOT_URL         = https://git.example.com/

Finalmente, reiniciamos Nginx y Forgejo -en ese orden-:

$ systemctl reload nginx
$ systemctl restart forgejo

Una vez hemos realizado esto, ya deberíamos de poder acceder vía web. En este punto, debemos de configurar la base de datos y demás parámetros de Forgejo.

En nuestro caso, seleccionaremos la opción de SQLite:

También configuraremos un administrador:

Una vez hayamos configurado la base de datos y hayamos hecho clic en el botón "Install Forgejo" tendremos acceso de forma instantánea a nuestro nodo de Forgejo.

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación