Files
web-jailgames/README.md
T
JailDesigner cff1746906 Añadir compose para producción con Traefik/Portainer
- docker-compose.portainer.yml: Nginx alpine con labels Traefik,
  volúmenes en /var/volumes/web_jailgames/, red web externa
- README: flujo de despliegue online (rsync + Portainer),
  alternativa Apache VirtualHost

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 13:15:15 +02:00

193 lines
4.7 KiB
Markdown

# 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/<slug>.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/<slug>/
```
Copiar: `logo.png` (o `.svg`), `screenshot-1.png`, `screenshot-2.png`, ...
3. **Crear la carpeta de descargas:**
```
downloads/<slug>/
```
Copiar los binarios: `<slug>-v<version>-<plataforma>.<ext>`
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
<VirtualHost *:80>
ServerName jailgames.sustancia.synology.me
DocumentRoot /usr/local/apache2/htdocs/jailgames
<Directory /usr/local/apache2/htdocs/jailgames>
Options -Indexes
AllowOverride None
Require all granted
# Rutas limpias (equivalente al try_files de Nginx)
FallbackResource /jailgames/404.html
</Directory>
</VirtualHost>
```
---
## 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/<slug>/ # Imágenes de cada juego
├── downloads/<slug>/ # Binarios descargables
├── _site/ # Build generado (no versionar)
├── .eleventy.js # Configuración de Eleventy
├── package.json
├── Dockerfile
├── docker-compose.yml
└── nginx.conf
```