Initial commit: NovelasVM platform with multi-engine support and Umineko Web integration

This commit is contained in:
2026-06-14 23:51:40 +00:00
commit 8ded9cc4c8
24 changed files with 3688 additions and 0 deletions

237
README.md Normal file
View File

@@ -0,0 +1,237 @@
# NovelasVM
> Plataforma web aliada de Afterlife para alojar, compilar y ejecutar novelas visuales directamente desde el navegador.
NovelasVM es una solución autoalojada multi-motor pensada para equipos que necesitan probar, distribuir o archivar novelas visuales sin depender de servicios de terceros. Soporta Ren'Py, Unity WebGL, proyectos HTML5 genéricos y ONScripter-RU (Umineko Web).
---
## Tabla de contenidos
1. [Características principales](#características-principales)
2. [Requisitos](#requisitos)
3. [Instalación rápida](#instalación-rápida)
4. [Arquitectura general](#arquitectura-general)
5. [Motores soportados](#motores-soportados)
6. [Uso básico](#uso-básico)
7. [El portal web](#el-portal-web)
8. [Umineko Web](#umineko-web)
9. [Documentación adicional](#documentación-adicional)
10. [Seguridad](#seguridad)
11. [Licencia y créditos](#licencia-y-créditos)
---
## Características principales
- **Multi-motor**: Ren'Py, Unity WebGL, HTML5 genérico, ONScripter-RU/Umineko.
- **Portal moderno**: catálogo con tarjetas, portadas, metadatos y selector de tres temas (oscuro, claro, inmersivo).
- **Compilación automatizada**: script `build-novela.sh` que detecta el motor, compila si es necesario y publica.
- **Configuración nginx optimizada**: cache de assets, headers COOP/COEP condicionales para Ren'Py Web.
- **Soporte de Umineko Web**: contenedor Docker con ONScripter-RU compilado a WebAssembly.
- **Diseño extensible**: tokens CSS, sistema de diseño documentado en `DESIGN.md`.
---
## Requisitos
### Hardware recomendado
| Componente | Mínimo | Recomendado |
|------------|--------|-------------|
| CPU | 4 vCPUs | 8 vCPUs |
| RAM | 8 GB | 16 GB |
| Disco | 50 GB | 150 GB (Umineko requiere ~15 GB) |
| Red | Acceso LAN | IP fija o dominio |
### Software
- Ubuntu 22.04/24.04 LTS
- nginx
- Docker + docker-compose
- Python 3
- Node.js + npm
- xvfb
- p7zip-full
- git
- Ren'Py SDK 8.3.4+ con web package
---
## Instalación rápida
```bash
# 1. Clonar este repositorio
git clone https://git.consultoria-as.com/consultoria-as/novelasvm.git
cd novelasvm
# 2. Ejecutar el script de instalación
sudo bash scripts/setup.sh
# 3. Copiar el portal a /var/www/novelas
sudo cp -r var-www/* /var/www/novelas/
sudo chown -R www-data:www-data /var/www/novelas
# 4. Recargar nginx
sudo nginx -t && sudo nginx -s reload
```
Para la instalación detallada paso a paso, consulta [`docs/INSTALL.md`](docs/INSTALL.md).
---
## Arquitectura general
```
┌─────────────────────────────────────────────────────────────────┐
│ Navegador │
│ │
│ http://192.168.10.111/ http://192.168.10.111:8081/ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │ Portal web │ │ Umineko Web │ │
│ │ (nginx 80) │ ─── redirect ───▶ │ (Docker/nginx 80)│ │
│ └──────────────┘ └──────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ Juegos web │ │
│ │ /var/www/... │ │
│ └──────────────┘ │
└─────────────────────────────────────────────────────────────────┘
/opt/novelas/ Código, proyectos y herramientas
/var/www/novelas/ Raíz servida por nginx
```
Para más detalles técnicos, consulta [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md).
---
## Motores soportados
| Motor | Script/carpetas esperadas | Compilación | Notas |
|-------|---------------------------|-------------|-------|
| **Ren'Py** | `project.json` o `game/script.rpy` | Sí (`renpy.sh web_build`) | Requiere COOP/COEP |
| **Unity WebGL** | `Build/`, `TemplateData/`, `index.html` | No | Copia directa |
| **Web genérico** | `index.html` | No | Copia directa |
| **ONScripter** | `0.txt`, `nscript.dat`, `ons.cfg` | No | Usa OnscripterYuri web |
| **ONScripter-RU / Umineko** | `*.file`, `default.cfg`, `chiru.file` | Contenedor Docker | Motor específico |
Más información en [`docs/ENGINES.md`](docs/ENGINES.md).
---
## Uso básico
### Agregar una novela
```bash
sudo /opt/novelas/bin/build-novela.sh <slug> /opt/novelas/projects/<slug> [motor]
```
Ejemplos:
```bash
# Ren'Py
sudo /opt/novelas/bin/build-novela.sh demo /opt/novelas/projects/demo
# Unity WebGL
sudo /opt/novelas/bin/build-novela.sh mi-juego /opt/novelas/projects/mi-juego unity
# Web genérico
sudo /opt/novelas/bin/build-novela.sh web-novel /opt/novelas/projects/web-novel web
```
### Metadatos opcionales
Crea un archivo `meta.json` en la raíz del proyecto:
```json
{
"title": "Mi Novela",
"subtitle": "Subtítulo opcional",
"description": "Breve descripción.",
"author": "Autor",
"version": "1.0",
"cover": "/games/mi-novela/cover.jpg"
}
```
---
## El portal web
El portal principal está en `/var/www/novelas/` y ofrece:
- Catálogo dinámico cargado desde `/games.json`.
- Selector de temas: oscuro, claro, inmersivo.
- Tarjetas con portada, título, subtítulo, badge del motor, descripción.
- Diseño responsive y accesible (sin emojis, iconos SVG).
Para personalizar el diseño, revisa [`docs/DESIGN.md`](docs/DESIGN.md) y [`docs/PORTAL.md`](docs/PORTAL.md).
---
## Umineko Web
Umineko utiliza un motor especial que corre dentro de un contenedor Docker.
```bash
# Iniciar
sudo /opt/novelas/bin/umineko-web.sh start
# Detener
sudo /opt/novelas/bin/umineko-web.sh stop
# Reiniciar
sudo /opt/novelas/bin/umineko-web.sh restart
# Ver logs
sudo /opt/novelas/bin/umineko-web.sh logs
```
URL: `http://192.168.10.111/games/umineko/`
Más detalles en [`docs/UMINEKO.md`](docs/UMINEKO.md).
---
## Documentación adicional
- [`docs/INSTALL.md`](docs/INSTALL.md) — Instalación detallada.
- [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) — Arquitectura y flujo de datos.
- [`docs/ENGINES.md`](docs/ENGINES.md) — Guía por motor.
- [`docs/PORTAL.md`](docs/PORTAL.md) — Personalización del portal.
- [`docs/THEMES.md`](docs/THEMES.md) — Sistema de temas.
- [`docs/API.md`](docs/API.md) — Especificación de `games.json` y metadatos.
- [`docs/TROUBLESHOOTING.md`](docs/TROUBLESHOOTING.md) — Solución de problemas.
- [`docs/SECURITY.md`](docs/SECURITY.md) — Consideraciones de seguridad.
- [`docs/UMINEKO.md`](docs/UMINEKO.md) — Integración de Umineko Web.
- [`docs/DESIGN.md`](docs/DESIGN.md) — Sistema de diseño.
---
## Seguridad
- Cambia las contraseñas de root y del usuario `novelas` tras la instalación.
- Considera habilitar HTTPS con certbot o Caddy.
- No publiques el repositorio si incluye assets con copyright.
- Los headers COOP/COEP solo se aplican a juegos Ren'Py; no se aplican globalmente.
Lee más en [`docs/SECURITY.md`](docs/SECURITY.md).
---
## Licencia y créditos
El código de la plataforma (scripts, portal, documentación) se provee tal cual para uso interno de Afterlife / Consultoría AS.
Componentes de terceros:
- Ren'Py SDK: MIT
- OnscripterYuri: licencia del proyecto original
- Umineko Web (`umineko_web_asm`): por VictoriqueMoe y colaboradores
- Fuentes Google (Inter, JetBrains Mono): SIL Open Font License
Los juegos publicados por los usuarios conservan sus propias licencias.