bolt Valebyte VPS from $4/mo — NVMe, 60s deploy.

Get a VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Instalación y configuración de Forge

calendar_month May 20, 2026 schedule 10 min de lectura visibility 93 vistas
Установка и настройка Forgejo на VPS: создание собственного Git-хостинга с Docker Registry и CI/CD
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Instalación y configuración de Forgejo en un VPS: creación de su propio hosting Git con Docker Registry y CI/CD

TL;DR

En esta guía, desplegaremos Forgejo —un fork de Gitea ligero y totalmente abierto— en su propio VPS. Configuraremos un ecosistema de desarrollo completo: almacenamiento de código seguro, un registro de contenedores Docker integrado y el sistema de automatización Forgejo Actions (análogo a GitHub Actions). Al final del tutorial, tendrá un servicio Git auto-hospedado profesional con certificado SSL automático y un sistema de copias de seguridad configurado.

  • Stack: Docker Compose, Forgejo 10.x, PostgreSQL 16+, Caddy (Reverse Proxy), Forgejo Runner.
  • Seguridad: llaves SSH, Fail2Ban, Firewall (UFW), aislamiento de contenedores.
  • CI/CD: Soporte completo para flujos de trabajo similares a GitHub Actions dentro de su servidor.
  • Registro: Almacenamiento de imágenes Docker y paquetes (npm, PyPI, Go) sin servicios de terceros.
  • Tiempo de configuración: 40-60 minutos siguiendo las instrucciones.

1. Qué es Forgejo y por qué es la mejor opción en 2026

Esquema: 1. Qué es Forgejo y por qué es la mejor opción en 2026
Esquema: 1. Qué es Forgejo y por qué es la mejor opción en 2026

Forgejo (pronunciado «for-ye-o») es un fork de Gitea creado por la comunidad en respuesta a la comercialización del proyecto original. En 2026, Forgejo se ha convertido en el estándar de facto para quienes buscan un «punto medio» entre el pesado GitLab y soluciones demasiado ascéticas como SourceHut.

La filosofía principal de Forgejo es "Liberated Software". Esto significa que todas las funciones, incluidos el CI/CD avanzado y el registro de paquetes, están disponibles de forma gratuita y con código abierto. A diferencia de Gitea, donde algunas funciones corporativas pueden estar limitadas o dirigidas a clientes de pago, Forgejo se desarrolla como un proyecto perteneciente a la comunidad.

Ventajas clave para el propietario de un VPS:

  • Bajo consumo de recursos: En modo de espera, Forgejo consume menos de 200 MB de memoria RAM.
  • Compatibilidad binaria: Si anteriormente usaba Gitea, la transición a Forgejo toma 5 minutos sin pérdida de datos.
  • CI/CD integrado: Ya no es necesario configurar integraciones complejas con Jenkins o Drone CI. Forgejo Actions entiende la sintaxis de los archivos YAML de GitHub Actions.
  • Herramienta única: El código, los tickets (issues), los tableros Kanban, la wiki y el registro de contenedores se encuentran en una sola interfaz.

2. Comparación de Forgejo con alternativas (GitLab, Gitea, GitHub)

Esquema: 2. Comparación de Forgejo con alternativas (GitLab, Gitea, GitHub)
Esquema: 2. Comparación de Forgejo con alternativas (GitLab, Gitea, GitHub)

Al elegir una plataforma Git para hospedar en su propio servidor, es importante entender la diferencia en el consumo de recursos y funcionalidades. A continuación se muestra una tabla comparativa de las soluciones actuales para 2026.

Característica Forgejo GitLab CE Gitea GitHub (Cloud)
RAM mín. 1 GB (recomendado 2 GB) 4 GB (recomendado 8 GB) 1 GB N/A
CI/CD Integrado (Actions) Integrado (Runner) Integrado (Actions) GitHub Actions
Licencia GPLv3+ (Community) MIT (Open Core) MIT (Commercial focus) Proprietary
Registro de paquetes Sí (Docker, npm, etc) Sí (Advanced)
Dificultad de instalación Baja (1 contenedor) Alta (muchos componentes) Baja N/A

GitLab es una herramienta potente y completa, pero su instalación en un VPS económico a menudo provoca bloqueos por falta de memoria. Forgejo, por otro lado, es ideal para desarrolladores individuales y equipos de hasta 50 personas que trabajan con hardware económico.

3. Qué configuración de VPS se necesita para esta tarea

Esquema: 3. Qué configuración de VPS se necesita para esta tarea
Esquema: 3. Qué configuración de VPS se necesita para esta tarea

