# ============================================================================= # 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 Secrets (generate with: openssl rand -base64 32) APP_KEYS=key1,key2,key3,key4 API_TOKEN_SALT=change_me ADMIN_JWT_SECRET=change_me TRANSFER_TOKEN_SALT=change_me JWT_SECRET=change_me STRAPI_API_TOKEN=your_api_token_after_first_boot # MinIO (S3-compatible storage) MINIO_ROOT_USER=afterlife MINIO_ROOT_PASSWORD=change_me_in_production # Public URLs PUBLIC_STRAPI_URL=https://play.consultoria-as.com NEXT_PUBLIC_SITE_URL=https://play.consultoria-as.com # 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 # ============================================================================= # 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 # MercadoPago (AFC Store payments) MERCADOPAGO_ACCESS_TOKEN=your_mp_access_token MERCADOPAGO_WEBHOOK_SECRET=your_mp_webhook_secret MERCADOPAGO_WEBHOOK_URL=https://play.consultoria-as.com/api/afc/webhook AFC_PRICE_MXN=15 # ============================================================================= # 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