Files
project-afterlife/docker/docker-compose.dev.yml
consultoria-as eac2671529
Some checks failed
Deploy / deploy (push) Has been cancelled
feat: add HTTPS RPC proxy for MetaMask mobile support
Nginx SSL reverse proxy (port 8443) in front of Geth using Let's
Encrypt cert via Cloudflare DNS challenge. MetaMask mobile requires
HTTPS for custom RPC URLs.

Also adds AFC token icon served from bridge API static files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 01:34:12 +00:00

177 lines
4.2 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
environment:
STRAPI_URL: http://cms:1337
STRAPI_API_TOKEN: ${STRAPI_API_TOKEN:-}
NEXT_PUBLIC_STRAPI_URL: ${PUBLIC_STRAPI_URL:-http://localhost:1337}
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: ${PUBLIC_HOST:-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
volumes:
postgres_data:
minio_data:
openfusion_data:
minecraft_ftb_data:
geth_data:
afc_bridge_data:
certbot_etc:
external: true
name: docker_certbot_etc