Files
project-afterlife/docs/deployment.md
consultoria-as e4404b209d
Some checks failed
Deploy / deploy (push) Has been cancelled
docs: add comprehensive project documentation
- README.md: project overview, server status, quick start guide,
  architecture diagram, tech stack, and content inventory
- docs/architecture.md: technical architecture, service diagram,
  component details, and design decisions
- docs/game-servers.md: setup and operation guide for OpenFusion,
  MapleStory 2, and Minecraft FTB Infinity Evolved
- docs/cms-content.md: Strapi content model, i18n strategy,
  documentary structure, and API endpoints
- docs/deployment.md: local dev, production deploy, CI/CD,
  SSL setup, backup procedures, and monitoring

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 12:23:53 +00:00

4.3 KiB

Guia de Despliegue

Entornos

Entorno Compose File Servicios
Desarrollo local docker-compose.dev.yml + docker-compose.maple2.yml Todos
Produccion docker-compose.yml Web + CMS + DB + Nginx + SSL

Desarrollo Local

Requisitos

  • Docker Engine 24+
  • Docker Compose v2+
  • 8 GB RAM minimo (16 GB con todos los servidores de juegos)
  • 50 GB disco libre

Levantar todo

cd docker/

# 1. Stack principal
docker compose -f docker-compose.dev.yml up -d

# 2. MapleStory 2 (requiere setup previo, ver game-servers.md)
docker compose -f docker-compose.maple2.yml up -d

# 3. Verificar
docker ps

Puertos en uso

Puerto Servicio
3000 Next.js (frontend)
1337 Strapi (CMS admin)
5432 PostgreSQL
9000 MinIO API
9001 MinIO Console
23000-23001 OpenFusion
20001 MapleStory 2 Login
21001 MapleStory 2 World
20002 MapleStory 2 Game
21002 MapleStory 2 Game gRPC
3307 MySQL (MapleStory 2)
4000 MapleStory 2 Web
25565 Minecraft FTB

Detener servicios

docker compose -f docker-compose.dev.yml down
docker compose -f docker-compose.maple2.yml down

Reconstruir imagenes

docker compose -f docker-compose.dev.yml build --no-cache
docker compose -f docker-compose.maple2.yml build --no-cache

Produccion

Archivo: docker-compose.yml

El compose de produccion incluye:

  • Nginx como reverse proxy (puertos 80/443)
  • Certbot para certificados SSL Let's Encrypt
  • Sin servidores de juegos (se configuran aparte segun el VPS)

Variables de entorno requeridas

# Base de datos
DATABASE_NAME=afterlife
DATABASE_USERNAME=afterlife
DATABASE_PASSWORD=<password-seguro>

# MinIO
MINIO_ROOT_USER=afterlife
MINIO_ROOT_PASSWORD=<password-seguro>

# Strapi keys (generar con: openssl rand -base64 32)
APP_KEYS=<key1>,<key2>,<key3>,<key4>
API_TOKEN_SALT=<salt>
ADMIN_JWT_SECRET=<secret>
TRANSFER_TOKEN_SALT=<salt>
JWT_SECRET=<secret>

# API
STRAPI_API_TOKEN=<token-generado-en-admin>
PUBLIC_STRAPI_URL=https://tu-dominio.com

# Domain
DOMAIN=tu-dominio.com

Deploy manual al VPS

# En el VPS
cd /opt/project-afterlife
git pull origin main
docker compose build
docker compose up -d

CI/CD Automatico

El archivo .github/workflows/deploy.yml automatiza el deploy:

  1. Trigger: Push a main
  2. Accion: SSH al VPS, pull, build, restart

Secrets de GitHub requeridos:

  • VPS_HOST — Hostname o IP del VPS
  • VPS_USER — Usuario SSH
  • VPS_SSH_KEY — Llave privada SSH

SSL con Certbot

# Primera vez: obtener certificado
docker compose run --rm certbot certonly \
  --webroot --webroot-path=/var/www/certbot \
  -d tu-dominio.com

# Renovacion automatica (cron)
0 0 * * * docker compose run --rm certbot renew

Backups

Base de datos CMS (PostgreSQL)

# Exportar
docker exec docker-postgres-1 pg_dump -U afterlife afterlife > backup_$(date +%Y%m%d).sql

# Importar
cat backup.sql | docker exec -i docker-postgres-1 psql -U afterlife afterlife

Base de datos MapleStory 2 (MySQL)

# Exportar
docker exec maple2-db mysqldump -u root -pmaplestory --databases maple-data game-server > backup_ms2_$(date +%Y%m%d).sql

# Importar
cat backup_ms2.sql | docker exec -i maple2-db mysql -u root -pmaplestory

Mundo de Minecraft

# Exportar
docker cp minecraft-ftb:/data/world ./backup_mc_world_$(date +%Y%m%d)/

# Importar
docker cp ./backup_mc_world/ minecraft-ftb:/data/world
docker restart minecraft-ftb

Volumenes Docker (completo)

# Listar volumenes
docker volume ls | grep afterlife

# Backup de un volumen
docker run --rm -v docker_postgres_data:/data -v $(pwd):/backup \
  alpine tar czf /backup/postgres_data.tar.gz -C /data .

Monitoreo

Estado de contenedores

docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

Uso de recursos

docker stats --no-stream

Logs en tiempo real

docker logs -f --tail 50 <container-name>

Health checks

PostgreSQL y MySQL tienen healthchecks configurados en los compose files. Verificar con:

docker inspect --format='{{.State.Health.Status}}' docker-postgres-1
docker inspect --format='{{.State.Health.Status}}' maple2-db