# JAILGAMES Sitio web estático para publicar y descargar juegos indie del estudio JAILGAMES. Generado con **Eleventy (11ty)** y servido con **Nginx en Docker**. --- ## Requisitos previos - **Node.js 18+** (para el build local) - **Docker** + **Docker Compose** (para despliegue) --- ## Instalación ```bash npm ci ``` --- ## Desarrollo local ```bash npm run serve ``` Abre [http://localhost:8080](http://localhost:8080) en el navegador. Eleventy reconstruye automáticamente al guardar cambios. --- ## Build estático ```bash npm run build ``` El resultado queda en `_site/`. Para limpiar: ```bash npm run clean ``` --- ## Añadir un juego nuevo 1. **Crear el archivo YAML** del juego: ``` src/games/.yaml ``` Copiar de un juego existente y modificar los campos. El `slug` es el identificador URL (solo letras minúsculas, números y guiones). 2. **Crear la carpeta de imágenes:** ``` static/games// ``` Copiar: `logo.png` (o `.svg`), `screenshot-1.png`, `screenshot-2.png`, ... 3. **Crear la carpeta de descargas:** ``` downloads// ``` Copiar los binarios: `-v-.` 4. **Verificar** que las rutas en el YAML coinciden exactamente con los archivos copiados. 5. **Regenerar el sitio:** ```bash npm run build ``` 6. **Verificar localmente:** ```bash npm run serve ``` Abrir [http://localhost:8080](http://localhost:8080) y comprobar el juego nuevo. 7. **Reconstruir el contenedor Docker:** ```bash docker compose up --build -d ``` --- ## Despliegue en producción (servidor con Traefik + Portainer) Usa `docker-compose.portainer.yml`. El flujo de trabajo es: **1. Preparar el servidor (primera vez):** ```bash # En el servidor, crear la estructura de volúmenes mkdir -p /var/volumes/web_jailgames/html mkdir -p /var/volumes/web_jailgames/nginx # Copiar la configuración de Nginx cp nginx.conf /var/volumes/web_jailgames/nginx/default.conf ``` **2. Build y subida del sitio (cada actualización):** ```bash # En tu máquina de desarrollo npm run build # Subir _site/ al servidor (ajusta usuario e IP) rsync -avz --delete _site/ usuario@servidor:/var/volumes/web_jailgames/html/ # Subir descargas (binarios de juegos) rsync -avz downloads/ usuario@servidor:/var/volumes/web_jailgames/html/downloads/ ``` **3. Desplegar en Portainer:** - En Portainer → Stacks → Add stack - Pegar el contenido de `docker-compose.portainer.yml` - Ajustar el dominio en las labels de Traefik si es necesario - Deploy El sitio quedará disponible en `https://jailgames.sustancia.synology.me`. --- ## Alternativa: dentro de Apache existente Si prefieres añadirlo como un VirtualHost más en tu Apache actual, solo necesitas copiar `_site/` al directorio del servidor y configurar el VirtualHost. No hace falta contenedor extra. ```bash # Build local npm run build # Copiar al volumen de Apache (ajusta la ruta) rsync -avz --delete _site/ usuario@servidor:/var/volumes/apache/html/jailgames/ rsync -avz downloads/ usuario@servidor:/var/volumes/apache/html/jailgames/downloads/ ``` Luego añade en Apache: ```apache ServerName jailgames.sustancia.synology.me DocumentRoot /usr/local/apache2/htdocs/jailgames Options -Indexes AllowOverride None Require all granted # Rutas limpias (equivalente al try_files de Nginx) FallbackResource /jailgames/404.html ``` --- ## Despliegue local (desarrollo) ```bash docker compose up --build -d ``` Acceder en [http://localhost](http://localhost). --- ## Estructura de carpetas ``` jailgames/ ├── src/ │ ├── _data/site.json # Datos globales del sitio │ ├── _includes/ │ │ ├── base.njk # Layout base HTML │ │ ├── game-card.njk # Tarjeta de juego (home) │ │ └── game-page.njk # Ficha individual de juego │ ├── games/ # Un archivo YAML por juego │ ├── css/style.css # Estilos globales │ ├── js/main.js # JS mínimo (lightbox) │ ├── index.njk # Página principal │ ├── game.njk # Generador de fichas individuales │ └── 404.njk # Página de error 404 ├── static/ │ ├── logo/ # Logo del sitio │ └── games// # Imágenes de cada juego ├── downloads// # Binarios descargables ├── _site/ # Build generado (no versionar) ├── .eleventy.js # Configuración de Eleventy ├── package.json ├── Dockerfile ├── docker-compose.yml └── nginx.conf ```