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
205 lines
6.3 KiB
Bash
Executable File
205 lines
6.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# =============================================================================
|
|
# install.sh — Instalador maestro de Project Afterlife
|
|
# =============================================================================
|
|
# Uso: ./install.sh [main|nier|dbo|maple2|fusionfall]
|
|
#
|
|
# Si no se especifica argumento, detecta automaticamente la VM por hostname.
|
|
# =============================================================================
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
COMPOSE_DIR="$PROJECT_DIR/docker"
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
|
log_ok() { echo -e "${GREEN}[OK]${NC} $1"; }
|
|
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
|
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Detectar VM objetivo
|
|
# -----------------------------------------------------------------------------
|
|
detect_vm() {
|
|
local hostname
|
|
hostname=$(hostname -s 2>/dev/null || hostname)
|
|
|
|
case "$hostname" in
|
|
*main*|*web*|*auth*|*portal*)
|
|
echo "main"
|
|
;;
|
|
*nier*|*reincarnation*)
|
|
echo "nier"
|
|
;;
|
|
*dbo*|*dragonball*)
|
|
echo "dbo"
|
|
;;
|
|
*maple*|*ms2*)
|
|
echo "maple2"
|
|
;;
|
|
*fusion*|*fusionfall*)
|
|
echo "fusionfall"
|
|
;;
|
|
*)
|
|
echo ""
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Verificar prerequisitos
|
|
# -----------------------------------------------------------------------------
|
|
check_prerequisites() {
|
|
log_info "Verificando prerequisitos..."
|
|
|
|
if ! command -v docker &> /dev/null; then
|
|
log_error "Docker no esta instalado. Ejecuta primero el script de setup correspondiente."
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
|
|
log_error "Docker Compose no esta instalado."
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v git &> /dev/null; then
|
|
log_error "Git no esta instalado."
|
|
exit 1
|
|
fi
|
|
|
|
log_ok "Prerequisitos verificados."
|
|
}
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Verificar archivo .env
|
|
# -----------------------------------------------------------------------------
|
|
check_env() {
|
|
if [ ! -f "$COMPOSE_DIR/.env" ]; then
|
|
log_warn "No se encontro docker/.env"
|
|
log_info "Copiando desde .env.example..."
|
|
cp "$COMPOSE_DIR/.env.example" "$COMPOSE_DIR/.env"
|
|
log_warn "EDITA el archivo $COMPOSE_DIR/.env antes de continuar."
|
|
log_warn "Al menos debes configurar:"
|
|
log_warn " - DATABASE_PASSWORD"
|
|
log_warn " - APP_KEYS, API_TOKEN_SALT, ADMIN_JWT_SECRET, etc. (Strapi)"
|
|
log_warn " - AUTHENTIK_SECRET_KEY"
|
|
log_warn " - MINIO_ROOT_PASSWORD"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Instalar VM Principal
|
|
# -----------------------------------------------------------------------------
|
|
install_main() {
|
|
log_info "Instalando VM PRINCIPAL (Web + Auth + CMS)..."
|
|
cd "$COMPOSE_DIR"
|
|
|
|
log_info "Descargando imagenes y construyendo..."
|
|
docker compose -f docker-compose.main.yml pull
|
|
docker compose -f docker-compose.main.yml build
|
|
|
|
log_info "Iniciando servicios..."
|
|
docker compose -f docker-compose.main.yml up -d
|
|
|
|
log_info "Esperando a que los servicios esten listos..."
|
|
sleep 10
|
|
|
|
log_info "Verificando estado..."
|
|
docker compose -f docker-compose.main.yml ps
|
|
|
|
echo ""
|
|
log_ok "=== VM PRINCIPAL INSTALADA ==="
|
|
echo ""
|
|
echo "Accesos:"
|
|
echo " Web: https://TU_DOMINIO"
|
|
echo " CMS Admin: https://TU_DOMINIO/admin"
|
|
echo " Authentik: https://TU_DOMINIO/auth (si configuras proxy)"
|
|
echo " MinIO: https://TU_DOMINIO:9001 (o via proxy)"
|
|
echo ""
|
|
echo "Proximos pasos:"
|
|
echo " 1. Configura Authentik: docker exec -it main-authentik-server ak bootstrap"
|
|
echo " 2. Crea el admin de Strapi: docker exec -it main-cms npm run strapi admin:create-user"
|
|
echo " 3. Genera el API Token en Strapi Admin > Settings > API Tokens"
|
|
echo " 4. Reconstruye Next.js: docker compose -f docker-compose.main.yml exec web npm run build"
|
|
echo ""
|
|
}
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Instalar VM de Juego
|
|
# -----------------------------------------------------------------------------
|
|
install_game() {
|
|
local game="$1"
|
|
local compose_file="docker-compose.${game}.yml"
|
|
|
|
log_info "Instalando VM de juego: $game..."
|
|
cd "$COMPOSE_DIR"
|
|
|
|
if [ ! -f "$compose_file" ]; then
|
|
log_error "No se encontro $compose_file"
|
|
exit 1
|
|
fi
|
|
|
|
log_info "Construyendo e iniciando..."
|
|
docker compose -f "$compose_file" build
|
|
docker compose -f "$compose_file" up -d
|
|
|
|
log_info "Verificando estado..."
|
|
docker compose -f "$compose_file" ps
|
|
|
|
echo ""
|
|
log_ok "=== VM $game INSTALADA ==="
|
|
echo ""
|
|
}
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Main
|
|
# -----------------------------------------------------------------------------
|
|
main() {
|
|
echo ""
|
|
echo "=========================================="
|
|
echo " Project Afterlife — Instalador"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
local vm_target="${1:-}"
|
|
|
|
if [ -z "$vm_target" ]; then
|
|
vm_target=$(detect_vm)
|
|
if [ -n "$vm_target" ]; then
|
|
log_info "VM detectada automaticamente: $vm_target"
|
|
else
|
|
log_error "No se pudo detectar la VM automaticamente."
|
|
echo "Uso: $0 [main|nier|dbo|maple2|fusionfall]"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
check_prerequisites
|
|
check_env
|
|
|
|
case "$vm_target" in
|
|
main)
|
|
install_main
|
|
;;
|
|
nier|dbo|maple2|fusionfall)
|
|
install_game "$vm_target"
|
|
;;
|
|
*)
|
|
log_error "VM desconocida: $vm_target"
|
|
echo "Opciones validas: main, nier, dbo, maple2, fusionfall"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
log_ok "Instalacion completada!"
|
|
}
|
|
|
|
main "$@"
|