You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
senzapaura_es/.env.example

99 lines
4.9 KiB

# --- Base de datos -----------------------------------------------------------
# En local basta un archivo SQLite. En producción, la URL de Turso (libsql://…).
DATABASE_URL=postgresql://senza_paura_web:CLAVE@192.168.18.171:5432/senzapaura
# --- Audio -------------------------------------------------------------------
# Directorio privado con los archivos completos. NO debe servirse como estático:
# es lo que se entrega solo a quien ha comprado. Los fragmentos de muestra viven
# aparte, en static/muestras/, y esos sí son públicos.
MEDIA_DIR=./media/audio
# --- Pagos (Stripe) ----------------------------------------------------------
# Sin estas claves la tienda funciona salvo el cobro: el botón de pagar avisa.
STRIPE_SECRET_KEY=
# Secreto del endpoint /api/stripe/webhook. En local sale de:
# stripe listen --forward-to localhost:5173/api/stripe/webhook
STRIPE_WEBHOOK_SECRET=
# --- Entrar con Google / Facebook --------------------------------------------
# Sin estas claves, los botones no se pintan y solo queda el código por correo:
# un botón de «Continuar con Google» sin configurar solo lleva a un error.
#
# La dirección de retorno tiene que estar dada de alta EXACTA en cada consola,
# y ser la misma que ORIGIN de más abajo:
#
# https://senzapaura.es/acceso/google/retorno
# https://senzapaura.es/acceso/facebook/retorno
#
# En desarrollo, además, esta otra (Google la admite; Facebook no):
#
# http://localhost:5173/acceso/google/retorno
#
# Un aviso que cuesta días si se descubre tarde: Facebook exige HTTPS y, para
# que lo pueda usar cualquiera y no solo los administradores de la app, pasar
# su verificación de empresa y la revisión del permiso `email`. Google es más
# rápido, pero también pide pantalla de consentimiento y el dominio verificado
# en Search Console.
#
# Google: https://console.cloud.google.com/apis/credentials
# Tipo «ID de cliente de OAuth» → «Aplicación web».
# Facebook: https://developers.facebook.com/apps → producto «Inicio de sesión».
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRET=
# --- Correo (Resend) ---------------------------------------------------------
# Manda los códigos de acceso y los mensajes del formulario de contacto.
# Sin RESEND_API_KEY, en desarrollo el código se imprime por consola.
RESEND_API_KEY=
CONTACTO_DESTINO=hola@senzapaura.es
CONTACTO_REMITENTE="Web Senza Paura <web@senzapaura.es>"
# --- Servidor ----------------------------------------------------------------
# adapter-node necesita conocer el origen público para validar los formularios.
# En el servidor va https://senzapaura.es; en local, el puerto de desarrollo.
# Si no coincide con la dirección por la que se entra de verdad, SvelteKit
# rechaza todos los formularios con un 403 y parece que la web está rota.
ORIGIN=http://localhost:3000
# --- Página de «muy pronto» --------------------------------------------------
# Con esto encendido, quien llegue de fuera ve la página de espera y nadie más
# que la lista de abajo ve la web. Apagado salvo que se diga: una web que se
# esconde sola porque falta una variable es peor fallo que una que se ve cuando
# no tocaba.
#
# La red local (192.168.x, 10.x, 172.16-31.x) y el propio equipo entran siempre,
# sin ponerlos aquí: encender el portón y quedarse fuera uno mismo es la forma
# más rápida de no poder comprobar si funciona.
#
# Aquí van las direcciones de fuera que sí pueden mirar: la tuya cuando estés en
# otro sitio, la de quien tenga que revisar. Direcciones sueltas o rangos:
# PROXIMAMENTE_PERMITIDAS=89.46.247.16,85.60.0.0/16
#
# En este montaje hay que poner ahí la IP pública de la propia línea —fija y
# contratada como tal— aunque se mire desde casa: el router hace NAT de retorno,
# así que una petición al dominio desde la red local llega al proxy con la IP
# pública y no con la 192.168. Sin ella verías tu propia página de espera.
#
# IMPORTANTE: con un proxy delante hay que poner también ADDRESS_HEADER y
# XFF_DEPTH, aquí abajo. Sin ellas todas las peticiones parecen venir del proxy
# —una IP local—, así que el portón deja pasar a todo el mundo y no se nota.
PROXIMAMENTE=
PROXIMAMENTE_PERMITIDAS=
# --- Detrás de un proxy inverso ----------------------------------------------
# Solo en el servidor, y solo si hay un proxy delante (Nginx, Nginx Proxy
# Manager, Caddy…). En local se dejan vacías.
#
# Sin esto, `getClientAddress()` devuelve la IP del proxy en vez de la de quien
# pide. Y esa función es la que usa el limitador del formulario de acceso: con
# todas las peticiones pareciendo venir de la misma dirección, el límite salta
# con una sola persona insistiendo y nadie más puede pedir su código.
#
# XFF_DEPTH es el número de proxies entre internet y Node, contando desde el
# final de la cadena. Uno solo → 1. Si algún día se mete un Cloudflare delante,
# pasa a 2; equivocarlo deja la IP a merced de quien mande su propia cabecera.
ADDRESS_HEADER=
XFF_DEPTH=

Powered by TurnKey Linux.