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.