Publícala en internet
Publica el panel y su API en un servidor con Docker, o el panel en Vercel o en cualquier host Node.js.
Para el paquete Front + Back
Antes de desplegar
Antes de salir a producción. Cada seed (yarn seed, yarn seed:prod y el primer inicio de Docker) crea administradores de ejemplo cuyas contraseñas aparecen en las guías. Cambia sus contraseñas o elimínalos, y define tu propio JWT_SECRET, antes de que el panel sea accesible para nadie más.
- Ejecuta la API con
NODE_ENV=production, tu propioJWT_SECRET, yCORS_ORIGINyFRONTEND_URLcon la dirección pública del panel. Una API de producción se niega a arrancar sin los dos primeros. - Detrás de un proxy inverso (Nginx, Caddy, un balanceador de carga), define
TRUST_PROXY=1, para que el límite de inicios de sesión cuente visitantes en lugar del proxy. - Deja
DEMO_MODEyNEXT_PUBLIC_DEMO_MODEdesactivados, salvo que el despliegue sea una demo pública.
Antes de desplegar
Construido sin una dirección de API, el panel funciona con su API simulada: las cuentas de ejemplo están en el código de la aplicación y se comprueban en el navegador, así que cualquiera puede leerlas e iniciar sesión, y cada cambio se queda en el navegador del visitante. Conéctalo a tu API antes de que lleguen usuarios o datos reales.
La API simulada integradaDeja NEXT_PUBLIC_DEMO_MODE desactivado salvo que el despliegue sea una demo pública.
Las dos aplicaciones en un servidor con Docker
El docker-compose.yml que ejecuta la plantilla en local también la ejecuta en un servidor. Da a cada aplicación su propio dominio detrás de un servidor web que añada HTTPS, como Caddy o Nginx, que reenvíe el dominio del panel al puerto 3030 y el de la API al puerto 8000.
Nombra las dos direcciones
Crea
.enven la carpetadashboard-2-full-stack, junto adocker-compose.yml. El panel compila la dirección de la API en su JavaScript, y la API permite la dirección del panel enCORS_ORIGINyFRONTEND_URL, ambos a partir de estas dos líneas.dashboard-2-full-stack/.envDASHBOARD_URL=https://admin.your-domain.com API_URL=https://api.your-domain.comAñade tus claves
La API también lee
back-end/.envcuando existe, para las claves del proveedor de IA, R2 y la clave MCP. Créalo desde.env.exampley añadeTRUST_PROXY=1detrás de tu servidor web. El archivo compose define por sí mismo la base de datos, el puerto yNODE_ENV=production, y la API genera unJWT_SECRETen el volumen de datos cuando no das ninguno.Terminalendashboard-2-full-stackcp back-end/.env.example back-end/.envInícialo en segundo plano
Terminalendashboard-2-full-stackdocker compose up --build -dResultado esperado:
https://api.your-domain.com/api/healthresponde"status":"ok", y el dominio del panel abre la página de inicio de sesión.
Los servicios se reinician con el servidor. La base de datos vive en el volumen dashboard-2-data. Después de cambiar DASHBOARD_URL, API_URL o un puerto, ejecuta docker compose up --build -d de nuevo: el panel tiene que construirse con la nueva dirección.
La API por sí sola
back-end tiene su propio Dockerfile, así que cualquier host que construya desde un Dockerfile puede ejecutar la API sola. El contenedor guarda su base de datos SQLite en /data: monta un volumen allí, o los datos se pierden con el contenedor. En un volumen nuevo, crea la base de datos con los datos de ejemplo una vez.
back-enddocker build -t dashboard-api .
docker run -d --restart unless-stopped -p 8000:8000 -v dashboard-data:/data -e CORS_ORIGIN=https://admin.your-domain.com -e FRONTEND_URL=https://admin.your-domain.com dashboard-apiLa imagen ya funciona con NODE_ENV=production y su archivo SQLite en /data. Pasa solo los valores que necesites, cada uno con -e, como -e GOOGLE_API_KEY=.... La forma habitual de ejecutar la API sigue siendo docker compose up --build en la raíz del paquete, que la inicia junto con el panel.
En un host Node.js sin Docker, el comando de construcción es yarn build, el de inicio yarn start:prod, y yarn seed:prod se ejecuta una vez para crear las tablas. Un archivo SQLite necesita un disco persistente allí; en un host que no lo tenga, usa MySQL.
El panel en Vercel
Pon el panel en un repositorio Git privado
Sube la carpeta del panel (
front-enden Full Stack,dashboard-2-front-enden el paquete Admin Dashboard) a un repositorio privado de GitHub, GitLab o Bitbucket. Tu licencia no permite compartir el código fuente públicamente.Impórtala en Vercel
Añade un proyecto nuevo desde ese repositorio. Vercel detecta Next.js; deja los ajustes de construcción por defecto. En el repositorio de Full Stack, define el directorio raíz del proyecto como
front-end.Añade las variables de entorno
Añade
ENABLE_EXPERIMENTAL_COREPACKcon el valor1, para que Vercel instale con la versión de Yarn que fijapackage.json. LuegoNEXT_PUBLIC_API_BASE_URL(tu API con/api),NEXT_PUBLIC_WEBSOCKET_BASE_URL(la misma dirección sin/api) yNEXT_PUBLIC_BASE_URL(la dirección del propio panel).WEATHER_API_KEYes opcional.Despliega
Inicia el despliegue, luego añade tu dominio en los ajustes Domains del proyecto y añade esa dirección al
CORS_ORIGINy alFRONTEND_URLde la API.Resultado esperado: Tu dominio abre la página de inicio de sesión.
Después de cambiar una variable NEXT_PUBLIC_*, despliega de nuevo: la aplicación en marcha conserva los valores con los que se construyó.
El panel en un servidor Node.js
Con tus ajustes en el .env del panel, instala, construye e inicia:
corepack enable
yarn install
yarn build
yarn startResponde en el puerto 3030, o en PORT cuando el host define uno. Pon un servidor web delante para tu dominio y HTTPS, y mantén yarn start en ejecución con un gestor de procesos o un servicio del sistema.
El panel como imagen de Docker
El Dockerfile del panel construye un servidor independiente en el puerto 3030, que se ejecuta con un usuario sin derechos de administrador. La dirección de la API es un argumento de construcción:
docker build -t dashboard-2 --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_BASE_URL=https://admin.your-domain.com .
docker run -d --restart unless-stopped -p 3030:3030 dashboard-2WEATHER_API_KEY se lee cuando el contenedor se ejecuta: añade -e WEATHER_API_KEY=... a docker run.
Cuando ya está en internet
- Inicia sesión en la dirección de tu panel, con
/eny/ar, y comprueba los dos idiomas. - Cada página indica a los buscadores que no la indexen, mediante una cabecera
X-Robots-Tag: noindex, nofollowdefinida ennext.config.js, porque un panel con sesión iniciada no tiene lugar en los resultados de búsqueda.