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
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:
35
servers/nier-reincarnation/Dockerfile
Normal file
35
servers/nier-reincarnation/Dockerfile
Normal file
@@ -0,0 +1,35 @@
|
||||
# =============================================================================
|
||||
# NieR Reincarnation Server — MariesWonderland
|
||||
# =============================================================================
|
||||
# Build: docker build -t nier/server:latest -f Dockerfile .
|
||||
# Run: docker run -d -p 80:80 -p 443:443 -v nier_data:/data nier/server:latest
|
||||
#
|
||||
# Requiere:
|
||||
# - AssetDatabase/ en /data/assets
|
||||
# - MasterDatabase/ en /data/master
|
||||
# - UserDataPath/ en /data/users
|
||||
# =============================================================================
|
||||
|
||||
# --- Build Stage --------------------------------------------------------------
|
||||
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
|
||||
WORKDIR /src
|
||||
COPY MariesWonderland/ .
|
||||
RUN dotnet restore
|
||||
RUN dotnet publish -c Release -o /app/publish
|
||||
|
||||
# --- Runtime Stage ------------------------------------------------------------
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
|
||||
WORKDIR /app
|
||||
COPY --from=build /app/publish .
|
||||
|
||||
# gRPC HTTP/2 requiere que el runtime soporte TLS sobre HTTP/2
|
||||
ENV ASPNETCORE_ENVIRONMENT=Production
|
||||
ENV ASPNETCORE_URLS=http://0.0.0.0:80;https://0.0.0.0:443
|
||||
|
||||
# Volumen de datos (assets, master, users)
|
||||
VOLUME ["/data"]
|
||||
|
||||
EXPOSE 80
|
||||
EXPOSE 443
|
||||
|
||||
ENTRYPOINT ["dotnet", "MariesWonderland.dll"]
|
||||
99
servers/openfusion/README-VM.md
Normal file
99
servers/openfusion/README-VM.md
Normal file
@@ -0,0 +1,99 @@
|
||||
# OpenFusion — Despliegue en VM (Ubuntu 24.04)
|
||||
|
||||
## Dominio
|
||||
`play.consultoria-as.com`
|
||||
|
||||
## VM
|
||||
- **Hostname:** `vm-fusionfall`
|
||||
- **IP Privada:** `10.0.0.30/24`
|
||||
- **IP Pública / LAN:** `192.168.10.30` (ajustar según tu red)
|
||||
- **OS:** Ubuntu 24.04 LTS Server
|
||||
- **Recursos:** 1 vCPU / 512 MB RAM / 10 GB disco
|
||||
|
||||
## Puertos
|
||||
| Puerto | Protocolo | Descripción | Acceso |
|
||||
|--------|-----------|-------------|--------|
|
||||
| 23000 | TCP | Login Server | Público |
|
||||
| 23001 | TCP | Shard Server | Público |
|
||||
| 8003 | TCP | Monitor | Solo red privada (10.0.0.0/24) |
|
||||
| 22 | TCP | SSH | Solo red privada (10.0.0.0/24) |
|
||||
|
||||
## Archivos a copiar a la VM
|
||||
Desde este directorio en el host principal:
|
||||
|
||||
```bash
|
||||
# En el host principal (192.168.10.84)
|
||||
cd /home/AfterlifeProject/servers/openfusion
|
||||
|
||||
tar czvf /tmp/openfusion-vm.tar.gz \
|
||||
fusion \
|
||||
sql/ \
|
||||
tdata/ \
|
||||
config.vm.ini
|
||||
|
||||
scp /tmp/openfusion-vm.tar.gz fusionfall@10.0.0.30:/home/fusionfall/
|
||||
scp fusionfall.service fusionfall@10.0.0.30:/home/fusionfall/
|
||||
```
|
||||
|
||||
## Instalación en la VM
|
||||
|
||||
```bash
|
||||
ssh fusionfall@10.0.0.30
|
||||
|
||||
# Extraer
|
||||
mkdir -p ~/server && cd ~/server
|
||||
tar xzvf ~/openfusion-vm.tar.gz -C .
|
||||
mv config.vm.ini config.ini
|
||||
mkdir -p data
|
||||
chmod +x fusion
|
||||
|
||||
# Instalar dependencias
|
||||
sudo apt update && sudo apt install -y libsqlite3-0 ufw
|
||||
|
||||
# Firewall
|
||||
sudo ufw default deny incoming
|
||||
sudo ufw default allow outgoing
|
||||
sudo ufw allow from 10.0.0.0/24 to any port 22 proto tcp
|
||||
sudo ufw allow 23000/tcp
|
||||
sudo ufw allow 23001/tcp
|
||||
sudo ufw allow from 10.0.0.0/24 to any port 8003 proto tcp
|
||||
sudo ufw --force enable
|
||||
|
||||
# Instalar servicio
|
||||
sudo mv ~/fusionfall.service /etc/systemd/system/fusionfall.service
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now fusionfall
|
||||
```
|
||||
|
||||
## Verificación
|
||||
|
||||
```bash
|
||||
sudo systemctl status fusionfall
|
||||
sudo journalctl -u fusionfall -f
|
||||
sudo ss -tlnp | grep -E "23000|23001"
|
||||
```
|
||||
|
||||
## Backup automático
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /home/fusionfall/backups
|
||||
sudo chown fusionfall:fusionfall /home/fusionfall/backups
|
||||
|
||||
sudo crontab -u fusionfall -e
|
||||
```
|
||||
|
||||
Añadir:
|
||||
```cron
|
||||
0 3 * * * cp /home/fusionfall/server/data/database.db /home/fusionfall/backups/db-$(date +\%Y\%m\%d-\%H\%M).db
|
||||
5 3 * * * find /home/fusionfall/backups/ -name "db-*.db" -mtime +7 -delete
|
||||
```
|
||||
|
||||
## Conexión de clientes
|
||||
|
||||
Los jugadores deben configurar su cliente de FusionFall (Academy, parche 1013) para conectar a:
|
||||
|
||||
```
|
||||
play.consultoria-as.com:23000
|
||||
```
|
||||
|
||||
El login server redirige automáticamente al shard en el puerto 23001.
|
||||
@@ -12,7 +12,7 @@ dbsaveinterval=240
|
||||
|
||||
[shard]
|
||||
port=23001
|
||||
ip=127.0.0.1
|
||||
ip=192.168.10.84
|
||||
viewdistance=16000
|
||||
timeout=60000
|
||||
simulatemobs=true
|
||||
|
||||
34
servers/openfusion/config.vm.ini
Normal file
34
servers/openfusion/config.vm.ini
Normal file
@@ -0,0 +1,34 @@
|
||||
# OpenFusion Server Configuration (VM Production)
|
||||
# Domain: play.consultoria-as.com
|
||||
# Ubuntu 24.04 LTS - vm-fusionfall (10.0.0.30)
|
||||
verbosity=3
|
||||
sandbox=false
|
||||
|
||||
[login]
|
||||
port=23000
|
||||
acceptallwheelnames=true
|
||||
acceptallcustomnames=true
|
||||
autocreateaccounts=true
|
||||
authmethods=password
|
||||
dbsaveinterval=240
|
||||
|
||||
[shard]
|
||||
port=23001
|
||||
ip=play.consultoria-as.com
|
||||
viewdistance=16000
|
||||
timeout=60000
|
||||
simulatemobs=true
|
||||
motd=Bienvenido a Project Afterlife - FusionFall Academy
|
||||
|
||||
enabledpatches=1013
|
||||
xdtdata=xdt1013.json
|
||||
disablefirstuseflag=true
|
||||
accountlevel=1
|
||||
eventmode=0
|
||||
dbpath=data/database.db
|
||||
|
||||
[monitor]
|
||||
enabled=true
|
||||
port=8003
|
||||
listenip=127.0.0.1
|
||||
interval=5000
|
||||
@@ -1,7 +1,12 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
CONFIG="/usr/src/app/config.ini"
|
||||
SRC_CONFIG="/usr/src/app/config.ini"
|
||||
TMP_CONFIG="/tmp/config.ini"
|
||||
|
||||
# Copiar a tmp para poder editar (evita problema de bind-mount + sed -i)
|
||||
cp "$SRC_CONFIG" "$TMP_CONFIG"
|
||||
CONFIG="$TMP_CONFIG"
|
||||
|
||||
# Override shard IP (the address clients connect to after login)
|
||||
if [ -n "$SHARD_IP" ]; then
|
||||
@@ -18,4 +23,7 @@ if [ -n "$ACCOUNT_LEVEL" ]; then
|
||||
sed -i "s/^accountlevel=.*/accountlevel=$ACCOUNT_LEVEL/" "$CONFIG"
|
||||
fi
|
||||
|
||||
# Volver a escribir en el archivo original (redirección funciona con bind-mount de archivo)
|
||||
cat "$CONFIG" > "$SRC_CONFIG"
|
||||
|
||||
exec /usr/local/bin/fusion
|
||||
|
||||
28
servers/openfusion/fusionfall.service
Normal file
28
servers/openfusion/fusionfall.service
Normal file
@@ -0,0 +1,28 @@
|
||||
[Unit]
|
||||
Description=OpenFusion (FusionFall) Server
|
||||
Documentation=https://github.com/OpenFusionProject/OpenFusion
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=fusionfall
|
||||
Group=fusionfall
|
||||
WorkingDirectory=/home/fusionfall/server
|
||||
ExecStart=/home/fusionfall/server/fusion
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
StartLimitInterval=60s
|
||||
StartLimitBurst=3
|
||||
|
||||
MemoryMax=512M
|
||||
CPUQuota=100%
|
||||
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
SyslogIdentifier=fusionfall
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Reference in New Issue
Block a user