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
155 lines
6.3 KiB
Plaintext
155 lines
6.3 KiB
Plaintext
# =============================================================================
|
|
# 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
|