NovelasVM — Plataforma Web de Novelas Visuales
Proyecto aliado de Afterlife para ejecutar y probar novelas visuales directamente en el navegador mediante Ren'Py Web (WebAssembly).
IP:
192.168.10.111
URL:http://192.168.10.111
VM: Cisco1 VMID 111
Estado: ✅ Running
1. Resumen Ejecutivo
NovelasVM es una máquina virtual dedicada a hospedar una plataforma web desde la cual los usuarios pueden jugar novelas visuales sin instalar nada: los proyectos de Ren'Py se compilan al formato web (HTML5/WebAssembly) y se sirven a través de nginx.
| Aspecto | Detalle |
|---|---|
| Propósito | Plataforma de distribución y pruebas de novelas visuales en navegador |
| Motor soportado | Ren'Py 8.3.4 (con web package) |
| Formato de salida | WebAssembly + HTML5 (Ren'Py Web) |
| Web server | nginx 1.24.0 |
| Sistema operativo | Ubuntu 24.04 LTS |
| Recursos asignados | 8 vCPUs / 16 GB RAM / 150 GB disco |
2. Infraestructura
2.1 VM en Proxmox (Cisco1)
| Parámetro | Valor |
|---|---|
| VMID | 111 |
| Nombre | NovelasVM |
| Nodo | Cisco1 (192.168.10.185) |
| CPU | 8 cores |
| RAM | 16 GB |
| Disco | 150 GB (local-lvm) |
| Red | vmbr0 (LAN 192.168.10.0/24) |
| IP estática | 192.168.10.111/24 |
| Gateway | 192.168.10.254 |
| DNS | 8.8.8.8, 8.8.4.4 |
2.2 Acceso
| Método | Comando / URL |
|---|---|
| SSH root | ssh root@192.168.10.111 |
| Password root | Aasi940812 |
| SSH app | ssh novelas@192.168.10.111 |
| Password app | NovelasAAS2024! |
| Web | http://192.168.10.111 |
Recomendación de seguridad: cambiar ambos passwords en la primera oportunidad.
3. Software Instalado
# Sistema base
apt update && apt upgrade -y
# Stack web y herramientas
nginx
git curl wget unzip build-essential
python3 python3-pip python3-venv
nodejs npm
docker.io docker-compose
ufw htop
# Requerido para compilar Ren'Py sin display físico
xvfb
3.1 Ren'Py SDK + Web Package
| Componente | Ruta | Versión |
|---|---|---|
| SDK Ren'Py | /opt/novelas/tools/renpy |
8.3.4 |
| Web package | /opt/novelas/tools/renpy/web |
8.3.4 |
| Ejecutable | /opt/novelas/tools/renpy/renpy.sh |
— |
4. Estructura de Directorios
/opt/novelas/
├── bin/
│ └── build-novela.sh # Script de build y publicación
├── builds/ # Builds web generadas (temporales)
├── projects/ # Proyectos fuente de Ren'Py
├── tools/
│ └── renpy/ # SDK Ren'Py + web package
└── docs/
└── README.md # Documentación local de la VM
/var/www/novelas/
├── index.html # Portal principal
└── games/
└── demo/ # The Question (demo de Ren'Py)
5. Cómo Agregar una Novela Visual
5.1 Subir el proyecto Ren'Py
Copia el proyecto a /opt/novelas/projects/<nombre-corto>/.
Ejemplo:
scp -r mi-novela/ root@192.168.10.111:/opt/novelas/projects/mi-novela
5.2 Compilar y publicar
ssh root@192.168.10.111
/opt/novelas/bin/build-novela.sh mi-novela /opt/novelas/projects/mi-novela
El script realiza lo siguiente:
- Limpia el directorio de build.
- Ejecuta
renpy.sh launcher web_builddentro de un framebuffer virtual (xvfb-run). - Verifica que se haya generado
index.html. - Copia los archivos generados a
/var/www/novelas/games/<nombre-corto>/. - Ajusta permisos para
www-data.
5.3 Acceder
Abre en el navegador:
http://192.168.10.111/games/mi-novela/
6. Configuración de nginx
/etc/nginx/sites-available/novelas:
server {
listen 80;
server_name _;
root /var/www/novelas;
index index.html;
# COOP/COEP requeridos por Ren'Py Web para SharedArrayBuffer
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Embedder-Policy "require-corp" always;
location / {
try_files $uri $uri/ =404;
}
# Cache agresiva para assets estáticos pesados
location ~* \.(wasm|data|js|png|jpg|jpeg|gif|ico|svg|opus|ogg|mp3|mp4|webm|zip)$ {
expires 30d;
add_header Cache-Control "public, immutable";
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Embedder-Policy "require-corp" always;
try_files $uri =404;
}
location ~* \.wasm$ {
add_header Content-Type "application/wasm";
}
}
6.1 Validar y recargar
nginx -t
systemctl reload nginx
7. Firewall
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
8. Demo Incluida
Se compiló la novela de demostración The Question que viene con Ren'Py para verificar el pipeline completo.
| Demo | URL |
|---|---|
| The Question | http://192.168.10.111/games/demo/ |
9. Comandos Útiles
# Estado de la VM
ssh root@192.168.10.111 "hostname -I; free -h; df -h"
# Reiniciar nginx
ssh root@192.168.10.111 "systemctl restart nginx"
# Ver logs de nginx
ssh root@192.168.10.111 "tail -f /var/log/nginx/novelas-access.log"
# Build manual de un proyecto
ssh root@192.168.10.111
/opt/novelas/bin/build-novela.sh <nombre> /opt/novelas/projects/<nombre>
10. Limitaciones y Consideraciones
- Ren'Py Web no soporta todo: ciertas características avanzadas de Ren'Py pueden no funcionar en navegador. Revisar Ren'Py Web documentation.
- Archivos grandes: las novelas con muchos assets generan builds pesados. Considerar compresión y progressive download.
- Seguridad: actualmente la plataforma es pública en la LAN. Si se requiere restringir acceso, implementar autenticación o Tailscale.
- Proceso de build:
web_buildocasionalmente se queda en estado idle tras terminar; el script usatimeout 600para forzar la finalización una vez generados los archivos.
11. Roadmap / Pendientes
- Configurar dominio propio (ej.
novelas.consultoria-as.com). - Habilitar HTTPS con Caddy o certbot.
- Unir NovelasVM a Tailscale para acceso remoto seguro.
- Implementar panel de administración para subir novelas vía web.
- Agregar autenticación de usuarios si las novelas son privadas.
- Integrar con Afterlife (usuarios, branding, analytics).
Documentación NovelasVM - Consultoria Alcaraz Salazar
Actualizado: 14 de Junio de 2026