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>
This commit is contained in:
2026-03-30 13:15:15 +02:00
parent e337d7bc45
commit cff1746906
2 changed files with 120 additions and 28 deletions
+69 -28
View File
@@ -85,7 +85,75 @@ npm run clean
---
## Despliegue con Docker
## 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
@@ -93,33 +161,6 @@ docker compose up --build -d
Acceder en [http://localhost](http://localhost).
Para detener:
```bash
docker compose down
```
---
## Despliegue sin internet (ferias)
**En la máquina con internet:**
```bash
docker compose build
docker save jailgames-web:latest | gzip > jailgames-image.tar.gz
```
**Copiar** `jailgames-image.tar.gz` al portátil de la feria (USB).
**En el portátil de la feria (sin internet):**
```bash
gunzip -c jailgames-image.tar.gz | docker load
docker run -d -p 80:80 \
-v /ruta/local/downloads:/usr/share/nginx/html/downloads:ro \
--name jailgames jailgames-web:latest
```
Abrir [http://localhost](http://localhost) en cualquier navegador.
---
## Estructura de carpetas