Some checks failed
Deploy / deploy (push) Has been cancelled
Self-hosted NAT hole-punching relay for Dolphin emulator netplay. Enables online play for ALL GameCube and Wii games without players needing to open ports (Mario Party 4-7, MKDD, Smash Melee, etc). Multi-stage Docker build compiles only the traversal_server target. UDP ports 6262 (primary) and 6226 (NAT probe). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
244 lines
6.0 KiB
YAML
244 lines
6.0 KiB
YAML
services:
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
restart: unless-stopped
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
environment:
|
|
POSTGRES_DB: ${DATABASE_NAME:-afterlife}
|
|
POSTGRES_USER: ${DATABASE_USERNAME:-afterlife}
|
|
POSTGRES_PASSWORD: ${DATABASE_PASSWORD:-afterlife}
|
|
ports:
|
|
- "5432:5432"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${DATABASE_USERNAME:-afterlife}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
minio:
|
|
image: minio/minio:latest
|
|
restart: unless-stopped
|
|
command: server /data --console-address ":9001"
|
|
volumes:
|
|
- minio_data:/data
|
|
environment:
|
|
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-afterlife}
|
|
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-afterlife123}
|
|
ports:
|
|
- "9000:9000"
|
|
- "9001:9001"
|
|
|
|
cms:
|
|
build:
|
|
context: ../apps/cms
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
environment:
|
|
HOST: 0.0.0.0
|
|
PORT: 1337
|
|
DATABASE_HOST: postgres
|
|
DATABASE_PORT: 5432
|
|
DATABASE_NAME: ${DATABASE_NAME:-afterlife}
|
|
DATABASE_USERNAME: ${DATABASE_USERNAME:-afterlife}
|
|
DATABASE_PASSWORD: ${DATABASE_PASSWORD:-afterlife}
|
|
APP_KEYS: ${APP_KEYS}
|
|
API_TOKEN_SALT: ${API_TOKEN_SALT}
|
|
ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET}
|
|
TRANSFER_TOKEN_SALT: ${TRANSFER_TOKEN_SALT}
|
|
JWT_SECRET: ${JWT_SECRET}
|
|
ports:
|
|
- "1337:1337"
|
|
|
|
web:
|
|
build:
|
|
context: ../
|
|
dockerfile: apps/web/Dockerfile
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- cms
|
|
- afc-bridge
|
|
environment:
|
|
STRAPI_URL: http://cms:1337
|
|
STRAPI_API_TOKEN: ${STRAPI_API_TOKEN:-}
|
|
NEXT_PUBLIC_STRAPI_URL: ${PUBLIC_STRAPI_URL:-http://localhost:1337}
|
|
AFC_BRIDGE_URL: http://afc-bridge:3001
|
|
AFC_BRIDGE_SECRET: ${AFC_BRIDGE_SECRET}
|
|
MERCADOPAGO_ACCESS_TOKEN: ${MERCADOPAGO_ACCESS_TOKEN:-}
|
|
MERCADOPAGO_WEBHOOK_SECRET: ${MERCADOPAGO_WEBHOOK_SECRET:-}
|
|
MERCADOPAGO_WEBHOOK_URL: ${MERCADOPAGO_WEBHOOK_URL:-}
|
|
AFC_PRICE_MXN: ${AFC_PRICE_MXN:-15}
|
|
NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL:-http://localhost:3000}
|
|
ports:
|
|
- "3000:3000"
|
|
|
|
cloudflare-ddns:
|
|
image: favonia/cloudflare-ddns:latest
|
|
restart: unless-stopped
|
|
environment:
|
|
CF_API_TOKEN: ${CF_API_TOKEN}
|
|
DOMAINS: ${PUBLIC_HOST:-play.consultoria-as.com}
|
|
PROXIED: "false"
|
|
IP6_PROVIDER: none
|
|
|
|
openfusion:
|
|
build:
|
|
context: ../servers/openfusion
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
environment:
|
|
SHARD_IP: 192.168.10.234
|
|
MOTD: ${OPENFUSION_MOTD:-Bienvenido a Project Afterlife - FusionFall Academy}
|
|
ports:
|
|
- "23000:23000"
|
|
- "23001:23001"
|
|
volumes:
|
|
- openfusion_data:/usr/src/app/data
|
|
|
|
minecraft-ftb:
|
|
image: itzg/minecraft-server:java21
|
|
restart: unless-stopped
|
|
container_name: minecraft-ftb
|
|
environment:
|
|
EULA: "TRUE"
|
|
TYPE: FTBA
|
|
FTB_MODPACK_ID: 125
|
|
FTB_MODPACK_VERSION_ID: 100181
|
|
MEMORY: 6G
|
|
MAX_MEMORY: 6G
|
|
MOTD: "Project Afterlife - FTB Evolution"
|
|
DIFFICULTY: normal
|
|
MAX_PLAYERS: 20
|
|
VIEW_DISTANCE: 10
|
|
ENABLE_COMMAND_BLOCK: "true"
|
|
MAX_TICK_TIME: -1
|
|
ports:
|
|
- "25565:25565"
|
|
volumes:
|
|
- minecraft_ftb_data:/data
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 8G
|
|
|
|
geth:
|
|
build:
|
|
context: ../blockchain
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
environment:
|
|
ADMIN_PRIVATE_KEY: ${AFC_ADMIN_PRIVATE_KEY}
|
|
ADMIN_ADDRESS: ${AFC_ADMIN_ADDRESS}
|
|
ports:
|
|
- "8545:8545"
|
|
- "8546:8546"
|
|
volumes:
|
|
- geth_data:/data
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 1G
|
|
|
|
rpc-ssl:
|
|
image: nginx:alpine
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- geth
|
|
volumes:
|
|
- ./nginx/rpc-ssl.conf:/etc/nginx/nginx.conf:ro
|
|
- certbot_etc:/etc/letsencrypt:ro
|
|
ports:
|
|
- "8443:8443"
|
|
|
|
afc-bridge:
|
|
build:
|
|
context: ../services/afc-bridge
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- geth
|
|
environment:
|
|
GETH_RPC_URL: http://geth:8545
|
|
ADMIN_PRIVATE_KEY: ${AFC_ADMIN_PRIVATE_KEY}
|
|
BRIDGE_SECRET: ${AFC_BRIDGE_SECRET}
|
|
PORT: 3001
|
|
DB_PATH: /data/bridge.db
|
|
GAS_FUND_AMOUNT: "0.01"
|
|
ports:
|
|
- "3001:3001"
|
|
volumes:
|
|
- afc_bridge_data:/data
|
|
|
|
sm64coopdx:
|
|
build:
|
|
context: ../servers/sm64coopdx
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
container_name: sm64coopdx
|
|
environment:
|
|
SM64_PORT: ${SM64_PORT:-7777}
|
|
SM64_PLAYERS: ${SM64_PLAYERS:-16}
|
|
ports:
|
|
- "7777:7777/udp"
|
|
volumes:
|
|
- sm64_save:/server/save
|
|
- sm64_mods:/server/mods
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 2G
|
|
|
|
n64-netplay:
|
|
image: k4rian/gopher64-netplay-server:latest
|
|
container_name: n64-netplay
|
|
restart: unless-stopped
|
|
environment:
|
|
G64NS_NAME: "Afterlife N64 - Mario Party"
|
|
G64NS_PORT: 45000
|
|
G64NS_MAXGAMES: 4
|
|
G64NS_MOTD: "Bienvenido a Project Afterlife - Mario Party N64"
|
|
G64NS_LOGPATH: "gopher64-server.log"
|
|
G64NS_DISABLEBROADCAST: "false"
|
|
G64NS_ENABLEAUTH: "false"
|
|
ports:
|
|
- "45000-45004:45000-45004/tcp"
|
|
- "45000-45004:45000-45004/udp"
|
|
volumes:
|
|
- n64_netplay_data:/home/gopher64
|
|
- /etc/localtime:/etc/localtime:ro
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 128M
|
|
|
|
dolphin-traversal:
|
|
build:
|
|
context: ../servers/dolphin-traversal
|
|
dockerfile: Dockerfile
|
|
container_name: dolphin-traversal
|
|
restart: unless-stopped
|
|
ports:
|
|
- "6262:6262/udp"
|
|
- "6226:6226/udp"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 64M
|
|
|
|
volumes:
|
|
postgres_data:
|
|
minio_data:
|
|
openfusion_data:
|
|
minecraft_ftb_data:
|
|
geth_data:
|
|
afc_bridge_data:
|
|
sm64_save:
|
|
sm64_mods:
|
|
n64_netplay_data:
|
|
certbot_etc:
|
|
external: true
|
|
name: docker_certbot_etc
|