Ir al artículo
Aniq-UI

HollinaEjecuta el negocio de reservas en local

Ejecuta el negocio de reservas en local

Pon en marcha tu paquete en tu equipo, con Docker.

Para el paquete Full Stack

Antes de empezar: instala y abre Docker Desktop, o Docker Engine con Compose.

Ver los requisitos
  1. Descarga tu plantilla

    Abre Mis plantillas y descarga el ZIP de tu paquete.

    Resultado esperado: Un archivo con un nombre como hollina-vacation-rental-full-stack-….zip está en tus descargas.

  2. Descomprime y abre la carpeta

    Abre una terminal donde esté el ZIP, extráelo y entra en la carpeta hollina-vacation-rental-full-stack. En Windows, puedes extraerlo en el Explorador de archivos y abrir después una terminal en la carpeta.

    Terminal
    unzip -q hollina-vacation-rental-full-stack-*.zip
    cd hollina-vacation-rental-full-stack

    Resultado esperado: La carpeta contiene admin-dashboard, back-end, storefront y docker-compose.yml, junto a README.md, QUICKSTART.md y LICENSE.md.

    ¿Tienes problemas?
  3. Inicia las aplicaciones

    Construye e inicia la API, el sitio web de alojamientos y el panel de reservas. No hace falta configurar nada antes. El primer inicio construye tres imágenes y llena la base de datos con la empresa de demostración, lo que tarda unos minutos; los inicios siguientes tardan segundos.

    Terminalen hollina-vacation-rental-full-stack
    docker compose up --build

    ¿Un puerto ya está en uso?

    Si el inicio se detiene con ports are not available, address already in use o port is already allocated, otro programa usa 3030, 3031 u 8000. Detén ese programa, o crea un archivo llamado .env en la carpeta hollina-vacation-rental-full-stack, junto a docker-compose.yml, con el puerto que necesites, como ADMIN_PORT=3041 (SITE_PORT para el sitio web, API_PORT para la API). Ejecuta docker compose up --build de nuevo y abre la aplicación en su nuevo puerto.

    Un puerto ya está en uso

    Resultado esperado: Los tres servicios siguen en ejecución y el registro deja de desplazarse. Deja esta terminal abierta.

    ¿Tienes problemas?
  4. Abre el sitio web de alojamientos

    Abre localhost:3030Local. El inglés está en /en y el árabe en /ar. El sitio web no tiene cuentas: los alojamientos guardados se conservan en el navegador del visitante, y un huésped vuelve a encontrar una reserva con su referencia y el correo electrónico con el que se hizo. Sin claves de pago, el simulador incluido acepta todas las reservas con tarjeta y PayPal, así que todo el proceso de pago funciona; un número de tarjeta que termina en 0 es rechazado, para mostrar el camino del fallo.

    Resultado esperado: El sitio web se abre en su página de inicio con los alojamientos de demostración, sus fotografías y los destinos.

    ¿Tienes problemas?
  5. Inicia sesión en el panel de reservas

    Abre localhost:3031Local. Inicia sesión con admin@hollina.example y la contraseña Admin@123. Para el manager, escribe manager@hollina.example con Manager@123. Cambia ambas contraseñas antes de que la instalación sea accesible desde internet.

    Resultado esperado: El panel se abre en su resumen, con la ocupación y los ingresos de este mes, las llegadas y salidas de hoy y las últimas reservas.

    ¿Tienes problemas?

Haz un recorrido

Cómo se ve la empresa de demostración cuando todo está en marcha.

CuentaCorreo electrónicoContraseña
Super Admin: todas las páginas y permisosadmin@hollina.exampleAdmin@123
Manager: el resumen, el calendario, las reservas, los alojamientos, las consultas, las reseñas y el asistente de IA; sin administradores, roles ni ajustes de la empresamanager@hollina.exampleManager@123

La carga inicial añade 14 alojamientos (12 publicados, 2 borradores) con 42 fotografías, 6 destinos, 18 comodidades, 60 reservas a lo largo del año, 8 rangos bloqueados, 12 preguntas de huéspedes, 24 reseñas y 6 preguntas de la página de inicio, así que cada pantalla se abre llena. Las fechas se guardan como desplazamientos respecto al día de la carga, así que una base de datos nueva siempre tiene llegadas hoy. Son solo cuentas de demostración locales.

