feat: phase 3 redesign, game images, auth system, vm guides, service isolation
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
This commit is contained in:
consultoria-as
2026-04-28 05:15:38 +00:00
parent ea142501fa
commit 449c02eadc
151 changed files with 10053 additions and 2312 deletions

View File

@@ -1,9 +1,20 @@
# Database
# =============================================================================
# Project Afterlife - Multi-VM Architecture Environment Variables
# =============================================================================
# Copy this file to docker/.env and fill in all values before deployment.
# Each VM has its own compose file and uses only the variables it needs.
# =============================================================================
# VM 1: Web Platform (vm-web - 10.0.0.10)
# Services: Next.js, Strapi CMS, PostgreSQL, MinIO, Nginx, Certbot
# =============================================================================
# Database (PostgreSQL 16)
DATABASE_NAME=afterlife
DATABASE_USERNAME=afterlife
DATABASE_PASSWORD=change_me_in_production
# Strapi
# Strapi Secrets (generate with: openssl rand -base64 32)
APP_KEYS=key1,key2,key3,key4
API_TOKEN_SALT=change_me
ADMIN_JWT_SECRET=change_me
@@ -11,29 +22,133 @@ TRANSFER_TOKEN_SALT=change_me
JWT_SECRET=change_me
STRAPI_API_TOKEN=your_api_token_after_first_boot
# MinIO
# MinIO (S3-compatible storage)
MINIO_ROOT_USER=afterlife
MINIO_ROOT_PASSWORD=change_me_in_production
# Public URL (for frontend image/media URLs)
PUBLIC_STRAPI_URL=http://yourdomain.com
# Public URLs
PUBLIC_STRAPI_URL=https://play.consultoria-as.com
NEXT_PUBLIC_SITE_URL=https://play.consultoria-as.com
# Public hostname for game servers (DDNS)
PUBLIC_HOST=play.yourdomain.com
# Cloudflare API Token (create at https://dash.cloudflare.com/profile/api-tokens)
# Permissions needed: Zone > DNS > Edit
# Cloudflare DDNS (optional, for dynamic IPs)
# Create token at: https://dash.cloudflare.com/profile/api-tokens
# Permissions: Zone > DNS > Edit
PUBLIC_HOST=play.consultoria-as.com
CF_API_TOKEN=your_cloudflare_api_token
# AfterCoin Blockchain (private Ethereum chain for casino tokens)
# =============================================================================
# VM PRINCIPAL — Autenticacion (todo en vm-main - 10.0.0.10)
# Services: Authentik Server, Worker, PostgreSQL, Redis
# NOTE: Authentik runs on the same VM as Web + CMS (consolidated)
# =============================================================================
# Authentik (generate strong secrets — min 50 chars)
# You can generate with: openssl rand -base64 60
AUTHENTIK_SECRET_KEY=generate_a_very_long_random_string_minimum_50_characters_long
AUTHENTIK_POSTGRES_PASSWORD=change_me_in_production
AUTHENTIK_POSTGRES_USER=authentik
AUTHENTIK_POSTGRES_DB=authentik
# Authentik OIDC Clients (create these in Authentik Admin after first boot)
# Internal URL (Docker network). Nginx proxies /auth to authentik-server:9000
AUTHENTIK_URL=http://authentik-server:9000
# Web App (for players)
AUTHENTIK_CLIENT_ID_WEB=afterlife-web
AUTHENTIK_CLIENT_SECRET_WEB=change_me
AUTHENTIK_REDIRECT_URI_WEB=https://play.consultoria-as.com/api/auth/callback/authentik
# CMS Admin (for content editors)
AUTHENTIK_CLIENT_ID_CMS=afterlife-cms
AUTHENTIK_CLIENT_SECRET_CMS=change_me
AUTHENTIK_REDIRECT_URI_CMS=https://play.consultoria-as.com/admin/auth/callback/authentik
# =============================================================================
# VM 3: OpenFusion (vm-fusionfall - 10.0.0.30)
# Services: OpenFusion Server
# =============================================================================
# Public IP where players connect (your domain or public IP)
OPENFUSION_SHARD_IP=play.consultoria-as.com
OPENFUSION_MOTD="Welcome to Project Afterlife - FusionFall"
# =============================================================================
# VM 6: NieR Reincarnation (vm-nier - 10.0.0.70)
# Services: MariesWonderland Server (.NET 10)
# =============================================================================
# ResourcesBaseUrl must be exactly 43 characters after the host
# Example: http://play.consultoria-as.com/aaaaaaaaaaaaaaaaaaaaaaaa
NIER_RESOURCES_BASE_URL=http://play.consultoria-as.com/aaaaaaaaaaaaaaaaaaaaaaaa
NIER_MASTER_DATA_VERSION=20240404193219
# =============================================================================
# VM 7: Dragon Ball Online (vm-dbo - 10.0.0.80)
# Services: DBO Global Server (C++) + MariaDB
# =============================================================================
# MariaDB root password for DBO
DBO_DB_PASSWORD=dboglobal
# =============================================================================
# VM 4: MapleStory 2 (vm-maple2 - 10.0.0.40)
# Services: MySQL, World, Login, Game, Web
# =============================================================================
# MySQL root password
MAPLE2_DB_PASSWORD=maplestory
# Path to MapleStory 2 client data (14GB, NOT in git)
MAPLE2_DATA_FOLDER=../servers/maple2/client-data/Data
# Public IP for game client connections
MAPLE2_PUBLIC_IP=play.consultoria-as.com
# Internal .env for Maple2 servers (see servers/maple2/.env.example)
# GAME_IP and LOGIN_IP should be set to MAPLE2_PUBLIC_IP in servers/maple2/.env
# =============================================================================
# VM 5: Minecraft + AfterCoin Blockchain (vm-minecraft - 10.0.0.50)
# Services: Minecraft FTB, Geth, AFC Bridge, RPC SSL Proxy
# =============================================================================
# AfterCoin Admin Wallet
# Generate with: node -e "const {ethers}=require('ethers');const w=ethers.Wallet.createRandom();console.log(w.address,w.privateKey)"
AFC_ADMIN_ADDRESS=0xYOUR_ADMIN_ADDRESS
AFC_ADMIN_PRIVATE_KEY=your_private_key_without_0x_prefix
AFC_BRIDGE_SECRET=change_me_in_production
# AFC Store (MercadoPago integration)
# MercadoPago (AFC Store payments)
MERCADOPAGO_ACCESS_TOKEN=your_mp_access_token
MERCADOPAGO_WEBHOOK_SECRET=your_mp_webhook_secret
MERCADOPAGO_WEBHOOK_URL=https://yourdomain.com/api/afc/webhook
MERCADOPAGO_WEBHOOK_URL=https://play.consultoria-as.com/api/afc/webhook
AFC_PRICE_MXN=15
NEXT_PUBLIC_SITE_URL=http://localhost:3000
# =============================================================================
# VM 6: Retro Consoles (vm-retro - 10.0.0.60)
# Services: SM64 Coop DX, N64 Netplay, Dolphin Traversal
# =============================================================================
# SM64 Coop DX
SM64_PORT=7777
SM64_PLAYERS=16
# N64 Netplay (Mario Party)
G64NS_NAME="Afterlife N64 - Mario Party"
G64NS_PORT=45000
G64NS_MAXGAMES=4
G64NS_MOTD="Welcome to Project Afterlife N64 Netplay"
G64NS_DISABLEBROADCAST=false
G64NS_ENABLEAUTH=false
# =============================================================================
# Game Server Public IPs (displayed on website to players)
# These can be the same domain if you use port-based routing,
# or different subdomains/IPs per VM.
# =============================================================================
FUSIONFALL_PUBLIC_IP=play.consultoria-as.com
MAPLE2_PUBLIC_IP=play.consultoria-as.com
MINECRAFT_PUBLIC_IP=play.consultoria-as.com
SM64_PUBLIC_IP=play.consultoria-as.com
N64_PUBLIC_IP=play.consultoria-as.com
DOLPHIN_PUBLIC_IP=play.consultoria-as.com