Files
manga-reader/.env.example
T
ninoandClaude Opus 5.5 d3e196a2f3 Librería con listas, recomendaciones, descarga anticipada, app instalable con lectura offline y seguridad para exponerlo a internet
- Historial pasa a Librería: pestañas Leyendo, Siguiendo, Terminados, En el dispositivo y listas propias (Favoritos, Pendientes, Abandonados por defecto)
- Recomendaciones en el inicio según tus géneros más leídos (populares de MangaDex)
- Descarga anticipada de los N capítulos siguientes (opcionalmente en HD) al pasar la mitad de uno
- PWA: manifest, iconos y service worker; capítulos guardados en el dispositivo para leer sin conexión, progreso offline sincronizado después
- Seguridad: baneo de IP tras 6 intentos fallidos (configurable), IP real detrás de proxies de confianza, CSP y cabeceras, cookie Secure/HSTS en HTTPS, login sin diferencias de tiempo, registro cerrado por defecto, contraseñas de 8+, protección SSRF en el proxy de imágenes, errores 500 genéricos
- Ajustes: sección Seguridad con IPs bloqueadas, intentos recientes y la IP vista por el servidor
- LeerCapitulo: reintentos ante caídas (522/5xx), copia anterior si sigue caído y mensaje claro

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 07:52:13 -06:00

36 lines
1.3 KiB
Bash

# Copia a .env y ajusta. Todas son opcionales.
# Usuario/grupo dueño de ./data y de la carpeta de mangas en el host (salida de `id -u` / `id -g`).
PUID=1000
PGID=1000
# Dónde guardar los mangas descargados en el host (por defecto ./mangas dentro del proyecto).
MANGA_DIR_HOST=/zdata/media/mangas
# Interfaz y puerto publicados. 0.0.0.0 = todas.
BIND_IP=0.0.0.0
HOST_PORT=3352
# URL de la web que se usa en los enlaces de las notificaciones.
PUBLIC_URL=http://192.168.1.141:3352
# Registro de cuentas nuevas (con la base vacía, el primer usuario siempre puede registrarse).
ALLOW_SIGNUP=false
# Grupo "render" del host, para usar la GPU en el reescalado HD (getent group render | cut -d: -f3).
RENDER_GID=992
TZ=America/El_Salvador
CHECK_INTERVAL_HOURS=3
# --- Exponer a internet ---
# Baneo de IP: tras 6 intentos fallidos (contraseña o registro cerrado) en 60 min, 24 h bloqueada.
# La red local, loopback y Tailscale (100.64.0.0/10) nunca se bloquean. BAN_IGNORE: más IPs, separadas por comas.
BAN_MAX_FAILS=6
BAN_WINDOW_MIN=60
BAN_HOURS=24
# BAN_IGNORE=203.0.113.7
# Si hay un proxy inverso delante (recomendado, con HTTPS): cabecera con la IP real del cliente.
# Caddy/Nginx: x-forwarded-for · Cloudflare Tunnel: cf-connecting-ip. Sin proxy, déjalo vacío.
# REAL_IP_HEADER=x-forwarded-for