Aunque Forgejo es extremadamente poco exigente, el rendimiento de su hosting Git dependerá directamente de la velocidad del subsistema de disco y de la cantidad de memoria RAM para el almacenamiento en caché de los objetos Git.

Requisitos mínimos (1-3 usuarios, proyectos pequeños):

  • CPU: 1 núcleo
  • RAM: 1 GB
  • Disco: 20 GB SSD/NVMe
  • SO: Ubuntu 24.04 LTS o Debian 13

Requisitos recomendados (equipo, CI/CD, Docker Registry):

  • CPU: 2-4 núcleos (importante para la compilación rápida de contenedores en CI/CD)
  • RAM: 4 GB (permite mantener la BD en caché y que los runners funcionen eficientemente)
  • Disco: 50+ GB NVMe (el volumen depende de la cantidad de imágenes Docker almacenadas)
  • Red: 1 Gbps (para carga/descarga rápida de repositorios grandes)

Para un funcionamiento estable del sistema, especialmente si planea usar activamente Forgejo Actions para compilar proyectos, lo mejor es un VPS adecuado con recursos dedicados, para que los procesos de compilación no ralenticen la interfaz web.

La ubicación del servidor también es importante: elija un centro de datos con el mínimo ping hacia sus desarrolladores, ya que los protocolos Git (SSH/HTTPS) son sensibles a los retrasos al transferir muchos archivos pequeños.

4. Preparación del servidor: seguridad básica y utilidades del sistema

Esquema: 4. Preparación del servidor: seguridad básica y utilidades del sistema
Esquema: 4. Preparación del servidor: seguridad básica y utilidades del sistema

Antes de instalar Docker, es necesario asegurar el servidor. Configuraremos el firewall, crearemos un usuario independiente e instalaremos protección contra ataques de fuerza bruta.

Actualice la lista de paquetes y el sistema a la versión más reciente:

sudo apt update && sudo apt upgrade -y

Instale las herramientas básicas necesarias:

sudo apt install -y curl wget git vim ufw fail2ban software-properties-common

Configure el firewall UFW. Necesitaremos los puertos 22 (SSH), 80 (HTTP), 443 (HTTPS) y el puerto 2222 para Git a través de SSH (para no entrar en conflicto con el servidor SSH principal del sistema):

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 2222/tcp
sudo ufw enable

La configuración de Fail2Ban ayudará a proteger el SSH contra el descifrado de contraseñas. Cree una configuración local:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Cree un usuario del sistema bajo el cual funcionará Forgejo (por seguridad, no se recomienda ejecutar el servicio como root, incluso dentro de un contenedor):

sudo adduser --disabled-password --gecos "" git

5. Instalación de Docker y Docker Compose

Esquema: 5. Instalación de Docker y Docker Compose
Esquema: 5. Instalación de Docker y Docker Compose

En 2026, el uso de Docker es el estándar para servicios auto-hospedados. Esto simplifica la actualización y la migración de Forgejo a otro servidor.

Instale el repositorio oficial de Docker:

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Instale Docker Engine y el plugin Docker Compose:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Añada el usuario actual al grupo docker para ejecutar comandos sin sudo:

sudo usermod -aG docker $USER

Nota: después de este comando, es necesario volver a iniciar sesión en la terminal.

6. Despliegue de Forgejo: Docker Compose y base de datos

Esquema: 6. Despliegue de Forgejo: Docker Compose y base de datos
Esquema: 6. Despliegue de Forgejo: Docker Compose y base de datos

Utilizaremos PostgreSQL como base de datos, ya que es más fiable que SQLite a medida que crece el número de repositorios y el uso activo de CI/CD.

Cree un directorio de trabajo:

mkdir -p ~/forgejo && cd ~/forgejo

Cree un archivo docker-compose.yml con la siguiente configuración:

services:
  server:
    image: codeberg.org/forgejo/forgejo:10
    container_name: forgejo
    restart: always
    environment:
      - USER_UID=1001
      - USER_GID=1001
      - FORGEJO__database__DB_TYPE=postgres
      - FORGEJO__database__HOST=db:5432
      - FORGEJO__database__NAME=forgejo
      - FORGEJO__database__USER=forgejo
      - FORGEJO__database__PASSWD=your_strong_password
    volumes:
      - ./data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "127.0.0.1:3000:3000"
      - "2222:22"
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    restart: always
    environment:
      - POSTGRES_USER=forgejo
      - POSTGRES_PASSWORD=your_strong_password
      - POSTGRES_DB=forgejo
    volumes:
      - ./postgres:/var/lib/postgresql/data

