Hace un tiempo subí un vídeo explicando qué es InsForge, la alternativa open source a Supabase que tiene su propio MCP, un gateway con todos los modelos de inteligencia artificial y que nos permite crear aplicaciones completas con backend, autenticación y base de datos desde el propio IDE con un simple prompt. Y bueno, el vídeo gustó bastante. Pero en los comentarios había una cosa que se repetía constantemente: que os enseñase a instalarlo en vuestro propio servidor.
Y tiene todo el sentido. Es open source, o sea que se puede hacer. Y si lo hosteas tú, es gratis. Sin pagar ninguna suscripción mensual. Así que de eso va este post: de instalar InsForge en tu propio servidor, paso a paso, sin saltarse nada. Y cuando digo sin saltarse nada, incluyo todo lo que nadie explica bien en estos tutoriales: las variables de entorno, el login con Google, el login con GitHub… todo.
Antes de nada: ¿dónde lo instalas?
Esto sí que es flexible. InsForge se despliega con Docker, así que lo puedes instalar donde quieras: en tu ordenador, en un VPS, en una Raspberry Pi… la máquina da igual.
Eso sí, si lo vas a usar para aplicaciones reales que va a utilizar más gente, en tu propio ordenador personal no es la mejor idea. Piénsalo: InsForge va a ser tu base de datos y todo el backend de tu aplicación. Si apagas el ordenador, cae todo. Así que para algo serio, lo suyo es un VPS.
Yo para este tutorial voy a usar uno de Hostinger, pero de verdad que usad el que queráis. Si tenéis un servidor de Oracle Cloud de los gratuitos, esos también valen perfectamente. Ya expliqué en otro vídeo cómo conseguir uno gratis con 4 cores, 24GB de RAM y 200GB de disco. Si no lo has visto, lo tienes en el canal. Aunque ojo, la arquitectura de ese servidor es arm y puede dar problemas. ¡Estais avisados!
Lo mínimo que necesitas es una máquina con 2GB de RAM. Con eso te sobra para empezar.
🎁 Oferta exclusiva: Para acceder a tu servidor en Hostinger, ve a hostinger.es/devknives y usa el código DEVKNIVES para conseguir un 10% de descuento.
Paso 1: Conéctate a tu servidor e instala Docker
Doy por hecho que ya sabes conectarte por SSH a tu servidor. Si no, es tan simple como abrir la terminal y ejecutar:
ssh usuario@ip_de_tu_servidor
Una vez dentro, lo primero es instalar Docker. Copia y pega este bloque de comandos y los ejecuta todos de una:
sudo apt update && sudo apt upgrade -y
sudo apt install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Para verificar que está bien instalado:
docker --version
Si te devuelve la versión, perfecto. Seguimos.

Paso 2: Clona el repositorio de InsForge
El repositorio de InsForge es público. Solo tienes que clonarlo en tu servidor:
git clone https://github.com/InsForge/InsForge.git
cd insforge
Paso 3: Configura las variables de entorno
Aquí está la chicha de verdad. El repositorio incluye un archivo de ejemplo con todas las variables. Lo que hay que hacer es copiarlo y empezar a rellenarlo:
cp .env.example .env
Ábrelo con nano para editarlo directamente desde el servidor:
nano .env
O si tienes acceso con VS Code Remote SSH, ábrelo así que lo ves mejor. El caso es que vamos a ir variable por variable porque sin esto la aplicación directamente no arranca.