Detén e inicia de nuevo

Pulsa Ctrl+C en la terminal para detener las aplicaciones, o ejecuta esto desde la carpeta hollina-vacation-rental-full-stack. Tus datos, la base de datos y las subidas, se conservan en el volumen hollina-data.

Terminalen hollina-vacation-rental-full-stack
docker compose down

Vuelve a iniciar con el mismo comando del paso 3. Sin --build, reutiliza las imágenes que ya construiste.

Terminalen hollina-vacation-rental-full-stack
docker compose up

Conserva tus datos

docker compose down -v también elimina el volumen de datos. El siguiente inicio carga una copia nueva de la empresa de demostración, y todo lo que creaste desaparece.

Ejecuta el sitio web de alojamientos

Este paquete es el sitio web de alojamientos por sí solo. Lee todo de la API de Hollina, así que inicia la API primero. Si no lo construyes con otra dirección, el sitio web espera la API en http://localhost:8000. La API es un paquete aparte y no está en esta descarga.

  1. Descarga tu plantilla

    Abre Mis plantillas y descarga el ZIP de Stays Website.

  2. Descomprime y abre la carpeta

    Terminal
    unzip -q hollina-website-*.zip
    cd hollina-website

    Resultado esperado: La carpeta tiene un Dockerfile y un package.json.

    ¿Tienes problemas?
  3. Construye la imagen

    Los valores NEXT_PUBLIC_* se compilan en el JavaScript que carga el navegador, así que son argumentos de construcción. Sin ninguno, el sitio web usa la API en http://localhost:8000/api y se llama a sí mismo http://localhost:3030. Para una API en otro lugar, pasa su dirección.

    Terminalen hollina-website
    docker build -t hollina-website .

    Con tu propia API y dominio:

    Terminalen hollina-website
    docker build -t hollina-website --build-arg NEXT_PUBLIC_API_BASE_URL=https://api.your-company.com/api --build-arg NEXT_PUBLIC_SITE_URL=https://www.your-company.com --build-arg NEXT_PUBLIC_MEDIA_HOSTNAME=media.your-company.com .
    ¿Tienes problemas?
  4. Inícialo

    Dentro del contenedor, localhost es el propio contenedor, así que API_INTERNAL_URL indica al servidor del sitio web dónde encontrar la API en tu equipo, para los títulos de página, el primer renderizado de las páginas de inicio y de alojamiento, y el mapa del sitio. --add-host hace que host.docker.internal funcione en Linux; Docker Desktop ya lo tiene. Si el puerto 3030 está ocupado, cambia el número a la izquierda de -p, por ejemplo -p 3041:3030, abre ese puerto en su lugar y añade http://localhost:3041 al CORS_ORIGIN de la API.

    Terminalen hollina-website
    docker run -p 3030:3030 -e API_INTERNAL_URL=http://host.docker.internal:8000/api --add-host=host.docker.internal:host-gateway hollina-website

    Resultado esperado: localhost:3030Local abre el sitio web con los alojamientos de tu API. El inglés está en /en, el árabe en /ar.

    ¿Tienes problemas?

Ejecuta el panel de reservas

Este paquete es el panel de reservas por sí solo. Cada pantalla lee la API de Hollina, así que inicia la API primero. Si no lo construyes con otra dirección, el panel espera la API en http://localhost:8000. La API es un paquete aparte y no está en esta descarga.

  1. Descarga tu plantilla

    Abre Mis plantillas y descarga el ZIP de Booking Dashboard.

  2. Descomprime y abre la carpeta

    Terminal
    unzip -q hollina-booking-dashboard-*.zip
    cd hollina-booking-dashboard

    Resultado esperado: La carpeta tiene un Dockerfile y un package.json.

    ¿Tienes problemas?
  3. Construye la imagen

    Sin argumentos de construcción, el panel usa la API en http://localhost:8000/api. Para una API en otro lugar, pasa su dirección, su dirección sin /api para las notificaciones en directo, y la dirección del sitio web para el enlace "Volver al sitio web" y el "Ver alojamiento" del editor de alojamientos.

    Terminalen hollina-booking-dashboard
    docker build -t hollina-dashboard .

    Con tu propia API:

    Terminalen hollina-booking-dashboard
    docker build -t hollina-dashboard --build-arg NEXT_PUBLIC_API_BASE_URL=https://api.your-domain.com/api --build-arg NEXT_PUBLIC_WEBSOCKET_BASE_URL=https://api.your-domain.com --build-arg NEXT_PUBLIC_MEDIA_HOSTNAME=api.your-domain.com --build-arg NEXT_PUBLIC_SITE_URL=https://your-domain.com .
    ¿Tienes problemas?
  4. Inícialo e inicia sesión

    Si el puerto 3031 está ocupado, cambia el número a la izquierda de -p, por ejemplo -p 3041:3031, abre ese puerto en su lugar y añade http://localhost:3041 al CORS_ORIGIN de la API (y pon su FRONTEND_URL con esa dirección, desde la que se conectan las notificaciones en directo).

    Terminalen hollina-booking-dashboard
    docker run -p 3031:3031 hollina-dashboard

    Resultado esperado: localhost:3031Local abre el formulario de inicio de sesión. Inicia sesión con admin@hollina.example y la contraseña Admin@123, que una API con datos iniciales acepta.

    ¿Tienes problemas?

