Variables de entorno
Cada clave del fichero .env.local, para que sirve y que pasa si falta.
Todas las claves viven en .env.local, que se crea copiando .env.example y
nunca se sube al repositorio. La identidad de marca no va aqui: esa esta en
src/config/product.ts.
La regla del prefijo
Solo las variables que empiezan por NEXT_PUBLIC_ llegan al navegador.
Cualquiera puede leerlas mirando el codigo de la pagina. Todas las demas se
quedan en el servidor y no salen nunca.
Por eso la clave publicable de Stripe lleva prefijo y la secreta no. Si alguna
vez dudas de si una clave puede llevar NEXT_PUBLIC_, la respuesta es no.
Sitio
| Variable | Para que sirve |
|---|---|
NEXT_PUBLIC_BASE_URL |
La URL publica real. De ella cuelgan el sitemap, las direcciones canonicas, los enlaces de los correos y los legales. Si no coincide con tu dominio, el posicionamiento apunta a otro sitio. |
NEXT_PUBLIC_APP_NAME |
Nombre publico de la aplicacion, que leen algunos metadatos. |
Firebase, lado del navegador
Las seis de NEXT_PUBLIC_FIREBASE_* salen del panel de Firebase, en la
configuracion del proyecto, al crear una aplicacion web: API_KEY,
AUTH_DOMAIN, PROJECT_ID, STORAGE_BUCKET, MESSAGING_SENDER_ID y APP_ID.
Que sean publicas es normal y no es un fallo de seguridad: quien protege tus datos son las reglas de Firestore, no el secreto de estas claves.
Firebase, lado del servidor
FIREBASE_ADMIN_PROJECT_ID, FIREBASE_ADMIN_CLIENT_EMAIL y
FIREBASE_ADMIN_PRIVATE_KEY salen de una cuenta de servicio.
La clave privada va entre comillas y con los saltos de linea escritos como
\n. Es el error mas comun al desplegar: pegada tal cual, con saltos de linea
de verdad, el arranque falla.
Estas tres dan acceso total, saltandose las reglas. Tratalas como la contrasena del banco.
Stripe
| Variable | Para que sirve |
|---|---|
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY |
Clave publicable, la unica que ve el navegador. |
STRIPE_SECRET_KEY |
Clave secreta del servidor. |
STRIPE_WEBHOOK_SECRET |
Secreto de firma del webhook. Sin el, la ruta no puede distinguir un aviso real de Stripe de uno inventado, y lo rechaza. |
El secreto de firma es distinto en pruebas y en produccion. Cambiar el webhook al dominio de produccion y olvidar cambiar este valor es lo que hace que los pagos dejen de confirmarse despues de desplegar.
Correo
| Variable | Para que sirve |
|---|---|
ZOHO_EMAIL |
Buzon desde el que salen los correos. La plantilla usa SMTP de Zoho, y se adapta a otro proveedor cambiando el transporte. |
ZOHO_EMAIL_PASSWORD |
Su contrasena de aplicacion. |
SUPPORT_EMAIL |
Direccion a la que llegan los avisos de soporte y contacto. Puede ser distinta de la anterior. |
Administracion
ADMIN_EMAILS es una lista de correos separados por comas. Es lo unico que da
acceso al panel. Quien tenga su correo aqui y entre con ese correo ve el
boton del panel en su perfil; quien no, recibe un rechazo del servidor aunque
escriba la direccion a mano.
No hay un campo "es administrador" en la base de datos que alguien pueda tocar: el permiso vive en la configuracion del despliegue.
Seguridad y privacidad
| Variable | Para que sirve |
|---|---|
IP_SALT |
Sal para cifrar las IP antes de guardarlas. Minimo 16 caracteres. Permite limitar por IP sin almacenar la IP en claro. |
EMAIL_HASH_SALT |
Sal para el hash de correos en los registros de borrado RGPD, que asi quedan sin datos personales. |
UNSUBSCRIBE_SECRET |
Firma los enlaces de baja, para que nadie pueda dar de baja a otro cambiando un identificador en la URL. |
Las tres vienen con valores change-me-*. Cambialas antes de desplegar y
generalas al azar. Si las dejas como estan, cualquiera que tenga la plantilla
conoce tus sales.