cff1746906
- 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>
193 lines
4.7 KiB
Markdown
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
|
|
```
|