Configuración y Ejecución de Proyectos LoopBack en ServBay
¿Qué es LoopBack?
LoopBack es un framework open-source para Node.js desarrollado por IBM, altamente escalable y diseñado para construir APIs y microservicios de manera rápida. Adopta el enfoque de Desarrollo Guiado por Modelos (MDD), permitiendo a los desarrolladores definir modelos de datos de forma eficiente y generar automáticamente APIs RESTful potentes. El framework incluye funciones integradas como conexiones a fuentes de datos, autenticación y autorización de usuarios, explorador de APIs, y soporta múltiples bases de datos y protocolos.
Principales características y ventajas de LoopBack
- Desarrollo guiado por modelos (MDD): Permite definir modelos de datos de forma intuitiva, generando automáticamente los endpoints de API y la lógica de validación de datos.
- Soporte para múltiples fuentes de datos: Conecta fácilmente con las principales bases de datos (como MongoDB, MySQL, PostgreSQL, MariaDB, entre otras), además de servicios RESTful, SOAP, etc.
- Potente CLI: La interfaz de línea de comandos de LoopBack (CLI) incluye numerosos comandos que simplifican tareas como la inicialización de proyectos, definición de modelos y configuración de datos.
- Modular y escalable: Su diseño flexible permite la integración de librerías y servicios de terceros mediante componentes y extensiones para necesidades específicas.
- Seguridad integrada: Proporciona sistemas de autenticación y autorización listos para usar, facilitando el desarrollo de APIs seguras.
Con LoopBack, los desarrolladores pueden incrementar significativamente la eficiencia al construir backends de aplicaciones web y APIs, creando soluciones de alto rendimiento y fáciles de mantener.
Cómo configurar y ejecutar un proyecto LoopBack en ServBay
Esta guía te mostrará cómo crear y ejecutar un proyecto LoopBack en el entorno Node.js que proporciona ServBay. Utilizaremos la función de "Sitios web" de ServBay para configurar el servidor web local y, mediante proxy inverso, redirigir las solicitudes externas al puerto donde está corriendo la aplicación LoopBack, facilitando el acceso local y la depuración en desarrollo.
Creación del proyecto LoopBack
Instalar la CLI de LoopBack
Antes de comenzar, asegúrate de haber instalado y activado el paquete de Node.js en ServBay. Luego, abre la terminal y usa npm para instalar globalmente la herramienta CLI de LoopBack:
bashnpm install -g @loopback/cli
1Inicializar el proyecto
Navega al directorio raíz sugerido por ServBay para sitios web,
/Applications/ServBay/www
, y utiliza la CLI de LoopBack para iniciar un nuevo proyecto. Se recomienda que elija un nombre en minúsculas y con guiones, por ejemploservbay-loopback-app
:bashcd /Applications/ServBay/www lb4 app servbay-loopback-app
1
2La CLI te guiará a través de la configuración del proyecto, incluyendo la selección de características (API REST, serialización, autenticación, etc.) y la estructura del mismo. Elige según tus necesidades.
Instalar dependencias del proyecto
Accede al nuevo directorio del proyecto e instala las dependencias necesarias de Node.js:
bashcd servbay-loopback-app npm install
1
2
Modificar la respuesta de LoopBack (Opcional)
Para demostrar cómo acceder a tu app a través de ServBay, puedes modificar el endpoint /ping
por defecto para que devuelva una respuesta personalizada.
Editar el archivo
src/controllers/ping.controller.ts
Localiza el archivo
src/controllers/ping.controller.ts
en tu proyecto y modifica su contenido como sigue, para que el endpoint/ping
devuelva la cadena "Hello ServBay!":typescriptimport {get} from '@loopback/rest'; export class PingController { constructor() {} @get('/ping') ping(): string { // Cambia la respuesta a "Hello ServBay!" return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
10
11
Ejecutar el proyecto en modo desarrollo
Durante la fase de desarrollo normalmente ejecutarás el servidor de desarrollo integrado de LoopBack, permitiendo iterar y depurar rápidamente. Accederemos a este servidor a través del proxy inverso de ServBay.
Iniciar el servidor de desarrollo
Desde el directorio raíz del proyecto, utiliza la terminal para iniciar la aplicación LoopBack. Por lo general, esta aplicación escuchará en un puerto específico. Puedes definir la variable de entorno
PORT
para seleccionar el puerto, por ejemplo8585
:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8585 npm start
1
2Una vez iniciado, deberías ver en la terminal un mensaje similar a "Server is running at http://[::1]:8585".
Configurar el sitio web de ServBay (Proxy inverso)
Abre el panel de control de ServBay y navega hasta la sección "Sitios web". Haz clic en agregar para crear un nuevo sitio proxy inverso, donde las solicitudes al dominio y puerto externos serán redirigidas a la dirección interna y puerto escuchados por tu app LoopBack:
- Nombre: Por ejemplo,
Mi primer sitio LoopBack de desarrollo
(para identificarlo en ServBay) - Dominio: Por ejemplo,
servbay-loopback-dev.servbay.demo
(lo usarás en tu navegador) - Tipo de sitio: Selecciona
Proxy inverso (Reverse Proxy)
- IP: Ingresa
127.0.0.1
(LoopBack corre en tu máquina local) - Puerto: Ingresa
8585
(el puerto donde escucha tu app)
Guarda la configuración y aplica los cambios en ServBay. ServBay configurará automáticamente el DNS local (modificando
/etc/hosts
o usando ServBay Helper Tool) y el servidor web (Caddy o Nginx), permitiéndote acceder al sitio mediante el dominio seleccionado.Para más detalles sobre cómo añadir un sitio proxy inverso en ServBay, consulta la documentación: Agregar sitio web de desarrollo Node.js (en inglés o según disponibilidad).
- Nombre: Por ejemplo,
Accede a la app en modo desarrollo
Abre tu navegador y visita el dominio y endpoint configurado, por ejemplo
https://servbay-loopback-dev.servbay.demo/ping
.Dado que ServBay configura certificados SSL automáticamente para sitios locales (usando ServBay User CA o ServBay Public CA), puedes acceder con seguridad vía HTTPS, simulando el entorno de producción y detectando posibles incidencias relacionadas con SSL desde el inicio. Para más información sobre SSL en ServBay, visita: Usar SSL para proteger el sitio web.
Despliegue en modo producción (Opcional)
Cuando tu proyecto LoopBack esté listo para producción, puedes ejecutarlo en modo producción, lo que mejora el rendimiento y reduce los mensajes de depuración.
Ejecutar el servidor en modo producción
Desde la raíz del proyecto, lanza LoopBack en modo producción. De igual forma, asigna un puerto (por ejemplo
8586
) y fija la variable de entornoNODE_ENV
aproduction
:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8586 NODE_ENV=production npm start
1
2Configura el sitio web de ServBay (Proxy inverso)
Regresa al panel de sitios web en ServBay y crea o edita un proxy inverso apuntando a la app en modo producción:
- Nombre: Por ejemplo
Mi primer sitio LoopBack en producción
- Dominio: Por ejemplo
servbay-loopback-prod.servbay.demo
- Tipo de sitio: Selecciona
Proxy inverso (Reverse Proxy)
- IP:
127.0.0.1
- Puerto:
8586
(el puerto de tu app en producción)
Guarda y aplica los cambios.
- Nombre: Por ejemplo
Accede a la versión en producción
Abre tu navegador y accede por ejemplo a
https://servbay-loopback-prod.servbay.demo/ping
para verificar que está todo funcionando correctamente. ServBay también proporcionará automáticamente soporte HTTPS en este caso.
Conexión con bases de datos
LoopBack soporta una gran variedad de bases de datos a través de sus conectores. ServBay ofrece paquetes de software para MySQL, MariaDB, PostgreSQL, MongoDB y Redis, permitiéndote iniciar fácilmente estos servicios e integrarlos con tu proyecto LoopBack.
A continuación tienes ejemplos de configuración de conexión para las bases de datos más comunes ofrecidas por ServBay. Adáptalos según tus necesidades.
Nota importante: Los nombres de usuario y contraseñas en estos ejemplos son solo marcadores de posición. Usa las credenciales reales (por ejemplo, el usuario root o los que hayas creado) que gestionas en el panel de control de ServBay.
Conexión a MongoDB
Primero, asegúrate de que MongoDB está instalado y activo en ServBay. Instala el conector para MongoDB de LoopBack:
bashnpm install --save @loopback/connector-mongodb
1Luego configura la fuente de datos (normalmente en
src/datasources/mongodb.datasource.ts
o nombre similar):typescript// src/datasources/mongodb.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mongodb', connector: 'mongodb', // MongoDB de ServBay por defecto corre en localhost:27017 url: 'mongodb://localhost:27017/servbay-loopback-app', // Usa tu base de datos host: 'localhost', port: 27017, user: '', // Coloca usuario si usas autenticación password: '', // Coloca la contraseña si corresponde database: 'servbay-loopback-app', // Usa tu base de datos // Otras configuraciones opcionales... }; export class MongodbDataSource extends juggler.DataSource { static dataSourceName = 'mongodb'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Conexión a Redis
Asegúrate de que el paquete Redis está instalado y activo en ServBay. Instala el conector de Redis para LoopBack (ten en cuenta que LoopBack no tiene un
@loopback/connector-redis
oficial, suele usarse elloopback-connector-redis
de la comunidad o el paqueteredis
de Node.js junto a los servicios de LoopBack):bashnpm install --save loopback-connector-redis # O cualquier otro paquete equivalente
1Luego configura la fuente de datos (ejemplo usando el estilo de
loopback-connector-redis
):typescript// src/datasources/redis.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'redis', connector: 'redis', // Redis de ServBay corre en localhost:6379 por defecto url: 'redis://localhost:6379', // Otras configuraciones opcionales... }; export class RedisDataSource extends juggler.DataSource { static dataSourceName = 'redis'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Nota: LoopBack 4 gestiona los data sources de manera distinta a LoopBack 3. Este ejemplo está basado en la sintaxis de LoopBack 3, pero en LoopBack 4 se recomienda usar
@datasource
y las formas modernas que describe la documentación oficial. Sin embargo, los parámetros host, port, user, password y database son habituales.Conexión a MariaDB (o MySQL)
Asegúrate de tener MariaDB o MySQL instalado y en ejecución desde ServBay. Ambos son compatibles. Instala el conector de MySQL para LoopBack:
bashnpm install --save @loopback/connector-mysql
1Luego, configura el data source:
typescript// src/datasources/mariadb.datasource.ts o mysql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mariadb', // O 'mysql' connector: 'mysql', // Usa el conector de mysql // url: '', // Puedes usar la url completa o separar host, port, database host: 'localhost', // Por defecto en ServBay port: 3306, // Puerto por defecto MariaDB/MySQL user: 'root', // Root es el usuario habitual en ServBay password: 'password', // << Reemplaza por la contraseña real >> database: 'servbay_loopback_app', // Tu base de datos // Otras configuraciones opcionales... }; export class MariaDbDataSource extends juggler.DataSource { static dataSourceName = 'mariadb'; // O 'mysql' constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Atención: El valor
password: 'password'
es un marcador temporal. Debes buscar y poner la clave real en el panel de control de base de datos de ServBay.Conexión a PostgreSQL
Asegúrate de tener PostgreSQL activo en ServBay. Instala el conector de PostgreSQL para LoopBack:
bashnpm install --save @loopback/connector-postgresql
1Luego, configura el data source:
typescript// src/datasources/postgresql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'postgresql', connector: 'postgresql', // url: '', // Usa url completa o separa host, port, database host: 'localhost', // Corre en localhost por defecto port: 5432, // Puerto estándar PostgreSQL user: 'user', // << Reemplaza por el usuario real de ServBay >> password: 'password', // << Reemplaza por la clave real de ServBay >> database: 'servbay_loopback_app', // Tu base de datos // Otras configuraciones opcionales... }; export class PostgresqlDataSource extends juggler.DataSource { static dataSourceName = 'postgresql'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Atención:
user: 'user'
ypassword: 'password'
son marcadores de posición. Utiliza las credenciales reales gestionadas o creadas en ServBay.
Resumen
Con estos pasos, has aprendido a crear, configurar y ejecutar un proyecto LoopBack con Node.js en tu entorno local con ServBay. Aprendiste cómo usar la función de "Sitios web" a través de proxy inverso para acceder a tu aplicación y conectar LoopBack con las bases de datos proporcionadas por ServBay.
ServBay ofrece un entorno de desarrollo local estable y práctico para frameworks Node.js como LoopBack, integrando servidor web, bases de datos y múltiples entornos de ejecución de manera eficiente. Gracias a la gestión unificada de sitios, soporte SSL y la integración de bases de datos en ServBay, el proceso de desarrollo y pruebas es más seguro y productivo.