# MangaReader - Configuración del Servidor VPS

## 📋 Información del Servidor

**URL:** https://manga.cbcren.online
**Subdominio:** manga.cbcren.online (dedicado, sin interferencias)
**Protocolo:** HTTPS (SSL automático por Let's Encrypt)
**Puerto backend:** 3001 (interno, vía Docker proxy)
**Estado:** ✅ Activo y corriendo

## 🚀 Servicios Configurados

### 1. Backend API (Node.js/Express)
- **Puerto:** 3001
- **Servicio systemd:** `mangareader-backend.service`
- **Directorio:** `/home/ren/ios/MangaReader/backend`
- **Auto-reinicio:** ✅ Sí (systemd)
- **Acceso externo:** ✅ Sí (firewall ufw)

### 2. Proxy Reverse (Caddy en Docker)
- **Contenedor:** gitea-proxy
- **Imagen:** caddy:2
- **Rol:** Proxy HTTPS con certificado SSL automático
- **Backend interno:** 172.17.0.1:3001 (Docker bridge gateway)
- **SSL:** Let's Encrypt automático
- **No interfiere con:** Gitea, Nextcloud, DNS, Finanzas

### 3. DNS
- **Registro A:** manga.cbcren.online → 194.163.191.200
- **Propietario:** Usuario
- **Propósito:** Subdominio dedicado exclusivo para MangaReader

### 4. Storage
- **Directorio:** `/home/ren/ios/MangaReader/storage/`
- **Estructura:**
  ```
  storage/
  └── manga/
      └── {mangaSlug}/
          └── chapter_{chapterNumber}/
              ├── page_001.jpg
              ├── page_002.jpg
              └── manifest.json
  ```

## 🌐 Endpoints API

### Manga Endpoints
- `GET /api/health` - Health check
- `GET /api/manga/:slug` - Info de manga
- `GET /api/manga/:slug/chapters` - Lista de capítulos
- `GET /api/chapter/:slug/images` - Imágenes de capítulo
- `GET /api/manga/:slug/full` - Info completa

### Storage Endpoints
- `POST /api/download` - Descargar capítulo a VPS
- `GET /api/storage/chapters/:mangaSlug` - Listar capítulos descargados
- `GET /api/storage/chapter/:mangaSlug/:chapterNumber` - Verificar capítulo
- `GET /api/storage/image/:mangaSlug/:chapterNumber/:pageIndex` - Obtener imagen
- `DELETE /api/storage/chapter/:mangaSlug/:chapterNumber` - Eliminar capítulo
- `GET /api/storage/stats` - Estadísticas de almacenamiento

## 🔧 Gestión del Servicio

### Verificar estado
```bash
sudo systemctl status mangareader-backend.service
```

### Iniciar servicio
```bash
sudo systemctl start mangareader-backend.service
```

### Detener servicio
```bash
sudo systemctl stop mangareader-backend.service
```

### Reiniciar servicio
```bash
sudo systemctl restart mangareader-backend.service
```

### Ver logs
```bash
sudo journalctl -u mangareader-backend.service -f
```

### Ver logs recientes
```bash
sudo journalctl -u mangareader-backend.service -n 50
```

## 📱 Configuración iOS App

### APIConfig.swift
```swift
static let serverURL = "https://manga.cbcren.online"
static let port: Int? = nil  // Usa puerto estándar HTTPS (443)
```

### URL Base Completa
```
https://manga.cbcren.online
```

## 🧪 Tests

### Health Check
```bash
curl https://manga.cbcren.online/api/health
```

### Storage Stats
```bash
curl https://manga.cbcren.online/api/storage/stats
```

### Test Local (directo al backend)
```bash
curl http://localhost:3001/api/health
```

## 🔒 Seguridad

### SSL/TLS
- **Certificado:** Let's Encrypt (automático via Caddy)
- **Renovación:** Automática
- **Protocolo:** HTTPS/TLS 1.2+
- **Proxy:** Caddy maneja SSL termination

### Firewall
- Puerto 3001 abierto solo para acceso local (Docker)
- No requiere puerto abierto al público (Caddy maneja el proxy)

### Recomendaciones Futuras
1. ✅ SSL/HTTPS (implementado con Let's Encrypt)
2. Implementar autenticación JWT
3. Rate limiting
4. Validación de input
5. Sanitización de rutas de archivos

## 📊 Monitoreo

### Revisar uso de disco
```bash
du -sh /home/ren/ios/MangaReader/storage/
```

### Listar capítulos descargados
```bash
find /home/ren/ios/MangaReader/storage/ -name "manifest.json"
```

### Ver tamaño por manga
```bash
du -sh /home/ren/ios/MangaReader/storage/manga/*/
```

## 🚨 Troubleshooting

### El servicio no inicia
```bash
# Ver logs de error
sudo journalctl -u mangareader-backend.service -n 100 --no-pager

# Verificar que node esté instalado
which node
node --version

# Verificar puerto disponible
sudo ss -tlnp | grep 3001
```

### No se puede acceder desde el exterior
```bash
# Verificar firewall
sudo ufw status

# Verificar que el servicio esté corriendo
sudo systemctl status mangareader-backend.service

# Verificar puerto desde adentro
curl http://localhost:3001/api/health
```

### Puerto ya en uso
```bash
# Ver qué está usando el puerto
sudo ss -tlnp | grep 3001

# Matar proceso si es necesario
sudo kill -9 <PID>
```

## 📝 Notas Importantes

1. **Auto-inicio:** El servicio se inicia automáticamente al reiniciar el servidor
2. **Auto-reinicio:** Si el servicio falla, se reinicia automáticamente después de 10 segundos
3. **Subdominio dedicado:** manga.cbcren.online no interfiere con Gitea ni otros servicios
4. **HTTPS automático:** Caddy obtiene y renueva certificados SSL automáticamente
5. **Sin puertos públicos:** El puerto 3001 es interno, solo se expone vía proxy HTTPS
6. **Almacenamiento:** Usa /home/ren/ios/MangaReader/storage/ con espacio disponible (200GB)

## 🎯 Próximos Pasos

1. ✅ Backend configurado y corriendo
2. ✅ Subdominio dedicado configurado
3. ✅ SSL/HTTPS automático
4. ✅ Servicio systemd activo
5. ✅ Proxy Caddy configurado
6. ⏭️ Clonar repo en Mac
7. ⏭️ Compilar app iOS
8. ⏭️ Instalar en iPad/iPhone via Sideloadly/3uTools
9. ⏭️ Probar descarga de capítulos
10. ⏭️ Verificar lectura offline

## 📞 Soporte

Si tienes problemas:
1. Verificar los logs: `sudo journalctl -u mangareader-backend.service -f`
2. Verificar el estado: `sudo systemctl status mangareader-backend.service`
3. Verificar firewall: `sudo ufw status`
4. Verificar conectividad: `curl http://localhost:3001/api/health`

---
**Última actualización:** 2026-02-04 16:42 CET
**Versión:** 2.0.0
**Estado:** ✅ Producción (manga.cbcren.online con HTTPS)
