Variables de entorno
Qué hace cada ajuste de los archivos .env de la API y del panel, cuáles necesitas y las opciones de Docker Compose.
Para el paquete Front + Back
Dónde están los ajustes
| Archivo | Lo lee | Contiene secretos |
|---|---|---|
back-end/.env | La API, con yarn dev y dentro de Docker Compose | Sí. Nunca lo incluyas en un commit. |
front-end/.env | El panel. Sus valores NEXT_PUBLIC_* se compilan en el momento de la construcción | Solo WEATHER_API_KEY, que se queda en el servidor del panel |
.env junto a docker-compose.yml | Docker Compose, para las dos aplicaciones | Solo WEATHER_API_KEY |
Crea el archivo de cada aplicación a partir del .env.example que tiene al lado, que documenta cada variable: cp .env.example .env. Los ejemplos sirven tal cual para una ejecución local. Ninguno de los archivos es necesario para Docker Compose.
Dónde están los ajustes
Un archivo opcional, .env en la carpeta del panel. Sin archivo, el panel funciona con su API simulada integrada. .env.example lo apunta a una API en http://localhost:8000: cópialo con cp .env.example .env cuando tengas una.
Con Docker, los valores NEXT_PUBLIC_* son argumentos de construcción (docker build --build-arg NAME=value), y WEATHER_API_KEY es una opción de ejecución (docker run -e WEATHER_API_KEY=...).
Lo esencial de la API
La API comprueba JWT_SECRET y, en producción, CORS_ORIGIN antes de iniciarse. Si falta uno o no sirve, se detiene con una línea que indica qué corregir. Las variables ya definidas en el proceso, por Docker o por un host, tienen prioridad sobre el archivo.
| Variable | Valor por defecto | Qué hace |
|---|---|---|
NODE_ENV | development | development crea y actualiza las tablas al iniciar. production nunca toca las tablas y se niega a arrancar con el JWT_SECRET de ejemplo o sin CORS_ORIGIN. |
PORT | 8000 | El puerto de la API. El panel apunta a él. |
DB_TYPE | sqlite | sqlite o mysql. |
SQLITE_DATABASE | ./database.sqlite | El archivo SQLite, relativo a back-end. |
JWT_SECRET | El valor de ejemplo | Firma cada inicio de sesión. Obligatorio. El valor del ejemplo solo se acepta fuera de producción. |
JWT_EXPIRATION | 7d | Cuánto dura una sesión iniciada. |
CORS_ORIGIN | http://localhost:3030 | La dirección del panel, separadas por comas si hay varias. Obligatorio en producción. |
FRONTEND_URL | http://localhost:3030 | La única dirección que aceptan las actualizaciones de permisos en vivo: la del panel. |
RATE_LIMIT_LOGIN | 10 | Inicios de sesión fallidos que una dirección puede hacer en 15 minutos antes de que el inicio de sesión responda 429. |
TRUST_PROXY | Vacío | El número de proxies inversos delante de la API, como 1 detrás de Nginx o Caddy, para que el límite de inicios de sesión cuente visitantes en lugar del proxy. |
Genera tu propio JWT_SECRET con:
node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"Antes de salir a producción. Cada seed (yarn seed, yarn seed:prod y el primer inicio de Docker) crea los administradores de ejemplo con las contraseñas que 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.
Usa MySQL en lugar de SQLite
Crea una base de datos vacía y luego configura el controlador y la conexión en back-end/.env:
DB_TYPE=mysql
DB_HOST=your-mysql-host
DB_PORT=3306
DB_USERNAME=your-mysql-username
DB_PASSWORD=your-mysql-password
DB_DATABASE=your-database-nameLuego ejecuta yarn seed, que crea las tablas y los datos de ejemplo. La API en marcha crea y actualiza las tablas por sí sola solo con NODE_ENV=development, así que con NODE_ENV=production ejecuta yarn seed:prod una vez después de yarn build, antes del primer inicio.
El panel
Cada valor NEXT_PUBLIC_* se compila en el JavaScript que carga el navegador, y cualquiera que abra la página puede leerlo. Nunca pongas un secreto en uno, y reinicia yarn dev o reconstruye después de cambiar alguno.
| Variable | Valor por defecto | Qué hace |
|---|---|---|
NEXT_PUBLIC_API_BASE_URL | Vacío: la API simulada | La dirección de la API incluido /api, como http://localhost:8000/api. Vacío ejecuta el panel con su API simulada integrada y datos de ejemplo. |
NEXT_PUBLIC_WEBSOCKET_BASE_URL | La dirección de la API sin /api | El servidor de la API, para las actualizaciones de permisos en vivo. No se usa en la API simulada. |
NEXT_PUBLIC_BASE_URL | http://localhost:3030 | La dirección pública del propio panel, sin barra final. robots.txt, el sitemap y las direcciones absolutas de los metadatos se construyen a partir de ella. |
WEATHER_API_KEY | Vacío | Una clave de WeatherAPI.com para el tiempo del saludo del resumen, que se lee solo en el servidor del panel. Vacío deja fuera el tiempo. |
PORT | 3030 | El puerto que usan yarn dev y yarn start. |
BUILD_STANDALONE | Sin configurar | true hace que yarn build genere un servidor autónomo, lo que configura el Dockerfile. En otro caso, déjalo sin configurar. |
En el panel no hay claves de proveedores de IA: viven solo en el .env de la API.
Opciones de Docker Compose
No hay que definir nada para una ejecución local. Para cambiar algo, ponlo en un archivo .env en la carpeta dashboard-2-full-stack, junto a docker-compose.yml, y ejecuta docker compose up --build de nuevo: el panel compila la dirección de la API.
| Variable | Valor por defecto | Qué hace |
|---|---|---|
DASHBOARD_PORT | 3030 | El puerto del panel en tu equipo. |
API_PORT | 8000 | El puerto de la API en tu equipo. |
DASHBOARD_URL | http://localhost: y DASHBOARD_PORT | Dónde llega el navegador al panel. El CORS_ORIGIN y el FRONTEND_URL de la API, y la dirección del propio panel, se definen a partir de él. |
API_URL | http://localhost: y API_PORT | Dónde llega el navegador a la API. El panel se construye con ella, seguida de /api. |
WEATHER_API_KEY | Vacío | El tiempo del saludo del resumen. |
DASHBOARD_PORT=3040Cambia un puerto cuando otro programa ya lo use, como arriba. Define DASHBOARD_URL y API_URL a la vez cuando sirvas el conjunto en tus propios dominios.
El contenedor de la API también lee back-end/.env cuando existe, así que las claves de IA, R2 y la clave MCP se definen en un solo lugar para yarn dev y Docker. El archivo compose tiene prioridad para los valores que difieren dentro de un contenedor: NODE_ENV=production, el puerto, el archivo SQLite en el volumen dashboard-2-data, las dos direcciones anteriores y el modo demo, que mantiene desactivado. Sin un JWT_SECRET propio, la API genera uno y lo guarda en el volumen.
Subida de imágenes
Las fotos de perfil y los archivos de imagen adjuntos del asistente se guardan en un bucket de Cloudflare R2. Define las cinco variables; sin ellas la subida responde que no está configurada, y todo lo demás funciona.
R2_ACCESS_KEY_ID=your-r2-access-key-id
R2_SECRET_ACCESS_KEY=your-r2-secret-access-key
R2_ENDPOINT=https://your-account-id.r2.cloudflarestorage.com
R2_BUCKET_NAME=your-bucket-name
R2_PUBLIC_URL=https://your-public-url.r2.devR2_PUBLIC_URL es la dirección pública del bucket, así que el bucket debe permitir lecturas públicas. Cada subida es una imagen de 10 MB como máximo, guardada como JPEG de 1920 píxeles de ancho como máximo, con una copia más pequeña al lado.
Claves del asistente de IA
Incluido con tu compra. Inicia sesión para leerlo o ábrelo en tu descarga.
Qué variables activan cada proveedor de IA y qué pasa cuando una se deja vacía.
El servidor MCP
Incluido con tu compra. Inicia sesión para leerlo o ábrelo en tu descarga.
Permitir que los agentes de programación y otros clientes MCP usen las herramientas del asistente: la clave y el endpoint.
Modo demostración
Incluido con tu compra. Inicia sesión para leerlo o ábrelo en tu descarga.
Cómo ejecutar una demo pública: los interruptores de demo, los mensajes gratuitos del asistente por visitante y qué pueden cambiar los visitantes.