Files
Archive/docker-compose.yml

351 lines
8.0 KiB
YAML
Raw Permalink Normal View History

2025-12-09 06:52:43 +00:00
# Habland Unified Docker Compose
# Orchestrates all Habbo Hotel emulators, clients, databases, and admin tools
x-shared-environment: &shared-db-env
MYSQL_ROOT_PASSWORD: root
MYSQL_HOSTNAME: unified-db
services:
# ======================
# DATABASE SERVICES
# ======================
unified-db:
image: mariadb:latest
container_name: unified-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_ROOT_HOST: '%'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
ports:
- "3306:3306"
volumes:
- ./unified-db/init:/docker-entrypoint-initdb.d
- db_data:/var/lib/mysql
networks:
- habbo-network
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
phpmyadmin:
image: phpmyadmin:latest
container_name: phpmyadmin
restart: unless-stopped
ports:
- "8081:80"
environment:
- PMA_HOST=unified-db
- PMA_PORT=3306
- UPLOAD_LIMIT=100M
depends_on:
unified-db:
condition: service_healthy
networks:
- habbo-network
redis:
image: redis:alpine
container_name: habbo-redis
restart: unless-stopped
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- habbo-network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 3
# ======================
# EMULATOR SERVICES
# ======================
# Arcturus Morningstar (Retro)
arcturus-emulator:
build:
context: ./retro/emulator
dockerfile: Dockerfile
container_name: arcturus-emulator
restart: unless-stopped
ports:
- "30000:30000" # Game port
- "2096:2096" # RCON port
volumes:
- ./retro/emulator/config.docker.ini:/emulator/config.ini:ro
- ./retro/emulator/plugins:/emulator/plugins:ro
- arcturus_logs:/emulator/logging
networks:
- habbo-network
environment:
- JAVA_OPTS=-Xmx2G -Xms512M
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
unified-db:
condition: service_healthy
# Havana Server (v26 Emulator)
havana-server:
build:
context: ./havana/Havana_Repo
dockerfile: Dockerfile-Server
container_name: havana-server
restart: unless-stopped
ports:
- "12321:12321" # Game port
- "12322:12322" # MUS port
- "12323:12323" # RCON port
networks:
- habbo-network
environment:
MYSQL_HOSTNAME: unified-db
MYSQL_USERNAME: havana
MYSQL_PASSWORD: havana
MYSQL_DATABASE: havana
depends_on:
unified-db:
condition: service_healthy
# Kepler Server (r26/r30 Emulator)
kepler-server:
build:
context: ./kepler
dockerfile: Dockerfile
container_name: kepler-server
restart: unless-stopped
ports:
- "13321:13321" # Game port
- "13309:13309" # RCON port
- "13322:13322" # MUS port
volumes:
- ./kepler/config/config.ini:/kepler/server.ini
- kepler_logs:/kepler/log
networks:
- habbo-network
environment:
- MYSQL_HOSTNAME=unified-db
- MYSQL_PORT=3306
- MYSQL_USERNAME=kepler
- MYSQL_PASSWORD=kepler
- MYSQL_DATABASE=kepler
depends_on:
unified-db:
condition: service_healthy
# Roseau Server (Modern Java Emulator)
roseau-server:
build:
context: ./roseau
dockerfile: Dockerfile
container_name: roseau-server
restart: unless-stopped
ports:
- "37120:37120" # Game port
- "37119:37119" # RCON port
volumes:
- ./roseau/roseau.properties:/app/roseau.properties
- ./roseau/habbohotel.properties:/app/habbohotel.properties
- ./roseau/log:/app/log
networks:
- habbo-network
depends_on:
unified-db:
condition: service_healthy
# ======================
# CLIENT SERVICES
# ======================
# Cool UI (Primary Modern Client)
cool-ui:
build:
context: ./retro
dockerfile: ./cool-ui/Dockerfile.simple
container_name: cool-ui
restart: unless-stopped
ports:
- "5174:80"
environment:
- VITE_API_URL=${RETRO_API_URL:-http://localhost}
- VITE_WEBSOCKET_URL=${RETRO_WS_URL:-ws://localhost:30000}
depends_on:
- asset-server
- arcturus-emulator
networks:
- habbo-network
# Nitro React (Standard Client)
nitro-react:
build:
context: ./retro
dockerfile: ./nitro-react/Dockerfile.simple
container_name: nitro-react
restart: unless-stopped
ports:
- "5173:80"
environment:
- VITE_API_URL=${RETRO_API_URL:-http://localhost}
- VITE_WEBSOCKET_URL=${RETRO_WS_URL:-ws://localhost:30000}
depends_on:
- asset-server
- arcturus-emulator
networks:
- habbo-network
# Havana Web Client
havana-web:
build:
context: ./havana/Havana_Repo
dockerfile: Dockerfile-Web
container_name: havana-web
restart: unless-stopped
ports:
- "8084:80"
volumes:
- ./havana/Havana_Repo/tools:/havana-web/bin/tools:ro
environment:
MYSQL_HOSTNAME: unified-db
MYSQL_USERNAME: havana
MYSQL_PASSWORD: havana
MYSQL_DATABASE: havana
SITE_URL: http://localhost:8084
depends_on:
- havana-server
networks:
- habbo-network
# Roseau Client
roseau-client:
image: nginx:alpine
container_name: roseau-client
restart: unless-stopped
ports:
- "8082:80"
volumes:
- ./roseau/client/dcr0910:/usr/share/nginx/html:ro
depends_on:
- roseau-server
networks:
- habbo-network
# Kepler Client (Shockwave Client)
kepler-client:
build:
context: ./kepler/Kepler-www
dockerfile: Dockerfile
container_name: kepler-client
restart: unless-stopped
ports:
- "8085:80"
volumes:
- ./kepler/Kepler-www:/var/www/html:ro
depends_on:
- kepler-server
networks:
- habbo-network
# ======================
# ASSET & CMS SERVICES
# ======================
# Asset Server (Nitro Assets)
asset-server:
build:
context: ./retro
dockerfile: ./asset-server/Dockerfile
container_name: asset-server
restart: unless-stopped
ports:
- "8083:80"
volumes:
- ./retro/nitro-assets/nitro-assets:/usr/share/nginx/html:ro
networks:
- habbo-network
# AtomCMS (Laravel-based CMS)
atomcms:
build:
context: ./retro
dockerfile: ./cms/docker/Dockerfile
container_name: atomcms
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./retro/atomcms:/var/www/html
- atomcms_storage:/var/www/html/storage
- atomcms_cache:/var/www/html/bootstrap/cache
networks:
- habbo-network
environment:
- DB_CONNECTION=mysql
- DB_HOST=unified-db
- DB_PORT=3306
- DB_DATABASE=${ATOMCMS_DB:-arcturus}
- DB_USERNAME=${ATOMCMS_DB_USER:-root}
- DB_PASSWORD=${ATOMCMS_DB_PASS:-root}
depends_on:
unified-db:
condition: service_healthy
# ======================
# ADMIN & TOOLS
# ======================
admin-panel:
build:
context: ./admin-panel
dockerfile: Dockerfile
container_name: admin-panel
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./havana/Havana_Repo:/config/havana
- ./kepler:/config/kepler
- ./roseau:/config/roseau
- ./retro/emulator:/config/retro
networks:
- habbo-network
depends_on:
- unified-db
# ======================
# NETWORKS
# ======================
networks:
habbo-network:
driver: bridge
ipam:
config:
- subnet: 172.28.0.0/16
# ======================
# VOLUMES
# ======================
volumes:
db_data:
driver: local
redis_data:
driver: local
arcturus_logs:
driver: local
kepler_logs:
driver: local
atomcms_storage:
driver: local
atomcms_cache:
driver: local