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:

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.

Comentarios