Some checks failed
Deploy Multi-VM / Deploy VM Web (push) Has been cancelled
Deploy Multi-VM / Deploy VM Auth (push) Has been cancelled
Deploy Multi-VM / Deploy Game Servers (docker-compose.fusionfall.yml, VM_FUSIONFALL_HOST, VM_FUSIONFALL_SSH_KEY, VM_FUSIONFALL_USER, fusionfall) (push) Has been cancelled
Deploy Multi-VM / Deploy Game Servers (docker-compose.maple2.yml, VM_MAPLE2_HOST, VM_MAPLE2_SSH_KEY, VM_MAPLE2_USER, maple2) (push) Has been cancelled
Deploy Multi-VM / Deploy Game Servers (docker-compose.minecraft.yml, VM_MINECRAFT_HOST, VM_MINECRAFT_SSH_KEY, VM_MINECRAFT_USER, minecraft) (push) Has been cancelled
Deploy Multi-VM / Deploy Game Servers (docker-compose.retro.yml, VM_RETRO_HOST, VM_RETRO_SSH_KEY, VM_RETRO_USER, retro) (push) Has been cancelled
- Redesign all internal pages to warm/gold aesthetic (catalog, game detail, documentary, about, donate, community, guides, contact, server-status, login, profile, admin, not-found) - Add real cover images for all 4 games via Strapi CMS with getImageUrl helper - Integrate NextAuth v5 with Authentik OIDC authentication - Add new public pages: community, guides, contact, server-status - Add new protected pages: login, profile, admin dashboard - Remove legacy AFC/MercadoPago system entirely - Add Docker Compose split files for service isolation (main, auth, fusionfall, nier) - Add OpenFusion VM deployment configs (config.vm.ini, systemd service, README-VM) - Add NieR Reincarnation server guide and desktop client guide - Add architecture docs for multi-VM deployment - Add healthcheck, SSE, contact, newsletter, admin API routes - Add reusable UI components, skeleton loaders, activity feed, bookmark system - Update deployment and game server documentation
106 lines
3.2 KiB
Bash
Executable File
106 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# =============================================================================
|
|
# deploy-vm.sh - Helper script for deploying Project Afterlife on a specific VM
|
|
# =============================================================================
|
|
# Usage: ./deploy-vm.sh <vm-name>
|
|
# Example: ./deploy-vm.sh web
|
|
#
|
|
# Available VMs: web, auth, nier, dbo, maple2, fusionfall
|
|
# =============================================================================
|
|
|
|
set -e
|
|
|
|
VM_NAME="$1"
|
|
PROJECT_DIR="/opt/project-afterlife"
|
|
COMPOSE_DIR="$PROJECT_DIR/docker"
|
|
|
|
if [ -z "$VM_NAME" ]; then
|
|
echo "Usage: $0 <vm-name>"
|
|
echo "Available VMs: web, auth, nier, dbo, maple2, fusionfall"
|
|
exit 1
|
|
fi
|
|
|
|
case "$VM_NAME" in
|
|
web)
|
|
COMPOSE_FILE="docker-compose.web.yml"
|
|
SERVICES="web cms postgres minio nginx"
|
|
;;
|
|
auth)
|
|
COMPOSE_FILE="docker-compose.auth.yml"
|
|
SERVICES="authentik-server authentik-worker authentik-postgres authentik-redis"
|
|
;;
|
|
nier)
|
|
COMPOSE_FILE="docker-compose.nier.yml"
|
|
SERVICES="nier-server"
|
|
;;
|
|
dbo)
|
|
COMPOSE_FILE="docker-compose.dbo.yml"
|
|
SERVICES="dbo-mariadb"
|
|
;;
|
|
maple2)
|
|
COMPOSE_FILE="docker-compose.maple2.yml"
|
|
SERVICES="maple2-world maple2-login maple2-game-ch0 maple2-web maple2-mysql"
|
|
;;
|
|
fusionfall)
|
|
COMPOSE_FILE="docker-compose.fusionfall.yml"
|
|
SERVICES="openfusion"
|
|
;;
|
|
*)
|
|
echo "Unknown VM: $VM_NAME"
|
|
echo "Available VMs: web, auth, nier, dbo, maple2, fusionfall"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
echo "=========================================="
|
|
echo "Deploying VM: $VM_NAME"
|
|
echo "Compose file: $COMPOSE_FILE"
|
|
echo "Services: $SERVICES"
|
|
echo "=========================================="
|
|
|
|
cd "$PROJECT_DIR"
|
|
|
|
echo "[1/4] Pulling latest code..."
|
|
git pull origin main
|
|
|
|
echo "[2/4] Building images..."
|
|
cd "$COMPOSE_DIR"
|
|
docker compose -f "$COMPOSE_FILE" build
|
|
|
|
echo "[3/4] Starting services..."
|
|
docker compose -f "$COMPOSE_FILE" up -d
|
|
|
|
echo "[4/4] Checking health..."
|
|
sleep 5
|
|
docker compose -f "$COMPOSE_FILE" ps
|
|
|
|
echo "=========================================="
|
|
echo "Deployment of $VM_NAME complete!"
|
|
echo "=========================================="
|
|
|
|
# Special handling for web VM: rebuild Next.js
|
|
case "$VM_NAME" in
|
|
web)
|
|
echo "[Extra] Rebuilding Next.js app..."
|
|
docker compose -f "$COMPOSE_FILE" exec web npm run build
|
|
docker compose -f "$COMPOSE_FILE" restart web
|
|
echo "Next.js rebuilt and restarted."
|
|
;;
|
|
maple2)
|
|
echo "[Extra] MapleStory 2 deployed."
|
|
echo "Remember to set GAME_IP and LOGIN_IP in servers/maple2/.env to the VM's public IP."
|
|
;;
|
|
nier)
|
|
echo "[Extra] NieR Reincarnation deployed."
|
|
echo "Remember to:"
|
|
echo " 1. Place AssetDatabase and MasterDatabase in the data volume"
|
|
echo " 2. Update RESOURCES_BASE_URL in .env (must be 43 chars after host)"
|
|
echo " 3. Patch the APK with scripts/patcher.ipynb (Google Colab)"
|
|
;;
|
|
dbo)
|
|
echo "[Extra] DBO Global deployed."
|
|
echo "WARNING: DBO server is currently a placeholder. The C++ server requires"
|
|
echo "Windows or Wine. Consider running it on a dedicated Windows VM."
|
|
;;
|
|
esac
|