Importante: Reemplace your_strong_password por una contraseña real. Tenga en cuenta que estamos exponiendo la interfaz web de Forgejo en 127.0.0.1:3000. Esto se hace para que no sea accesible directamente desde el exterior, sino solo a través de nuestro Reverse Proxy (Caddy).

Inicie los contenedores:

docker compose up -d

7. Configuración de Reverse Proxy y HTTPS automático mediante Caddy

Esquema: 7. Configuración de Reverse Proxy y HTTPS automático mediante Caddy
Esquema: 7. Configuración de Reverse Proxy y HTTPS automático mediante Caddy

Caddy es un servidor web moderno que obtiene y renueva automáticamente los certificados SSL de Let's Encrypt. Es mucho más sencillo que configurar Nginx con Certbot.

Instale Caddy:

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

Edite /etc/caddy/Caddyfile:

git.yourdomain.com {
    reverse_proxy localhost:3000
    
    header {
        # Configuración de seguridad
        Strict-Transport-Security "max-age=31536000;"
        X-Content-Type-Options nosniff
        X-Frame-Options DENY
        Referrer-Policy no-referrer-when-downgrade
    }
}

Reemplace git.yourdomain.com por su dominio real, que debe apuntar a la IP de su VPS (registro A). Reinicie Caddy:

sudo systemctl restart caddy

Ahora puede abrir https://git.yourdomain.com en su navegador y completar la instalación de Forgejo a través de la interfaz web. El primer usuario registrado se convertirá automáticamente en administrador.

8. Configuración de Forgejo Actions: ejecución del Runner de CI/CD

Esquema: 8. Configuración de Forgejo Actions: ejecución del Runner de CI/CD
Esquema: 8. Configuración de Forgejo Actions: ejecución del Runner de CI/CD

Forgejo Actions es un potente sistema de automatización integrado. Para su funcionamiento se requiere un componente independiente — el Runner, que ejecutará los comandos de compilación.

Primero, habilite el soporte de Actions en Forgejo. Abra el archivo de configuración dentro del contenedor o añada una variable de entorno en docker-compose.yml:

# Añada a la sección environment del servicio server en docker-compose.yml:
- FORGEJO__actions__ENABLED=true

Ahora añadiremos el servicio del runner a nuestro docker-compose.yml:

  runner:
    image: codeberg.org/forgejo/runner:6.0
    container_name: forgejo-runner
    restart: always
    depends_on:
      - server
    volumes:
      - ./runner-data:/data
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - FORGEJO_INSTANCE_URL=https://git.yourdomain.com
      - FORGEJO_RUNNER_REGISTRATION_TOKEN=SU_TOKEN_DE_ADMINISTRACION
      - FORGEJO_RUNNER_NAME=vps-runner
      - FORGEJO_RUNNER_LABELS=ubuntu-latest:docker://node:20-bullseye,debian-latest:docker://debian:bookworm

Para obtener el FORGEJO_RUNNER_REGISTRATION_TOKEN, vaya al panel de control de Forgejo: Site Administration -> Actions -> Runners -> Create new Runner.

Inicie el runner:

docker compose up -d runner

Ahora, cualquier repositorio que contenga un archivo .forgejo/workflows/build.yml ejecutará automáticamente la compilación en su VPS.

9. Configuración del Docker Registry integrado

Forgejo permite almacenar imágenes de Docker directamente en el repositorio del proyecto. Esto elimina la necesidad de utilizar Docker Hub o alternativas de pago.

Por defecto, el registro de paquetes está habilitado. Para autenticarse en él desde su máquina local, utilice el comando estándar docker login:

docker login git.yourdomain.com

Utilice su nombre de usuario y contraseña (o un Personal Access Token, que es más seguro). Ejemplo de etiquetado y push de una imagen:

docker tag my-app:latest git.yourdomain.com/username/my-app:latest
docker push git.yourdomain.com/username/my-app:latest

Todas las imágenes se almacenan en la carpeta /data/packages dentro del contenedor de Forgejo, lo que facilita la gestión del espacio en disco.

10. Copias de seguridad y mantenimiento

La falta de copias de seguridad es el principal error en el self-hosting. En Forgejo, es necesario respaldar tres cosas: la base de datos, los archivos de configuración (app.ini) y los propios repositorios.

Cree un script de copia de seguridad sencillo backup.sh:

#!/bin/bash
BACKUP_DIR="/home/user/backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
mkdir -p $BACKUP_DIR

