8.6 KiB
Habland Unified Docker Setup
Complete Docker orchestration for all Habbo Hotel emulators, clients, and management tools.
🏗️ Architecture Overview
This unified Docker Compose setup manages:
Database Layer
- unified-db: MariaDB database (shared by all emulators)
- redis: Cache and session storage
- phpmyadmin: Web-based database management
Emulator Services
- arcturus-emulator: Arcturus Morningstar (modern Habbo emulator)
- havana-server: Havana v26 emulator
- kepler-server: Kepler r26/r30 emulator
- roseau-server: Modern Java-based emulator
Client Applications
- cool-ui: Modern React-based Nitro client
- nitro-react: Standard Nitro React client
- havana-web: Havana web interface
- roseau-client: Roseau client interface
CMS & Assets
- atomcms: Laravel-based content management system
- asset-server: Nitro assets (SWF, furniture, etc.)
Management Tools
- admin-panel: Unified control panel for all services
🚀 Quick Start
Prerequisites
- Docker Engine 20.10+
- Docker Compose v2.0+
- 8GB+ RAM recommended
- 20GB+ disk space
Initial Setup
-
Clone and navigate to project
cd /Users/matt/DEV/habland -
Create environment configuration
cp .env.example .env nano .env # Edit configuration values -
Generate AtomCMS application key
# You'll need to generate this after first run: docker compose exec atomcms php artisan key:generate -
Create Docker network (if not exists)
docker network create habbo-network -
Start all services
docker compose up -d
📊 Service Ports
| Service | Port | URL |
|---|---|---|
| Databases | ||
| MariaDB | 3306 | localhost:3306 |
| Redis | 6379 | localhost:6379 |
| phpMyAdmin | 8081 | http://localhost:8081 |
| Emulators | ||
| Arcturus Game | 30000 | localhost:30000 |
| Arcturus RCON | 2096 | localhost:2096 |
| Havana Game | 12321 | localhost:12321 |
| Havana MUS | 12322 | localhost:12322 |
| Havana RCON | 12323 | localhost:12323 |
| Kepler Game | 12309 | localhost:12309 |
| Kepler MUS | 12310 | localhost:12310 |
| Roseau Game | 37120 | localhost:37120 |
| Roseau RCON | 37119 | localhost:37119 |
| Clients | ||
| Cool UI | 5174 | http://localhost:5174 |
| Nitro React | 5173 | http://localhost:5173 |
| Havana Web | 8084 | http://localhost:8084 |
| Roseau Client | 8082 | http://localhost:8082 |
| CMS & Assets | ||
| AtomCMS | 80/443 | http://localhost |
| Asset Server | 8083 | http://localhost:8083 |
| Admin | ||
| Admin Panel | 3000 | http://localhost:3000 |
🎮 Managing Services
Start All Services
docker compose up -d
Start Specific Services
# Start only Arcturus and its dependencies
docker compose up -d arcturus-emulator cool-ui asset-server unified-db
# Start only Havana stack
docker compose up -d havana-server havana-web unified-db
# Start only Kepler
docker compose up -d kepler-server unified-db
# Start only Roseau
docker compose up -d roseau-server roseau-client unified-db
Stop Services
# Stop all
docker compose down
# Stop specific service
docker compose stop arcturus-emulator
# Stop and remove volumes (WARNING: deletes data)
docker compose down -v
View Logs
# All services
docker compose logs -f
# Specific service
docker compose logs -f arcturus-emulator
docker compose logs -f havana-server
docker compose logs -f unified-db
# Last 100 lines
docker compose logs --tail=100 arcturus-emulator
Restart Services
# Restart all
docker compose restart
# Restart specific service
docker compose restart arcturus-emulator
🗄️ Database Management
Database Initialization
The unified-db/init/ directory contains SQL initialization scripts that run on first startup:
unified-db/init/
├── 01-create-databases.sql # Creates all databases
├── 02-arcturus-schema.sql # Arcturus tables
├── 03-havana-schema.sql # Havana tables
├── 04-kepler-schema.sql # Kepler tables
├── 05-roseau-schema.sql # Roseau tables
└── 06-atomcms-schema.sql # AtomCMS tables
Connect to Database
# Using phpMyAdmin
open http://localhost:8081
# Using CLI
docker compose exec unified-db mysql -uroot -proot
# Using external client
Host: localhost
Port: 3306
User: root
Password: root
Backup Database
# Backup all databases
docker compose exec unified-db mysqldump -uroot -proot --all-databases > backup.sql
# Backup specific database
docker compose exec unified-db mysqldump -uroot -proot havana > havana-backup.sql
Restore Database
# Restore from backup
docker compose exec -T unified-db mysql -uroot -proot < backup.sql
# Restore specific database
docker compose exec -T unified-db mysql -uroot -proot havana < havana-backup.sql
🔧 Configuration
Emulator Configuration Files
Each emulator has its own configuration:
- Arcturus:
retro/emulator/config.docker.ini - Havana:
havana/Havana_Repo/config/ - Kepler:
kepler/Kepler-Server/config/ - Roseau:
roseau/roseau.properties,roseau/habbohotel.properties
Environment Variables
Edit .env file to configure:
# Database credentials
MYSQL_ROOT_PASSWORD=your_secure_password
# Service-specific settings
ATOMCMS_APP_NAME=MyHabboRetro
ATOMCMS_URL=https://myretro.com
# Enable/disable services
ENABLE_ARCTURUS=true
ENABLE_HAVANA=false
🐛 Troubleshooting
Service Won't Start
-
Check logs
docker compose logs [service-name] -
Check if port is already in use
lsof -i :3306 # Replace with your port -
Rebuild service
docker compose build --no-cache [service-name] docker compose up -d [service-name]
Database Connection Issues
-
Wait for database to be ready
docker compose exec unified-db mysqladmin ping -proot -
Check database exists
docker compose exec unified-db mysql -uroot -proot -e "SHOW DATABASES;" -
Verify credentials in emulator config
Client Can't Connect to Emulator
-
Check emulator is running
docker compose ps -
Verify network connectivity
docker compose exec cool-ui ping arcturus-emulator -
Check client configuration (API URLs, WebSocket URLs)
Out of Memory
-
Check resource usage
docker stats -
Increase Docker memory limit (Docker Desktop Settings)
-
Adjust Java heap sizes in
.env:JAVA_OPTS=-Xmx4G -Xms1G
🔄 Updates & Maintenance
Update Service Images
# Pull latest images
docker compose pull
# Rebuild custom images
docker compose build --no-cache
# Restart with new images
docker compose up -d
Clean Up Unused Resources
# Remove stopped containers
docker compose rm
# Remove unused images
docker image prune -a
# Remove unused volumes (WARNING: may delete data)
docker volume prune
📦 Development Workflow
Making Changes to Services
- Edit source code in respective directories
- Rebuild affected service
docker compose build [service-name] - Restart service
docker compose up -d [service-name]
Hot Reload (Development)
For services supporting hot reload, mount source as volume:
services:
cool-ui:
volumes:
- ./retro/cool-ui/src:/app/src # Enable hot reload
🔐 Security Considerations
Production Deployment
- Change default passwords in
.env - Use secrets for sensitive data
- Enable HTTPS for web services
- Restrict database access (bind to localhost only)
- Use firewall rules to limit port exposure
- Regular backups of database and volumes
Network Security
# Example: Restrict database to internal network only
services:
unified-db:
ports: [] # Remove external port exposure
📝 Notes
- All services use the shared
habbo-networkDocker network - Database is shared across all emulators (separate databases per emulator)
- Logs are persisted in named volumes
- First startup may take 5-10 minutes for database initialization
- AtomCMS requires
php artisan key:generateafter first run
🆘 Support
For issues or questions:
- Check logs:
docker compose logs -f - Verify configuration files
- Ensure all ports are available
- Check Docker daemon is running
- Verify sufficient system resources
📄 License
See individual service directories for licensing information.