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
npm ci
Desarrollo local
npm run serve
Abre http://localhost:8080 en el navegador. Eleventy reconstruye automáticamente al guardar cambios.
Build estático
npm run build
El resultado queda en _site/. Para limpiar:
npm run clean
Añadir un juego nuevo
-
Crear el archivo YAML del juego:
src/games/<slug>.yamlCopiar de un juego existente y modificar los campos. El
sluges el identificador URL (solo letras minúsculas, números y guiones). -
Crear la carpeta de imágenes:
static/games/<slug>/Copiar:
logo.png(o.svg),screenshot-1.png,screenshot-2.png, ... -
Crear la carpeta de descargas:
downloads/<slug>/Copiar los binarios:
<slug>-v<version>-<plataforma>.<ext> -
Verificar que las rutas en el YAML coinciden exactamente con los archivos copiados.
-
Regenerar el sitio:
npm run build -
Verificar localmente:
npm run serveAbrir http://localhost:8080 y comprobar el juego nuevo.
-
Reconstruir el contenedor Docker:
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):
# 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):
# 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.
# 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:
<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)
docker compose up --build -d
Acceder en 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