Ir al artículo
Aniq-UI

Dashboard 2Variables de entorno

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

ArchivoLo leeContiene secretos
back-end/.envLa API, con yarn dev y dentro de Docker ComposeSí. Nunca lo incluyas en un commit.
front-end/.envEl panel. Sus valores NEXT_PUBLIC_* se compilan en el momento de la construcciónSolo WEATHER_API_KEY, que se queda en el servidor del panel
.env junto a docker-compose.ymlDocker Compose, para las dos aplicacionesSolo 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.

VariableValor por defectoQué hace
NODE_ENVdevelopmentdevelopment 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.
PORT8000El puerto de la API. El panel apunta a él.
DB_TYPEsqlitesqlite o mysql.
SQLITE_DATABASE./database.sqliteEl archivo SQLite, relativo a back-end.
JWT_SECRETEl valor de ejemploFirma cada inicio de sesión. Obligatorio. El valor del ejemplo solo se acepta fuera de producción.
JWT_EXPIRATION7dCuánto dura una sesión iniciada.
CORS_ORIGINhttp://localhost:3030La dirección del panel, separadas por comas si hay varias. Obligatorio en producción.
FRONTEND_URLhttp://localhost:3030La única dirección que aceptan las actualizaciones de permisos en vivo: la del panel.
RATE_LIMIT_LOGIN10Inicios de sesión fallidos que una dirección puede hacer en 15 minutos antes de que el inicio de sesión responda 429.
TRUST_PROXYVacíoEl 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:

Terminal
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:

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-name

Luego 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.

VariableValor por defectoQué hace
NEXT_PUBLIC_API_BASE_URLVacío: la API simuladaLa 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_URLLa dirección de la API sin /apiEl servidor de la API, para las actualizaciones de permisos en vivo. No se usa en la API simulada.
NEXT_PUBLIC_BASE_URLhttp://localhost:3030La 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_KEYVacíoUna 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.
PORT3030El puerto que usan yarn dev y yarn start.
BUILD_STANDALONESin configurartrue 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.

VariableValor por defectoQué hace
DASHBOARD_PORT3030El puerto del panel en tu equipo.
API_PORT8000El puerto de la API en tu equipo.
DASHBOARD_URLhttp://localhost: y DASHBOARD_PORTDó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_URLhttp://localhost: y API_PORTDónde llega el navegador a la API. El panel se construye con ella, seguida de /api.
WEATHER_API_KEYVacíoEl tiempo del saludo del resumen.
dashboard-2-full-stack/.env
DASHBOARD_PORT=3040

Cambia 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.

back-end/.env
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.dev

R2_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.

¿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.