Puerto
PORT=7130
Déjalo como está. Antes de arrancar, asegúrate de que no tienes nada corriendo en ese puerto. En un servidor nuevo no lo vas a tener, pero por si acaso puedes comprobarlo con sudo lsof -i :7130.
PostgreSQL
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=insforge
Cambia esto, por favor. Por defecto viene con “postgres” y “postgres” que es lo primero que probarían en un ataque. Genera algo aleatorio. Puedes usar este comando para generar una contraseña segura:
openssl rand -base64 32
Copia lo que te devuelva y úsalo como usuario o contraseña. Cada vez que ejecutes el comando genera uno diferente, así que sin miedo.
URLs base
API_BASE_URL=http://localhost:7130
VITE_API_BASE_URL=http://localhost:7130
Déjalas como están de momento. Cuando tengas tu dominio configurado, las cambias por tu URL. (Por ejemplo https://db.edunavajas.com) Pero para la primera instalación y prueba, con localhost está bien.
JWT Secret
JWT_SECRET=tu-hash-aqui
Este es el secreto con el que se cifran los tokens de autenticación. Tiene que ser un hash largo y aleatorio. Para generarlo:
openssl rand -base64 64
Copia el resultado y pégalo ahí. Que sea largo, cuanto más largo más difícil de romper.
Admin
ADMIN_EMAIL=tu@email.com
ADMIN_PASSWORD=contraseña-muy-segura
Este es el acceso al panel de administración de InsForge. El email no hace falta que exista como tal, pero poneos uno que recordéis. Y la contraseña: genera otro hash con el mismo comando de antes y úsalo de contraseña. Así sé que nunca se repiten y que son imposibles de adivinar.
Encryption Key
ENCRYPTION_KEY=otro-hash-diferente
Técnicamente podría coger el mismo valor que JWT_SECRET, pero lo correcto es tener una clave diferente para cada cosa. Genera uno nuevo con el mismo comando y listo.
Access API Key
ACCESS_API_KEY=ik_tu-hash-aqui
Otro hash más. Pero ojo a esto: tiene que empezar obligatoriamente por ik_. Si no empieza por ik_, no va a funcionar. Así que generas el hash, lo copias, y delante le pones ik_:
# Así lo generas
openssl rand -base64 32
# Y lo pegas como: ik_HASH_GENERADO
Cloud API Host
CLOUD_API_HOST=
Déjalo vacío. Esto es para la versión cloud de InsForge pero nosotros lo hacemos self-hosted, no lo necesitamos.
Storage con Cloudflare R2
Ahora viene el almacenamiento de archivos. Por defecto el archivo de ejemplo viene preparado para AWS S3, y podéis usarlo si queréis. Pero yo personalmente prefiero Cloudflare R2 porque tiene una capa gratuita muy generosa y llevo tiempo usándolo en varios proyectos sin pagar nada.
La capa gratuita de R2 incluye 10GB de almacenamiento, 1 millón de operaciones de escritura y 10 millones de operaciones de lectura al mes. Para la mayoría de proyectos eso es más que suficiente sin pagar un duro.
La buena noticia es que R2 es compatible con la API de S3, así que aunque las variables se llamen S3_*, funcionan perfectamente con Cloudflare. Misma API, diferente proveedor, y gratis.
Cómo crear el bucket y las credenciales paso a paso
1. Entra en tu panel de Cloudflare (dash.cloudflare.com) y en el menú lateral busca R2 Object Storage. Si es la primera vez que entras te va a pedir que actives el servicio, solo tienes que darle a activar.
2. Crea un bucket nuevo. Dale a Create bucket, ponle un nombre (por ejemplo insforge-storage) y selecciona la región más cercana a ti. En Europa lo más habitual es WEUR (Western Europe). Dale a Create bucket y ya lo tienes.
3. Consigue el endpoint URL. Una vez creado el bucket, entra en él y en la parte superior verás algo así:
Endpoint: https://abc123def456.r2.cloudflarestorage.com
Ese abc123def456 es tu Account ID de Cloudflare. Cópialo, es lo que vas a poner en S3_ENDPOINT_URL.
4. Genera las credenciales de API. Vuelve a la página principal de R2 y arriba a la derecha tienes el botón Manage R2 API tokens. Entra ahí y dale a Create API token.
- Dale un nombre descriptivo, por ejemplo
insforge-token - En permisos selecciona Object Read & Write (lectura y escritura)
- En Specify bucket selecciona el bucket que acabas de crear
- Dale a Create API Token
Te va a mostrar las credenciales una sola vez. No cierres esa pantalla hasta haberlas copiado.
Ahora ya tienes todo para rellenar las tres variables:
S3_ACCESS_KEY_ID=el-access-key-id-que-te-dio-cloudflare
S3_SECRET_ACCESS_KEY=el-secret-access-key-que-te-dio-cloudflare
S3_ENDPOINT_URL=https://TU_ACCOUNT_ID.r2.cloudflarestorage.com
Importante: El endpoint no lleva el nombre del bucket al final, solo el Account ID. Y que sepáis también que tenéis que dejar
AWS_S3_BUCKETcon el nombre del bucket que habéis creado:
AWS_S3_BUCKET=insforge-storage

Logs
LOGS_DIR=
Vacío. Por defecto InsForge guarda los logs en una carpeta ./logs y no hay que tocar nada.
OpenRouter
OPENROUTER_API_KEY=
Esto es para el gateway de inteligencia artificial unificado que trae InsForge. Si no tienes pensado usarlo, déjalo vacío y ya. Si quieres usarlo, vas a openrouter.ai, creas una cuenta y generas una API key. Con los modelos gratuitos no tienes que poner dinero, y si quieres los de pago es como con cualquier otra plataforma: cargas créditos y gastas.
PostHog (modo desarrollo)
VITE_PUBLIC_POSTHOG_KEY=
Vacío. Esto solo es necesario si corres InsForge en modo desarrollo. Nosotros lo vamos a desplegar en producción, así que no nos afecta.
OAuth: login con redes sociales
Y aquí llegamos a la parte que todo el mundo quería. El login con Google, GitHub, Microsoft, Discord, LinkedIn, X y Apple. Voy a explicaros cómo hacerlo en cada uno. Lo bueno es que no tienes que configurarlos todos, solo los que te interesen. Los que dejes vacíos, simplemente no aparecerán como opción de login.

GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
Para el login con Google hay que crear una aplicación OAuth en Google Cloud Console. Parece intimidante pero es bastante guiado.
1. Ve a Google Cloud Console y entra con tu cuenta de Google. Si es la primera vez puede que te aparezca una pantalla de bienvenida con una prueba gratuita, os pide tarjeta pero no os cobra. Si podéis evitarlo, evitadlo, pero si no tenéis otra opción para entrar, sabéis que no os va a cobrar siempre que no uséis servicios de pago.
2. Crea un proyecto nuevo. Arriba a la izquierda tienes el selector de proyectos. Dale clic y luego a New Project. Ponle un nombre, por ejemplo InsForge, y dale a Create.

3. Configura la pantalla de consentimiento OAuth. En el menú lateral busca APIs & Services > OAuth consent screen. Aquí es donde configuras cómo va a verse la pantalla de login para tus usuarios.
- Selecciona External (para que cualquiera pueda iniciar sesión, no solo los de tu organización)
- Rellena el App name (por ejemplo
InsForge), un email de soporte y el email del desarrollador (puede ser el mismo tuyo) - En Authorized domains añade tu dominio (por ejemplo
tudominio.com, sin el https) - Dale a Save and continue hasta llegar al final, el resto de campos son opcionales
4. Crea las credenciales. Ve a APIs & Services > Credentials, dale a Create Credentials y selecciona OAuth 2.0 Client IDs.
- En Application type selecciona Web application
- Ponle un nombre, por ejemplo
InsForge Web - En Authorized redirect URIs dale a Add URI y pon exactamente esto con tu dominio real:
https://tudominio.com/auth/callback/google
Dale a Create.
Te va a aparecer una ventana con el Client ID y el Client Secret. Cópialos y pégalos en las variables del .env.
Un aviso importante sobre el modo Testing: cuando creas la app OAuth en Google, empieza en modo Testing y solo puedes añadir hasta 100 usuarios de prueba manualmente en la sección Test users. Si quieres que cualquiera pueda iniciar sesión sin restricciones, tienes que publicar la app yendo a OAuth consent screen y dando a Publish App.
Google te va a pedir que pases por un proceso de verificación donde justifiques para qué usas el login. Para InsForge básicamente explicas que es una herramienta de gestión de proyectos propia. No es complicado pero puede tardar unos días. Mientras tanto, con el modo Testing puedes probarlo añadiendo tu propio email como usuario de prueba y va perfecto.
GitHub
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
Esta es la más sencilla de todas y la que te recomiendo configurar sí o sí porque en dos minutos la tienes.
1. Entra en GitHub, ve a tu foto de perfil (arriba a la derecha) > Settings.
2. En el menú lateral, baja hasta el final y entra en Developer settings.
3. Dentro de Developer settings, entra en OAuth Apps y dale a New OAuth App.
4. Rellena el formulario:
- Application name: InsForge (o el nombre que quieras)
- Homepage URL: la URL de tu InsForge, por ejemplo
https://tudominio.com - Application description: opcional, puedes dejarlo vacío
- Authorization callback URL: esta es la importante, pon exactamente esto:
https://tudominio.com/auth/callback/github
Dale a Register application.

5. Una vez creada la app, ya ves el Client ID directamente en la pantalla. Para el Secret tienes que darle al botón Generate a client secret. Te lo muestra una sola vez así que cópialo en ese momento, no lo pierdas.
Copias los dos valores, los pegas en las variables del .env y listo. Sin verificaciones, sin esperas, sin que nadie te revise nada. Es en el acto. Por eso es la que más me gusta configurar.
Microsoft
MICROSOFT_CLIENT_ID=
MICROSOFT_CLIENT_SECRET=
Toca irse al Azure Portal, a Azure Active Directory > App registrations, registrar una nueva aplicación y de ahí sacar el Client ID y crear un Client Secret. Es un poco más enredado que GitHub porque Azure siempre es así, pero tampoco es complicado. La URL de redirección sería:
https://tudominio.com/auth/callback/microsoft
Discord
DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRET=
Ve al portal de desarrolladores de Discord, crea una nueva application, entra en OAuth2 y ahí tienes las credenciales. Rápido y sin complicaciones. La callback URL:
https://tudominio.com/auth/callback/discord
LINKEDIN_CLIENT_ID=
LINKEDIN_CLIENT_SECRET=
Entra al portal de desarrolladores de LinkedIn, crea una app y dale permisos de Sign In with LinkedIn. Te dan las credenciales directamente en la configuración de la app.
X (Twitter)
X_CLIENT_ID=
X_CLIENT_SECRET=
Ve al Developer Portal de X, crea un proyecto y una app. Siempre te pide que expliques para qué quieres la app, que es un poco pesado, pero nada del otro mundo. La callback URL:
https://tudominio.com/auth/callback/x
Apple
APPLE_CLIENT_ID=
APPLE_CLIENT_SECRET=
Esta es la más puñetera de todas y lo digo con conocimiento de causa. Para usarla necesitas una Apple Developer Account, que ya de por sí cuesta 99 dólares al año. Luego tienes que crear un Services ID, una Key, y el APPLE_CLIENT_SECRET no es una clave normal: tiene que ser un JSON con el teamId, el keyId y la clave privada en formato PKCS#8.
Si no tienes apps publicadas en la App Store y no piensas tenerlas, yo directamente no me molestaría con esto. Déjalo vacío.
Variables de Cloud y Deno
DEPLOYMENT_ID=
PROJECT_ID=
APP_KEY=
DENO_SUBHOSTING_TOKEN=
DENO_SUBHOSTING_ORG_ID=
Todas vacías. Las primeras tres son solo para la versión cloud oficial de InsForge. Las de Deno tampoco las necesitas porque Docker ya levanta su propia instancia de Deno internamente.
Y con esto… hemos terminado con las variables de entorno. Sé que parece mucho, pero la mayoría se quedan vacías. Lo importante son las de PostgreSQL, el JWT Secret, el admin y el storage. Todo lo demás es opcional según lo que necesites.
Paso 4: Lanzar el contenedor
Ahora sí que sí. Con todo configurado, vamos a arrancar InsForge. El detalle importante aquí es que no vale un docker compose up a secas. Hay que usar el archivo de producción específicamente:
docker compose -f docker-compose.prod.yml up -d
Esto descarga las imágenes necesarias y levanta todos los servicios en segundo plano. La primera vez puede tardar unos minutos dependiendo de tu conexión. Puedes ver los logs en tiempo real con:
docker compose -f docker-compose.prod.yml logs -f
Cuando veas que todos los servicios están healthy, es que está todo funcionando.
Opción alternativa: deplegar con Coolify
Si tienes Coolify instalado en tu servidor, la instalación es incluso más sencilla que por terminal. Coolify ya viene con Traefik para gestionar el HTTPS, así que te ahorras la parte del dominio.
Lo que tienes que hacer es crear un nuevo recurso en Coolify de tipo Git con URL pública, poner la URL del repositorio de InsForge y decirle que use el docker-compose.prod.yml como archivo de configuración.
Un detalle importante: tienes que convertir a “file” todos los ficheros del repositorio en la sección de ficheros de Coolify, porque si no InsForge no arranca. Y luego hay que copiar la carpeta de functions manualmente al directorio de la aplicación:
cp -r /path/al/repo/functions /data/coolify/applications/TU_APP_ID/functions
Las variables de entorno las editas directamente desde el panel de variables de Coolify, exactamente igual que las que hemos repasado antes. Mucho más visual y cómodo.
Paso 5: Asignar un dominio
Acceder a InsForge por IP y puerto no es plan para uso real. Vamos a ponerle un dominio.
Si usas Coolify, es pan comido. En la configuración de la aplicación pones tu dominio o subdominio, y en tu gestor de DNS (por ejemplo Cloudflare) creas un registro A apuntando ese dominio a la IP de tu servidor. Coolify se encarga del HTTPS automáticamente con Traefik.
Si lo has instalado por terminal, necesitas instalar Caddy, que es un servidor web muy sencillo que gestiona el HTTPS automáticamente sin configuración extra:
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
Una vez instalado, edita el Caddyfile:
sudo nano /etc/caddy/Caddyfile
Y pon esto:
insforge.tudominio.com {
reverse_proxy localhost:7130
}
Guarda, recarga Caddy:
sudo systemctl reload caddy
Y ahora toca configurar el DNS para que tu dominio apunte al servidor. Lo explico justo abajo.
Cómo configurar el DNS para apuntar al servidor
Necesitas saber dos cosas: la IP pública de tu servidor y dónde tienes gestionado el DNS de tu dominio (normalmente en el mismo sitio donde compraste el dominio, o en Cloudflare si lo tienes apuntado ahí).
Cómo saber la IP de tu servidor:
Si tienes acceso por terminal a tu servidor, ejecuta:
curl ifconfig.me
Te devuelve la IP pública directamente. Apúntala.
Si lo compraste en Hostinger, DigitalOcean o similar, la IP también la tienes en el panel de control de tu proveedor junto a la información de tu VPS.
Configurar el registro DNS en Cloudflare:
Si gestionas tu DNS en Cloudflare (que es lo más habitual y lo que yo recomiendo), entra en dash.cloudflare.com, selecciona tu dominio y ve a la pestaña DNS > Records.
Dale a Add record y rellena así:
| Campo | Valor |
|---|---|
| Type | A |
| Name | insforge (o el subdominio que quieras) |
| IPv4 address | la IP de tu servidor |
| Proxy status | DNS only (nube gris, no naranja) |
| TTL | Auto |
Importante: Si dejas en modo Proxied (nube naranja), Cloudflare actúa de intermediario y puede romper las conexiones WebSocket que usa InsForge para el tiempo real. Con gris va directo a tu servidor sin pasar por Cloudflare.
Dale a Save. La propagación en Cloudflare es casi instantánea, normalmente en menos de un minuto ya funciona.
Si tienes el DNS en otro proveedor (GoDaddy, Namecheap, el propio Hostinger…) el proceso es el mismo: crear un registro de tipo A con el nombre del subdominio y la IP de tu servidor. El nombre varía un poco en cada proveedor pero siempre es lo mismo.
Una vez propagado ya puedes recargar Caddy y acceder a tu InsForge con el dominio:

Paso 6: Verificar que todo funciona
Entra a tu dominio en el navegador y deberías ver la pantalla de login de InsForge. Si algo falla, lo primero es revisar los logs:
docker compose -f docker-compose.prod.yml logs app
Si todo va bien, accede con el email y contraseña de administrador que pusiste en las variables ADMIN_EMAIL y ADMIN_PASSWORD. Y ya estás dentro.
Conectar el MCP al IDE
Una vez dentro del dashboard, InsForge te da directamente el comando para añadir el MCP a tu IDE. Cópialo, pégalo en la configuración de tu IDE (Cursor, Claude Desktop, VS Code con Copilot…) y ya tienes el agente conectado a tu propia instancia.
Para probar que funciona, ponle al agente algo como: “¿qué puedes hacer con InsForge?” y debería responder describiéndote las capacidades del MCP. Si ves que puede acceder al dashboard y responde con información real, es que está todo funcionando.
A partir de ahí ya puedes crear tablas, configurar autenticación, gestionar funciones serverless… todo desde el chat de tu IDE, con tu propia instancia de InsForge corriendo en tu servidor. Sin pagar nada al mes.
¿Y si prefiero migrar desde Supabase?
Si ahora mismo tienes proyectos en Supabase y quieres pasarlos a InsForge, hay formas de hacerlo. Si os interesa que haga un tutorial específico de cómo migrar datos de Supabase a InsForge, dejadlo en los comentarios. Personalmente creo que InsForge funciona bastante mejor, especialmente en la versión self-hosted, y no he tenido los problemas que me daba Supabase.
También, si queréis una comparativa en profundidad entre los dos para ayudaros a decidir, decídmelo. Encantado de hacerlo.
Pues ya está. Sé que parece largo escrito así, pero el proceso real es bastante rápido. Lo que lleva tiempo es la primera vez que rellenas todas las variables de entorno y entendéis qué hace cada una. A partir de ahí, la instalación en sí es cosa de minutos.
Si os ha servido, dale un like al vídeo que no cuesta nada y suscribíos si aún no lo habéis hecho. Y cualquier duda que tengáis, la dejáis en los comentarios que intento responder a todo.



¿Qué te ha parecido?
Déjame tu opinión, pregunta o sugerencia. Los comentarios se sincronizan con GitHub Discussions .