Ejecuta la API

Este paquete es la API NestJS por sí sola, sobre un archivo SQLite guardado en un volumen de Docker junto con las subidas. El sitio web de alojamientos y el panel de reservas son paquetes aparte y no están en esta descarga.

  1. Descarga tu plantilla

    Abre Mis plantillas y descarga el ZIP de API Backend.

  2. Descomprime y abre la carpeta

    Terminal
    unzip -q hollina-backend-*.zip
    cd hollina-backend

    Resultado esperado: La carpeta tiene un Dockerfile, un docker-entrypoint.sh y un package.json.

    ¿Tienes problemas?
  3. Construye la imagen

    Terminalen hollina-backend
    docker build -t hollina-api .
    ¿Tienes problemas?
  4. Inícialo con la empresa de demostración

    Un volumen nuevo tiene tablas vacías y ninguna cuenta a menos que pidas la empresa de demostración, así que conserva -e SEED_DEMO_DATA=true en el primer inicio. El volumen hollina-api-data conserva la base de datos y las subidas entre ejecuciones. Si el puerto 8000 está ocupado, cambia el número a la izquierda de -p, por ejemplo -p 8010:8000, y añade -e PUBLIC_MEDIA_URL=http://localhost:8010/media para que las direcciones de las fotografías también lo usen. Tus frontends deberán entonces apuntar a http://localhost:8010/api.

    Terminalen hollina-backend
    docker run -p 8000:8000 -v hollina-api-data:/data -e SEED_DEMO_DATA=true hollina-api

    Resultado esperado: localhost:8000/api/healthLocal responde con "status":"ok" y "database":"up".

    ¿Tienes problemas?

El contenedor acepta el sitio web en http://localhost:3030 y el panel en http://localhost:3031. En otras direcciones, define CORS_ORIGIN (ambas, separadas por comas), FRONTEND_URL (el panel) y SITE_URL (el sitio web, adonde un procesador de pagos devuelve al huésped) con -e. Sin claves de pago, el simulador incluido liquida todas las reservas con tarjeta y PayPal.

Para dar al contenedor tus propias claves (Stripe, PayPal, R2, IA, MCP), crea .env a partir de .env.example con cp .env.example .env, rellénalo y añade --env-file .env -e NODE_ENV=production a docker run:

Terminalen hollina-backend
docker run -p 8000:8000 -v hollina-api-data:/data -e SEED_DEMO_DATA=true --env-file .env -e NODE_ENV=production hollina-api

Un valor dado con -e gana al del mismo nombre en el archivo, así que el contenedor funciona en producción diga lo que diga .env, y mueve las rutas relativas del archivo (SQLITE_DATABASE, MEDIA_UPLOAD_DIR) al volumen. Sin un JWT_SECRET propio, o con el de ejemplo, el contenedor genera un secreto y lo guarda en el volumen, así que los inicios de sesión sobreviven a un reinicio.

Siguiente

¿Te atascaste en un paso?

Busca una solución antes de empezar de nuevo.

Solución de problemas

Preferencias de Cookies

Utilizamos cookies para mejorar tu experiencia de navegación, analizar el tráfico del sitio y personalizar el contenido. Al hacer clic en "Aceptar Todo", consientes nuestro uso de cookies para análisis y publicidad personalizada.