- Puertos, carpeta de mangas, PUID/PGID, URL pública y registro se configuran en .env (plantilla en .env.example); sin .env arranca con valores portables (0.0.0.0:3352, ./mangas). - Publicar en 0.0.0.0 evita fallar al arrancar si la IP de la LAN o de Tailscale aún no existe; el acceso lo siguen limitando las reglas DOCKER-USER del host. - Imagen base fijada a node:24.22.2-alpine3.24 (node:sqlite es experimental). - ALLOW_SIGNUP=false por defecto (el primer usuario puede registrarse igual). - Comprobación de permisos al arrancar con mensaje claro (chown / PUID). - README: qué guardar y cómo mover el servicio a otro servidor. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
65 lines
3.6 KiB
Markdown
65 lines
3.6 KiB
Markdown
# Manga Reader
|
||
|
||
Lector web de manga autoalojado, con las dos fuentes de
|
||
[Tanko](https://github.com/Alexandro521/Tanko) (`src/servers/`):
|
||
|
||
- **LeerCapitulo** (español, por defecto): mucho más catálogo. El scraper está reescrito para el
|
||
sitio actual y ya no necesita navegador headless (las páginas vienen en el HTML).
|
||
- **MangaDex** (multi-idioma): español = es-la + es combinados. Muchos títulos populares no tienen
|
||
capítulos por licencias; la ficha ofrece buscarlos en LeerCapitulo.
|
||
- Búsqueda, populares y actualizados recientemente.
|
||
- Lector por página (toques/flechas, izq→der o der→izq) o en vertical, modo ahorro de datos.
|
||
- Usuarios con contraseña; el **historial y la página exacta** se guardan en el servidor
|
||
(`data/manga.db`), así que puedes seguir desde cualquier dispositivo/sesión.
|
||
- **Descargas**: botón "⬇ Descargar" en la ficha. Baja el manga entero en segundo plano a
|
||
`/zdata/media/mangas/<Título>/Capitulo NNNN.cbz` (+ `cover.jpg`, `ComicInfo.xml` en cada CBZ),
|
||
compatible con Kavita/Komga/Mihon. Se reanuda tras reinicios; repetirla baja solo los capítulos
|
||
nuevos. Los capítulos descargados se leen desde disco y, sin conexión, la ficha usa los datos guardados.
|
||
- **Novedades**: los mangas que empiezas a leer (o marcas con "Seguir") se revisan cada
|
||
`CHECK_INTERVAL_HOURS` (3 h). El inicio muestra "N caps. nuevos", la ficha marca NUEVO, los
|
||
mangas con copia local descargan lo nuevo solos, y se puede avisar por ntfy o Telegram (Ajustes).
|
||
- **Lector**: una página, doble página (tablet horizontal/PC; portada y páginas apaisadas van solas)
|
||
o vertical. Modo, ajuste y dirección se recuerdan por manga (por defecto: manhwa/manhua en
|
||
vertical, manga por página de derecha a izquierda). Zoom con pellizco, doble toque en el centro,
|
||
Ctrl+rueda o + / − / 0.
|
||
- **Estadísticas**: rachas, capítulos y páginas por semana, calendario de actividad, géneros
|
||
favoritos y lo más leído.
|
||
- Las imágenes pasan por el servidor (`/api/img`), solo con URLs firmadas por él (clave en `data/secret`).
|
||
|
||
## Uso
|
||
|
||
```bash
|
||
cp .env.example .env # opcional: ajusta rutas, puerto, usuario…
|
||
docker compose up -d --build
|
||
# http://<ip-del-servidor>:3352
|
||
```
|
||
|
||
El contenedor no depende del sistema operativo: imagen Node fijada (`node:24.22.2-alpine3.24`),
|
||
sin dependencias npm, y todo lo propio de la máquina está en `.env` (ver `.env.example`).
|
||
Sin `.env` arranca igual: puerto 3352 en todas las interfaces y descargas en `./mangas`.
|
||
|
||
El primer usuario puede registrarse siempre; después el registro queda cerrado salvo
|
||
`ALLOW_SIGNUP=true` en `.env`.
|
||
|
||
## Qué guardar / mover a otro servidor
|
||
|
||
| Qué | Dónde | Contenido |
|
||
|---|---|---|
|
||
| Código | este repositorio | se recrea con `git clone` |
|
||
| `.env` | raíz del proyecto (no está en git) | rutas, puerto, PUID/PGID, URL pública |
|
||
| `data/` | raíz del proyecto (no está en git) | `manga.db` (+ `-wal`/`-shm`): usuarios, historial, estadísticas, seguimiento, ajustes; `secret`: clave del proxy de imágenes |
|
||
| Mangas descargados | `MANGA_DIR_HOST` (aquí `/zdata/media/mangas`) | CBZ + portadas |
|
||
|
||
Pasos en el sistema nuevo:
|
||
|
||
```bash
|
||
git clone <repo> manga-reader && cd manga-reader
|
||
# copiar .env y data/ desde el servidor anterior (con el contenedor parado), y la carpeta de mangas
|
||
id -u; id -g # si no son 1000, ponlos en PUID/PGID del .env
|
||
docker compose up -d --build
|
||
```
|
||
|
||
Si el usuario del host no coincide con PUID/PGID, el contenedor no arranca y el log dice
|
||
exactamente qué `chown` hacer. Si la carpeta de mangas no existe, Docker la crea como root:
|
||
créala antes (`mkdir -p` con tu usuario) para que las descargas funcionen.
|