📖 Desplegar InsForge en Azure Virtual Machines (Guía extendida)
Esta guía proporciona instrucciones completas y paso a paso para desplegar, gestionar y proteger InsForge en una máquina virtual (VM) de Azure usando Docker Compose.Este recorrido en la nube es mantenido por la comunidad y puede quedar rezagado respecto a la última versión de InsForge. La configuración canónica y siempre actualizada es el directorio
deploy/docker-compose/ en el repositorio de InsForge.Requisitos previos
- Una cuenta de Azure activa.
- Un cliente SSH para conectarse a la máquina virtual.
- Familiaridad básica con la línea de comandos de Linux.
Paso 1: 🖥️ Crear una máquina virtual de Azure
- Inicie sesión en el Portal de Azure y navegue a Máquinas virtuales.
- Haga clic en + Crear > Máquina virtual de Azure.
- Pestaña Básicos:
- Grupo de recursos: Cree uno nuevo (por ejemplo,
insforge-rg). - Nombre de la máquina virtual:
insforge-vm. - Imagen: Ubuntu Server 22.04 LTS o una versión más reciente.
- Tamaño:
Standard_B2s(2 vCPU, 4 GiB de memoria) es un buen punto de partida. Para producción, considereStandard_B4ms(4 vCPU, 16 GiB de memoria). - Tipo de autenticación: Clave pública SSH.
- Origen de la clave pública SSH: Generar nuevo par de claves. Llámelo
insforge-key.
- Grupo de recursos: Cree uno nuevo (por ejemplo,
- Pestaña Redes:
- En la sección Grupo de seguridad de red, haga clic en Crear nuevo.
- Agregue las siguientes reglas de puertos de entrada para permitir el tráfico:
22(SSH)80(HTTP para Nginx)443(HTTPS para Nginx/SSL)7130(API y panel de InsForge)
- Revisar y crear:
- Haga clic en Revisar y crear, luego en Crear.
- Cuando se le solicite, descargue la clave privada y cree el recurso. Guarde el archivo
.pemde forma segura. - Una vez desplegado, busque y copie la dirección IP pública de su VM.
Paso 2: ⚙️ Conectar y configurar el servidor
-
Conectarse vía SSH:
Abra su terminal, asigne los permisos correctos a su clave y conéctese a la VM.
-
Actualizar los paquetes del sistema:
- Instalar Docker: Siga las instrucciones oficiales y actualizadas en el sitio web de Docker para instalar Docker Engine en Ubuntu: https://docs.docker.com/engine/install/ubuntu/
-
Agregar su usuario al grupo de Docker:
Este paso le permite ejecutar comandos de Docker sin
sudo.Verifique que funcione. Este comando ahora debería ejecutarse sinsudo:💡 Nota: Si
docker psno funciona, cierre sesión de su sesión SSH y vuelva a iniciarla, luego intente de nuevo. ⚠️ Nota de seguridad: Agregar un usuario al grupodockerle otorga privilegios equivalentes a root. Esto es aceptable para una VM de un solo usuario, pero tenga cuidado en sistemas compartidos. -
Instalar Git:
Paso 3: 🚀 Desplegar InsForge
-
Clonar el repositorio:
Navegue a su directorio de inicio y clone el proyecto InsForge.
-
Crear la configuración del entorno:
Cree su archivo
.enva partir del ejemplo y ábralo para editarlo..env.exampleenumera todas las variables admitidas con comentarios. Para un despliegue básico solo necesita configurar unas pocas. Configure estos valores y actualice las URLs de la API con la IP pública de su VM:El resto de.env.examplecubre características opcionales (OpenRouter, despliegues de Vercel, proveedores OAuth). Déjelas en blanco a menos que las necesite.Generar un secreto JWT seguro: Ejecute esto en su VM y pegue el resultado en
JWT_SECRET: -
Iniciar los servicios de InsForge:
Descargue las imágenes de Docker e inicie todos los servicios en segundo plano.
-
Verificar los servicios:
Compruebe que los cuatro contenedores estén en ejecución.
Debería ver los servicios
postgres,postgrest,insforgeydenoen ejecución.
Paso 4: 🔑 Acceder a su instancia de InsForge
-
Probar la API del backend:
Use
curlpara comprobar el endpoint de salud.Debería ver una respuesta como:{"status":"ok", ...} -
Acceder al panel:
Abra su navegador y navegue a:
http://<your-vm-public-ip>:7130Inicie sesión con elROOT_ADMIN_USERNAMEyROOT_ADMIN_PASSWORDque configuró en su archivo.env.
Paso 5: 🌐 Configurar el dominio (Opcional pero recomendado)
-
Actualizar los registros DNS:
En la configuración de DNS de su proveedor de dominio, agregue dos registros A que apunten a la dirección IP pública de su VM:
api.yourdomain.com→<your-vm-public-ip>app.yourdomain.com→<your-vm-public-ip>
-
Instalar y configurar Nginx como proxy inverso:
Pegue la siguiente configuración:Habilite la configuración y recargue Nginx:
-
Instalar el certificado SSL con Certbot:
Siga las indicaciones. Certbot se encargará del resto.
-
Actualizar
.envcon URLs HTTPS: Edite su archivo.envy actualice las URLs.Cambie las URLs ahttps:Reinicie los servicios para que los cambios surtan efecto:
🔧 Gestión y mantenimiento
- Ver registros:
docker compose logs -f(todos los servicios) odocker compose logs -f insforge(servicio específico). - Detener servicios:
docker compose down - Reiniciar servicios:
docker compose restart - Actualizar InsForge: Ejecute esto desde
~/InsForge/deploy/docker-compose. Las imágenes están preconstruidas, así que descargue las últimas etiquetas en lugar de reconstruir. - Respaldar la base de datos: Ejecute desde
~/InsForge/deploy/docker-compose.
🐛 Solución de problemas
- Los servicios no inician: Revise
docker compose logsen busca de errores. Asegúrese de tener suficiente espacio en disco (df -h) y memoria (free -h). - Puerto ya en uso: Compruebe qué proceso está usando el puerto con
sudo netstat -tulpn | grep :7130. - Falta de memoria: Considere actualizar su VM de Azure a un tamaño con más RAM.
📊 Estimación de costos
Aviso legal: Los precios son estimaciones basadas en tarifas de pago por uso en una región común (por ejemplo, Este de EE. UU.) y pueden variar. Consulte siempre la calculadora de precios oficial de Azure para obtener la información más precisa. En Azure, usted paga por los recursos de la VM (CPU, RAM, almacenamiento), que son compartidos por todos los servicios de Docker que ejecute en ella.
Nivel gratuito (para pruebas)
- Costo: ~$0/mes durante los primeros 12 meses.
- Recursos: Azure ofrece un nivel gratuito que incluye 750 horas/mes de una VM
B1scon capacidad de ráfaga (burstable). - Limitaciones: Esta VM tiene recursos muy limitados (1 vCPU, 1 GiB de RAM) y puede funcionar lentamente. Es adecuada solo para pruebas básicas y familiarización, no para desarrollo activo o producción.
Configuración inicial (para desarrollo y proyectos pequeños)
- Costo: ~40/mes
- Recursos: Esta estimación corresponde a una VM
Standard_B2s(2 vCPU, 4 GiB de RAM) que ejecuta todos los contenedores Docker de InsForge. - Desglose: El costo consiste principalmente en las horas de cómputo de la VM. También incluye el almacenamiento del disco del sistema operativo y una dirección IP pública estática. Esta única VM ejecuta su base de datos, backend, Deno y todos los demás servicios.
Configuración de producción (para escalabilidad y confiabilidad)
Para producción, puede elegir entre una VM más grande todo en uno o una configuración más robusta que use servicios administrados.-
Opción A: VM más grande todo en uno
- Costo: ~170/mes
- Recursos: Una VM
Standard_B4msmás potente (4 vCPU, 16 GiB de RAM) para manejar mayor tráfico y todos los servicios. - Ventajas: Simple de gestionar, costo consolidado.
- Desventajas: La base de datos y la aplicación comparten recursos, lo que puede generar cuellos de botella de rendimiento. Escalar requiere actualizar toda la VM.
-
Opción B: Servicios administrados (recomendado para producción)
- Costo: ~$120+/mes (muy variable)
- Recursos:
- VM de aplicación: Una VM
Standard_B2spara los servicios de la aplicación (InsForge, PostgREST, Deno).(~$30/mes) - Base de datos administrada: Use Azure Database for PostgreSQL para confiabilidad, copias de seguridad automatizadas y escalabilidad.
(~$40+/mes para un nivel inicial)
- VM de aplicación: Una VM
- Ventajas: Altamente confiable y escalable. El rendimiento de la base de datos está aislado y garantizado. Copias de seguridad y seguridad administradas.
- Desventajas: Configuración más compleja, los costos se distribuyen entre varios servicios.
🔒 Mejores prácticas de seguridad
- Cambiar las contraseñas predeterminadas: Actualice siempre las contraseñas de administrador y de la base de datos.
- Habilitar el firewall: Use los Grupos de seguridad de red (NSG) de Azure para restringir el acceso a los puertos e direcciones IP necesarios.
- Actualizaciones regulares: Ejecute periódicamente
sudo apt update && sudo apt upgrade -yy actualice InsForge. - Respaldar regularmente: Automatice las copias de seguridad de la base de datos y la configuración.