# Copia de seguridad de la base de datos
docker exec forgejo-db-1 pg_dump -U forgejo forgejo > $BACKUP_DIR/db_$TIMESTAMP.sql

# Copia de seguridad de datos de Forgejo (configuraciones y repositorios)
tar -czf $BACKUP_DIR/data_$TIMESTAMP.tar.gz ./data

# Eliminación de copias de seguridad antiguas (más de 7 días)
find $BACKUP_DIR -type f -mtime +7 -delete

Añada la ejecución del script a crontab (crontab -e) para que se ejecute cada noche a las 3:00:

0 3 * * * /bin/bash /home/user/forgejo/backup.sh

Actualización de Forgejo: El proceso de actualización es extremadamente sencillo gracias a Docker. Basta con cambiar la versión de la imagen en docker-compose.yml y ejecutar:

docker compose pull
docker compose up -d

11. Solución de problemas + FAQ

Error: "SSH connection refused" al intentar git push

Compruebe que está utilizando el puerto correcto. Por defecto, SSH en nuestra configuración funciona en el puerto 2222. La URL de su repositorio debería verse así: ssh://[email protected]:2222/user/repo.git. Asegúrese también de que su clave SSH pública haya sido añadida a su perfil de Forgejo.

¿Qué configuración de VPS es el mínimo adecuado para Forgejo?

Para el trabajo cómodo de un solo desarrollador, 1 GB de RAM y 1 núcleo de CPU son suficientes. Sin embargo, si habilita Forgejo Actions (CI/CD), al iniciar una compilación (por ejemplo, en Go o Rust), el consumo de memoria puede dispararse instantáneamente a 2-4 GB. Para tales tareas, es mejor elegir un plan con 4 GB de RAM.

¿Qué elegir: VPS o servidor dedicado para esta tarea?

Para la mayoría de los equipos de hasta 20 personas, un VPS es la elección ideal. Un servidor dedicado solo debe considerarse en dos casos: si el volumen de su código y artefactos (Docker Registry) supera los 1-2 TB, o si necesita un aislamiento absoluto de recursos para procesos pesados de CI/CD que no deben afectar la capacidad de respuesta de la interfaz de Git.

¿Cómo limitar el registro de nuevos usuarios?

Después de crear su cuenta de administrador, vaya a Site Administration -> Configuration y establezca DISABLE_REGISTRATION = true. Esto evitará que personas ajenas creen cuentas en su servidor público.

Forgejo consume demasiado espacio en disco, ¿qué hacer?

Los principales consumidores de espacio suelen ser el Docker Registry y los registros de las compilaciones. Limpie regularmente las imágenes antiguas y configure una política de retención (Retention Policy) en los ajustes de paquetes de Forgejo. Compruebe también la carpeta /data/tmp; a veces pueden acumularse archivos temporales tras importaciones fallidas.

¿Se pueden transferir datos desde GitHub?

Sí, Forgejo cuenta con una herramienta de migración integrada. Permite importar no solo el código, sino también Issues, Pull Requests, Wiki e incluso Milestones. Para ello, basta con indicar la URL del repositorio de GitHub y su Personal Access Token.

12. Conclusiones y siguientes pasos

Hemos desplegado con éxito un entorno de desarrollo profesional en nuestro propio VPS. Ahora tiene el control total sobre su código, imágenes de contenedores y procesos de automatización, sin depender de las políticas de proveedores de la nube externos.

Qué hemos obtenido:

  • Hosting Git privado con alto rendimiento.
  • SSL automático a través de Caddy.
  • Sistema de CI/CD propio, compatible con GitHub Actions.
  • Docker Registry para almacenar imágenes privadas.

Hacia dónde dirigirse a continuación:

  1. Monitoreo: Configure la exportación de métricas de Forgejo a Prometheus y visualícelas en Grafana para supervisar la carga del servidor.
  2. Seguridad: Configure la autenticación de dos factores (2FA) para su cuenta.
  3. Almacenamiento externo: Si planea almacenar terabytes de datos, configure el almacenamiento de objetos (LFS y paquetes) en un almacenamiento compatible con S3.

El self-hosting no es solo un ahorro de costes, sino también un paso importante hacia la soberanía digital de su equipo o proyecto. Forgejo proporciona todas las herramientas necesarias para ello, siendo una solución sencilla y fiable.

¿Te fue útil esta guía?

instalación y configuración de forgejo en vps: creación de tu propio hosting git con docker registry y ci/cd
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.