1091 lines
24 KiB
Markdown
1091 lines
24 KiB
Markdown
|
|
# Habbo Retro - Complete Setup Guide
|
||
|
|
|
||
|
|
A fully containerized Habbo retro hotel setup with English-translated catalog, running on Docker.
|
||
|
|
|
||
|
|
## 📋 Table of Contents
|
||
|
|
|
||
|
|
- [Project Overview](#project-overview)
|
||
|
|
- [What's Included](#whats-included)
|
||
|
|
- [Database Information](#database-information)
|
||
|
|
- [Quick Start](#quick-start)
|
||
|
|
- [Service URLs](#service-urls)
|
||
|
|
- [Default Login Credentials](#default-login-credentials)
|
||
|
|
- [Docker Services](#docker-services)
|
||
|
|
- [File Structure](#file-structure)
|
||
|
|
- [Database Backup & Migration](#database-backup--migration)
|
||
|
|
- [Development](#development)
|
||
|
|
- [Troubleshooting](#troubleshooting)
|
||
|
|
- [Production Deployment](#production-deployment)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎮 Project Overview
|
||
|
|
|
||
|
|
This is a complete Habbo retro hotel environment featuring:
|
||
|
|
- **Arcturus Morningstar 3.6.1** emulator with 84 plugins
|
||
|
|
- **Dual Nitro clients** (Cool UI and Standard)
|
||
|
|
- **Complete asset library** (695MB of game assets)
|
||
|
|
- **AtomCMS** web interface
|
||
|
|
- **Fully translated catalog** (99.93% English)
|
||
|
|
- **Docker containerization** for easy deployment
|
||
|
|
|
||
|
|
### Key Statistics
|
||
|
|
- **Database Tables**: 174
|
||
|
|
- **Catalog Items**: 51,678 (99.93% English translated)
|
||
|
|
- **Catalog Pages**: 2,311 (100% English)
|
||
|
|
- **Original Language**: Spanish → English
|
||
|
|
- **Translation Date**: December 6, 2025
|
||
|
|
- **Database Size**: 51MB
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📦 What's Included
|
||
|
|
|
||
|
|
### Core Components
|
||
|
|
|
||
|
|
1. **MySQL 8.0 Database**
|
||
|
|
- 174 tables with complete schema
|
||
|
|
- 51,678 furniture items (99.93% English)
|
||
|
|
- 2,311 catalog pages (100% English)
|
||
|
|
- User accounts and settings
|
||
|
|
- Room layouts and navigator data
|
||
|
|
|
||
|
|
2. **Arcturus Morningstar Emulator**
|
||
|
|
- Version: 3.6.1
|
||
|
|
- Plugins: 84 installed
|
||
|
|
- WebSocket support enabled
|
||
|
|
- Java 21 runtime
|
||
|
|
|
||
|
|
3. **Nitro Clients**
|
||
|
|
- **Cool UI** (Primary) - Modern React-based client
|
||
|
|
- **Standard Nitro** (Alternative) - Classic Nitro experience
|
||
|
|
|
||
|
|
4. **Asset Server**
|
||
|
|
- 695MB of game assets
|
||
|
|
- Catalogue icons: 5,655 files
|
||
|
|
- Images, sounds, gamedata
|
||
|
|
- CORS enabled for cross-origin requests
|
||
|
|
|
||
|
|
5. **AtomCMS**
|
||
|
|
- Laravel-based hotel management
|
||
|
|
- User registration and management
|
||
|
|
- Admin panel
|
||
|
|
- News and articles system
|
||
|
|
|
||
|
|
### Catalog Translation Status
|
||
|
|
|
||
|
|
✅ **Completed Translations**:
|
||
|
|
- Catalog pages: 2,311/2,311 (100%)
|
||
|
|
- Catalog items: 51,643/51,678 (99.93%)
|
||
|
|
|
||
|
|
⚠️ **Remaining Items** (32 items with proper names):
|
||
|
|
- Pokémon displays (21 items - kept accented for authenticity)
|
||
|
|
- Café themed items (6 items - proper noun)
|
||
|
|
- Piñata items (3 items - proper noun)
|
||
|
|
- Misc proper nouns (2 items)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🗄️ Database Information
|
||
|
|
|
||
|
|
### Connection Details
|
||
|
|
|
||
|
|
**Docker Environment** (Port 3307):
|
||
|
|
```
|
||
|
|
Host: localhost
|
||
|
|
Port: 3307
|
||
|
|
Database: habbo_retro
|
||
|
|
Username: habbo_user
|
||
|
|
Password: habbo_password_2024
|
||
|
|
Character Set: utf8mb4
|
||
|
|
Collation: utf8mb4_unicode_ci
|
||
|
|
```
|
||
|
|
|
||
|
|
**Local MySQL** (if running non-Docker):
|
||
|
|
```
|
||
|
|
Host: localhost
|
||
|
|
Port: 3306
|
||
|
|
Database: habbo_retro
|
||
|
|
Username: habbo_user
|
||
|
|
Password: habbo_password_2024
|
||
|
|
```
|
||
|
|
|
||
|
|
### Database Structure
|
||
|
|
|
||
|
|
**Key Tables**:
|
||
|
|
```
|
||
|
|
User Management:
|
||
|
|
├── users (user accounts)
|
||
|
|
├── users_settings (preferences)
|
||
|
|
└── user_ai_settings (AI provider settings)
|
||
|
|
|
||
|
|
Catalog System:
|
||
|
|
├── catalog_items (51,678 items - English)
|
||
|
|
├── catalog_pages (2,311 pages - English)
|
||
|
|
├── catalog_pages_backup (original Spanish backup)
|
||
|
|
├── catalog_items_backup (pre-translation backup)
|
||
|
|
└── catalog_items_backup_translation (translation checkpoint)
|
||
|
|
|
||
|
|
Game Data:
|
||
|
|
├── items (furniture instances)
|
||
|
|
├── rooms (user rooms)
|
||
|
|
├── room_models (room layouts)
|
||
|
|
└── navigator_publics (public rooms)
|
||
|
|
|
||
|
|
Emulator:
|
||
|
|
├── emulator_texts (server messages - 956 entries)
|
||
|
|
├── emulator_settings (configuration)
|
||
|
|
└── permissions (user ranks)
|
||
|
|
|
||
|
|
Website/CMS:
|
||
|
|
├── website_languages (language support)
|
||
|
|
└── website_settings (CMS configuration)
|
||
|
|
```
|
||
|
|
|
||
|
|
### Quick Database Queries
|
||
|
|
|
||
|
|
```sql
|
||
|
|
-- Count all tables
|
||
|
|
SELECT COUNT(*) FROM information_schema.tables
|
||
|
|
WHERE table_schema='habbo_retro';
|
||
|
|
-- Expected: 174
|
||
|
|
|
||
|
|
-- Count catalog items
|
||
|
|
SELECT COUNT(*) FROM catalog_items;
|
||
|
|
-- Expected: 51,678
|
||
|
|
|
||
|
|
-- Count catalog pages
|
||
|
|
SELECT COUNT(*) FROM catalog_pages;
|
||
|
|
-- Expected: 2,311
|
||
|
|
|
||
|
|
-- View user count
|
||
|
|
SELECT COUNT(*) FROM users;
|
||
|
|
|
||
|
|
-- Check catalog translation status
|
||
|
|
SELECT COUNT(*) as translated
|
||
|
|
FROM catalog_items
|
||
|
|
WHERE catalog_name NOT REGEXP '[áéíóúñÁÉÍÓÚÑ¿¡]';
|
||
|
|
-- Expected: 51,643 (99.93%)
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚀 Quick Start
|
||
|
|
|
||
|
|
### Prerequisites
|
||
|
|
|
||
|
|
- **Docker Desktop** 20.10+ ([Download](https://www.docker.com/products/docker-desktop))
|
||
|
|
- **Docker Compose** 2.0+
|
||
|
|
- **4GB RAM** minimum (8GB recommended)
|
||
|
|
- **10GB free disk space**
|
||
|
|
|
||
|
|
### Option 1: Using Helper Scripts (Recommended)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Navigate to project directory
|
||
|
|
cd /Users/matt/DEV/retro
|
||
|
|
|
||
|
|
# Start all services
|
||
|
|
./docker-start.sh
|
||
|
|
|
||
|
|
# View logs
|
||
|
|
./docker-logs.sh
|
||
|
|
|
||
|
|
# Stop all services
|
||
|
|
./docker-stop.sh
|
||
|
|
|
||
|
|
# Create database backup
|
||
|
|
./docker-backup.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
### Option 2: Using Docker Compose Directly
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Build all containers
|
||
|
|
docker-compose build
|
||
|
|
|
||
|
|
# Start all services
|
||
|
|
docker-compose up -d
|
||
|
|
|
||
|
|
# Check status
|
||
|
|
docker-compose ps
|
||
|
|
|
||
|
|
# View logs
|
||
|
|
docker-compose logs -f
|
||
|
|
|
||
|
|
# Stop all services
|
||
|
|
docker-compose down
|
||
|
|
```
|
||
|
|
|
||
|
|
### First Time Setup
|
||
|
|
|
||
|
|
1. **Start Services**:
|
||
|
|
```bash
|
||
|
|
./docker-start.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
2. **Wait for Services** (10-15 seconds):
|
||
|
|
- MySQL: Initializing database
|
||
|
|
- Emulator: Loading plugins
|
||
|
|
- Clients: Starting nginx
|
||
|
|
|
||
|
|
3. **Verify All Services Running**:
|
||
|
|
```bash
|
||
|
|
docker-compose ps
|
||
|
|
```
|
||
|
|
|
||
|
|
All services should show "Up" or "healthy" status.
|
||
|
|
|
||
|
|
4. **Access the Hotel**:
|
||
|
|
- Open browser: http://localhost:5174 (Cool UI)
|
||
|
|
- Or: http://localhost:5173 (Nitro React)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🌐 Service URLs
|
||
|
|
|
||
|
|
### Client Access
|
||
|
|
| Service | URL | Description |
|
||
|
|
|---------|-----|-------------|
|
||
|
|
| **Cool UI** | http://localhost:5174 | Primary Nitro client (recommended) |
|
||
|
|
| **Nitro React** | http://localhost:5173 | Alternative Nitro client |
|
||
|
|
| **Asset Server** | http://localhost:8081 | Game assets and resources |
|
||
|
|
| **CMS** | http://localhost | Web interface (needs setup) |
|
||
|
|
|
||
|
|
### Server Connections
|
||
|
|
| Service | Host | Port | Description |
|
||
|
|
|---------|------|------|-------------|
|
||
|
|
| **MySQL** | localhost | 3307 | Database server |
|
||
|
|
| **Emulator (Game)** | localhost | 30000 | Game server connection |
|
||
|
|
| **Emulator (WebSocket)** | localhost | 2096 | WebSocket connection |
|
||
|
|
|
||
|
|
### Useful Endpoints
|
||
|
|
|
||
|
|
**Asset Server**:
|
||
|
|
- Gamedata: http://localhost:8081/gamedata/
|
||
|
|
- Catalog Icons: http://localhost:8081/c_images/catalogue/
|
||
|
|
- UI Texts: http://localhost:8081/gamedata/UITexts.json
|
||
|
|
- Renderer Config: http://localhost:8081/gamedata/renderer-config.json
|
||
|
|
|
||
|
|
**Health Checks**:
|
||
|
|
- Cool UI: http://localhost:5174/health
|
||
|
|
- Nitro React: http://localhost:5173/health
|
||
|
|
- Asset Server: http://localhost:8081/health
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔐 Default Login Credentials
|
||
|
|
|
||
|
|
### MySQL Database
|
||
|
|
|
||
|
|
**Root User**:
|
||
|
|
```
|
||
|
|
Username: root
|
||
|
|
Password: root_password_2024
|
||
|
|
```
|
||
|
|
|
||
|
|
**Application User**:
|
||
|
|
```
|
||
|
|
Username: habbo_user
|
||
|
|
Password: habbo_password_2024
|
||
|
|
Database: habbo_retro
|
||
|
|
```
|
||
|
|
|
||
|
|
### Hotel Users
|
||
|
|
|
||
|
|
Check your database for existing users:
|
||
|
|
```sql
|
||
|
|
SELECT id, username, mail, rank
|
||
|
|
FROM users
|
||
|
|
ORDER BY id
|
||
|
|
LIMIT 10;
|
||
|
|
```
|
||
|
|
|
||
|
|
**Note**: If no users exist, register through the CMS or create one directly in the database.
|
||
|
|
|
||
|
|
### AtomCMS Admin
|
||
|
|
|
||
|
|
**Default Laravel Admin** (if created):
|
||
|
|
```
|
||
|
|
Email: admin@localhost
|
||
|
|
Password: (check your local installation)
|
||
|
|
```
|
||
|
|
|
||
|
|
**Note**: AtomCMS requires local setup. See [Development](#development) section.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🐳 Docker Services
|
||
|
|
|
||
|
|
### Service Details
|
||
|
|
|
||
|
|
#### 1. MySQL Database
|
||
|
|
- **Container**: habbo-mysql
|
||
|
|
- **Image**: mysql:8.0
|
||
|
|
- **Port**: 3307 → 3306
|
||
|
|
- **Memory**: ~200MB
|
||
|
|
- **Data Volume**: habbo-retro_mysql_data
|
||
|
|
- **Config**: mysql/conf.d/custom.cnf
|
||
|
|
|
||
|
|
**Features**:
|
||
|
|
- UTF8MB4 character encoding
|
||
|
|
- 512MB InnoDB buffer pool
|
||
|
|
- Binary logging enabled
|
||
|
|
- Slow query logging enabled
|
||
|
|
|
||
|
|
#### 2. Arcturus Emulator
|
||
|
|
- **Container**: habbo-emulator
|
||
|
|
- **Image**: eclipse-temurin:21-jre
|
||
|
|
- **Ports**: 30000 (game), 2096 (WebSocket)
|
||
|
|
- **Memory**: ~400MB
|
||
|
|
- **Heap Size**: 512MB - 2GB
|
||
|
|
- **Plugins**: 84
|
||
|
|
|
||
|
|
**Configuration**: emulator/config.docker.ini
|
||
|
|
|
||
|
|
#### 3. Asset Server
|
||
|
|
- **Container**: habbo-asset-server
|
||
|
|
- **Image**: nginx:alpine
|
||
|
|
- **Port**: 8081 → 80
|
||
|
|
- **Memory**: ~10MB
|
||
|
|
- **Assets**: 695MB
|
||
|
|
|
||
|
|
**Features**:
|
||
|
|
- CORS enabled (wildcard)
|
||
|
|
- 30-day caching
|
||
|
|
- Gzip compression
|
||
|
|
|
||
|
|
#### 4. Cool UI (Primary Client)
|
||
|
|
- **Container**: habbo-cool-ui
|
||
|
|
- **Image**: nginx:alpine
|
||
|
|
- **Port**: 5174 → 80
|
||
|
|
- **Memory**: ~5MB
|
||
|
|
- **Bundle Size**: ~3MB
|
||
|
|
|
||
|
|
#### 5. Nitro React (Alternative Client)
|
||
|
|
- **Container**: habbo-nitro-react
|
||
|
|
- **Image**: nginx:alpine
|
||
|
|
- **Port**: 5173 → 80
|
||
|
|
- **Memory**: ~5MB
|
||
|
|
|
||
|
|
#### 6. AtomCMS
|
||
|
|
- **Container**: habbo-cms
|
||
|
|
- **Image**: php:8.4-fpm + nginx
|
||
|
|
- **Ports**: 80, 443
|
||
|
|
- **Memory**: ~150MB
|
||
|
|
- **Status**: ⚠️ Requires local composer install
|
||
|
|
|
||
|
|
### Resource Usage Summary
|
||
|
|
|
||
|
|
**Total Resources**:
|
||
|
|
- RAM: ~770MB
|
||
|
|
- Disk: ~2.5GB (images + volumes)
|
||
|
|
- CPU: Minimal (<10% idle)
|
||
|
|
|
||
|
|
**Startup Time**:
|
||
|
|
- Cold start: ~12 seconds
|
||
|
|
- Warm start: ~5 seconds
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📁 File Structure
|
||
|
|
|
||
|
|
```
|
||
|
|
/Users/matt/DEV/retro/
|
||
|
|
│
|
||
|
|
├── README.md # This file
|
||
|
|
├── docker-compose.yml # Service orchestration
|
||
|
|
├── .env # Environment variables
|
||
|
|
├── .env.docker # Environment template
|
||
|
|
│
|
||
|
|
├── docker-*.sh # Helper scripts
|
||
|
|
│ ├── docker-start.sh # Start all services
|
||
|
|
│ ├── docker-stop.sh # Stop all services
|
||
|
|
│ ├── docker-logs.sh # View service logs
|
||
|
|
│ ├── docker-backup.sh # Backup database
|
||
|
|
│ └── verify-docker-setup.sh # Verify installation
|
||
|
|
│
|
||
|
|
├── database_backup/ # Database backups
|
||
|
|
│ ├── habbo_retro_complete_20251206_155812.sql (29 MB)
|
||
|
|
│ ├── habbo_retro_complete_20251206_155812.sql.gz (3.3 MB)
|
||
|
|
│ └── MIGRATION_GUIDE.txt # Migration instructions
|
||
|
|
│
|
||
|
|
├── mysql/ # MySQL configuration
|
||
|
|
│ ├── Dockerfile
|
||
|
|
│ ├── conf.d/
|
||
|
|
│ │ └── custom.cnf # Performance tuning
|
||
|
|
│ └── init/
|
||
|
|
│ └── habbo_retro_*.sql # Database dump
|
||
|
|
│
|
||
|
|
├── emulator/ # Arcturus Emulator
|
||
|
|
│ ├── Dockerfile
|
||
|
|
│ ├── config.ini # Local config
|
||
|
|
│ ├── config.docker.ini # Docker config
|
||
|
|
│ ├── Habbo-3.6.0-jar-with-dependencies.jar
|
||
|
|
│ └── plugins/ # 84 plugins
|
||
|
|
│
|
||
|
|
├── Nitro-Cool-UI/ # Cool UI client
|
||
|
|
│ ├── dist/ # Built files
|
||
|
|
│ ├── src/
|
||
|
|
│ └── public/
|
||
|
|
│ └── ui-config.json # Client configuration
|
||
|
|
│
|
||
|
|
├── nitro-react/nitro-react/ # Standard Nitro client
|
||
|
|
│ ├── dist/ # Built files
|
||
|
|
│ └── public/
|
||
|
|
│
|
||
|
|
├── nitro-assets/nitro-assets/ # Game assets (695 MB)
|
||
|
|
│ ├── c_images/ # Catalogue icons (5,655 files)
|
||
|
|
│ ├── gamedata/ # JSON configs
|
||
|
|
│ ├── images/ # UI images
|
||
|
|
│ ├── sounds/ # Audio files
|
||
|
|
│ └── bundled/ # Compiled assets
|
||
|
|
│
|
||
|
|
├── atomcms/ # AtomCMS
|
||
|
|
│ ├── app/
|
||
|
|
│ ├── public/
|
||
|
|
│ ├── .env # CMS configuration
|
||
|
|
│ └── vendor/ # PHP dependencies
|
||
|
|
│
|
||
|
|
├── cool-ui/ # Cool UI Docker config
|
||
|
|
│ ├── Dockerfile.simple
|
||
|
|
│ └── nginx.conf
|
||
|
|
│
|
||
|
|
├── nitro-react/ # Nitro React Docker config
|
||
|
|
│ ├── Dockerfile.simple
|
||
|
|
│ └── nginx.conf
|
||
|
|
│
|
||
|
|
├── asset-server/ # Asset server config
|
||
|
|
│ ├── Dockerfile
|
||
|
|
│ └── nginx.conf
|
||
|
|
│
|
||
|
|
├── cms/docker/ # CMS Docker config
|
||
|
|
│ ├── Dockerfile
|
||
|
|
│ ├── nginx-site.conf
|
||
|
|
│ └── supervisord.conf
|
||
|
|
│
|
||
|
|
└── Documentation/
|
||
|
|
├── DOCKER_README.md # Docker deployment guide
|
||
|
|
├── DOCKER_TEST_REPORT.md # Test results
|
||
|
|
├── DOCKER_FIXES_SUMMARY.md # Applied fixes
|
||
|
|
├── DOCKER_DEPLOYMENT_PLAN.md # Original plan
|
||
|
|
└── DOCKER_DEPLOYMENT_SUMMARY.md # Implementation details
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 💾 Database Backup & Migration
|
||
|
|
|
||
|
|
### Location of Database Dump
|
||
|
|
|
||
|
|
The complete database backup is located at:
|
||
|
|
```
|
||
|
|
/Users/matt/DEV/retro/database_backup/
|
||
|
|
```
|
||
|
|
|
||
|
|
**Files**:
|
||
|
|
1. **habbo_retro_complete_20251206_155812.sql** (29 MB)
|
||
|
|
- Full SQL dump with all data
|
||
|
|
- Includes all 174 tables
|
||
|
|
- Complete INSERT statements
|
||
|
|
- Stored procedures and triggers
|
||
|
|
|
||
|
|
2. **habbo_retro_complete_20251206_155812.sql.gz** (3.3 MB)
|
||
|
|
- Compressed version for transfer
|
||
|
|
- Recommended for server migration
|
||
|
|
|
||
|
|
3. **MIGRATION_GUIDE.txt**
|
||
|
|
- Step-by-step migration instructions
|
||
|
|
- Server setup commands
|
||
|
|
- Troubleshooting tips
|
||
|
|
|
||
|
|
### Database Backup Details
|
||
|
|
|
||
|
|
**Backup Information**:
|
||
|
|
- **Created**: December 6, 2025 15:58:12
|
||
|
|
- **MySQL Version**: 9.5.0 (export server)
|
||
|
|
- **Compatible With**: MySQL 5.7+, MariaDB 10.2+
|
||
|
|
- **Character Set**: utf8mb4
|
||
|
|
- **Collation**: utf8mb4_unicode_ci
|
||
|
|
|
||
|
|
**Contents**:
|
||
|
|
- ✅ All table structures (CREATE TABLE)
|
||
|
|
- ✅ All table data (INSERT statements)
|
||
|
|
- ✅ Stored procedures and functions
|
||
|
|
- ✅ Triggers
|
||
|
|
- ✅ Complete column names in inserts
|
||
|
|
- ✅ Drop table statements (clean import)
|
||
|
|
|
||
|
|
### Creating New Backups
|
||
|
|
|
||
|
|
**Using Helper Script**:
|
||
|
|
```bash
|
||
|
|
./docker-backup.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
Backups are saved to: `./docker-backups/habbo_retro_YYYYMMDD_HHMMSS.sql.gz`
|
||
|
|
|
||
|
|
**Manual Backup**:
|
||
|
|
```bash
|
||
|
|
docker-compose exec -T mysql mysqldump \
|
||
|
|
-u habbo_user \
|
||
|
|
-phabbo_password_2024 \
|
||
|
|
habbo_retro \
|
||
|
|
--routines \
|
||
|
|
--triggers \
|
||
|
|
--single-transaction \
|
||
|
|
> backup_$(date +%Y%m%d).sql
|
||
|
|
|
||
|
|
# Compress
|
||
|
|
gzip backup_$(date +%Y%m%d).sql
|
||
|
|
```
|
||
|
|
|
||
|
|
### Restoring from Backup
|
||
|
|
|
||
|
|
**Restore to Docker MySQL**:
|
||
|
|
```bash
|
||
|
|
# Method 1: Using compressed backup
|
||
|
|
gunzip habbo_retro_complete_20251206_155812.sql.gz
|
||
|
|
docker-compose exec -T mysql mysql \
|
||
|
|
-u habbo_user \
|
||
|
|
-phabbo_password_2024 \
|
||
|
|
habbo_retro < habbo_retro_complete_20251206_155812.sql
|
||
|
|
|
||
|
|
# Method 2: Using uncompressed
|
||
|
|
docker-compose exec -T mysql mysql \
|
||
|
|
-u habbo_user \
|
||
|
|
-phabbo_password_2024 \
|
||
|
|
habbo_retro < database_backup/habbo_retro_complete_20251206_155812.sql
|
||
|
|
```
|
||
|
|
|
||
|
|
**Restore to Local MySQL**:
|
||
|
|
```bash
|
||
|
|
mysql -u habbo_user -phabbo_password_2024 habbo_retro \
|
||
|
|
< database_backup/habbo_retro_complete_20251206_155812.sql
|
||
|
|
```
|
||
|
|
|
||
|
|
### Migrating to New Server
|
||
|
|
|
||
|
|
**See**: `database_backup/MIGRATION_GUIDE.txt` for detailed instructions.
|
||
|
|
|
||
|
|
**Quick Migration**:
|
||
|
|
1. Upload compressed backup to new server
|
||
|
|
2. Extract: `gunzip habbo_retro_complete_20251206_155812.sql.gz`
|
||
|
|
3. Create database and user
|
||
|
|
4. Import: `mysql -u user -p database < backup.sql`
|
||
|
|
5. Update configuration files
|
||
|
|
6. Start services
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔧 Development
|
||
|
|
|
||
|
|
### Running Services Locally (Non-Docker)
|
||
|
|
|
||
|
|
#### MySQL Database
|
||
|
|
```bash
|
||
|
|
# Start local MySQL
|
||
|
|
mysql.server start # macOS
|
||
|
|
# or
|
||
|
|
sudo systemctl start mysql # Linux
|
||
|
|
|
||
|
|
# Connect
|
||
|
|
mysql -u habbo_user -phabbo_password_2024 habbo_retro
|
||
|
|
```
|
||
|
|
|
||
|
|
#### Arcturus Emulator
|
||
|
|
```bash
|
||
|
|
cd emulator
|
||
|
|
java -Xmx2G -Xms512M -jar Habbo-3.6.0-jar-with-dependencies.jar
|
||
|
|
```
|
||
|
|
|
||
|
|
#### Cool UI
|
||
|
|
```bash
|
||
|
|
cd Nitro-Cool-UI
|
||
|
|
npm install
|
||
|
|
npm run dev
|
||
|
|
# Access: http://localhost:5174
|
||
|
|
```
|
||
|
|
|
||
|
|
#### Nitro React
|
||
|
|
```bash
|
||
|
|
cd nitro-react/nitro-react
|
||
|
|
npm install
|
||
|
|
npm run dev
|
||
|
|
# Access: http://localhost:5173
|
||
|
|
```
|
||
|
|
|
||
|
|
#### Asset Server
|
||
|
|
```bash
|
||
|
|
cd nitro-assets/nitro-assets
|
||
|
|
npx http-server -p 8080 --cors='*'
|
||
|
|
# Access: http://localhost:8080
|
||
|
|
```
|
||
|
|
|
||
|
|
#### AtomCMS
|
||
|
|
```bash
|
||
|
|
cd atomcms
|
||
|
|
|
||
|
|
# First time setup
|
||
|
|
composer install
|
||
|
|
php artisan key:generate
|
||
|
|
php artisan migrate
|
||
|
|
|
||
|
|
# Start server
|
||
|
|
php artisan serve
|
||
|
|
# Access: http://localhost:8000
|
||
|
|
```
|
||
|
|
|
||
|
|
### Configuration Files
|
||
|
|
|
||
|
|
**Emulator** (`emulator/config.ini`):
|
||
|
|
```ini
|
||
|
|
[database]
|
||
|
|
db.hostname=localhost # Use "mysql" for Docker
|
||
|
|
db.port=3306
|
||
|
|
db.username=habbo_user
|
||
|
|
db.password=habbo_password_2024
|
||
|
|
db.database=habbo_retro
|
||
|
|
|
||
|
|
[game]
|
||
|
|
game.host=0.0.0.0
|
||
|
|
game.port=30000
|
||
|
|
|
||
|
|
[websockets]
|
||
|
|
ws.nitro.enabled=true
|
||
|
|
ws.nitro.port=2096
|
||
|
|
```
|
||
|
|
|
||
|
|
**Cool UI** (`Nitro-Cool-UI/public/ui-config.json`):
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"camera.url": "http://localhost/swf/usercontent/camera",
|
||
|
|
"url.prefix": "http://localhost"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**AtomCMS** (`atomcms/.env`):
|
||
|
|
```env
|
||
|
|
DB_CONNECTION=mysql
|
||
|
|
DB_HOST=localhost # Use "mysql" for Docker
|
||
|
|
DB_PORT=3306 # Use 3307 for Docker
|
||
|
|
DB_DATABASE=habbo_retro
|
||
|
|
DB_USERNAME=habbo_user
|
||
|
|
DB_PASSWORD=habbo_password_2024
|
||
|
|
```
|
||
|
|
|
||
|
|
### Building Docker Images
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Build specific service
|
||
|
|
docker-compose build mysql
|
||
|
|
docker-compose build emulator
|
||
|
|
docker-compose build cool-ui
|
||
|
|
|
||
|
|
# Build all services
|
||
|
|
docker-compose build
|
||
|
|
|
||
|
|
# Build without cache
|
||
|
|
docker-compose build --no-cache
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔍 Troubleshooting
|
||
|
|
|
||
|
|
### Services Won't Start
|
||
|
|
|
||
|
|
**Check Docker is running**:
|
||
|
|
```bash
|
||
|
|
docker info
|
||
|
|
```
|
||
|
|
|
||
|
|
**Check port conflicts**:
|
||
|
|
```bash
|
||
|
|
lsof -i :3307 # MySQL
|
||
|
|
lsof -i :5174 # Cool UI
|
||
|
|
lsof -i :5173 # Nitro React
|
||
|
|
lsof -i :8081 # Assets
|
||
|
|
lsof -i :30000 # Emulator
|
||
|
|
```
|
||
|
|
|
||
|
|
**View service logs**:
|
||
|
|
```bash
|
||
|
|
./docker-logs.sh [service-name]
|
||
|
|
# or
|
||
|
|
docker-compose logs mysql
|
||
|
|
docker-compose logs emulator
|
||
|
|
docker-compose logs cool-ui
|
||
|
|
```
|
||
|
|
|
||
|
|
### Emulator Can't Connect to Database
|
||
|
|
|
||
|
|
**Check MySQL is healthy**:
|
||
|
|
```bash
|
||
|
|
docker-compose ps mysql
|
||
|
|
# Should show "healthy"
|
||
|
|
```
|
||
|
|
|
||
|
|
**Test database connection**:
|
||
|
|
```bash
|
||
|
|
docker-compose exec mysql mysql -u habbo_user -phabbo_password_2024 -e "SELECT 1"
|
||
|
|
```
|
||
|
|
|
||
|
|
**Verify emulator config**:
|
||
|
|
```bash
|
||
|
|
docker-compose exec emulator cat /emulator/config.ini | grep db.hostname
|
||
|
|
# Should show: db.hostname=mysql
|
||
|
|
```
|
||
|
|
|
||
|
|
### Client Shows Blank Page
|
||
|
|
|
||
|
|
**Check asset server**:
|
||
|
|
```bash
|
||
|
|
curl http://localhost:8081/gamedata/UITexts.json
|
||
|
|
# Should return JSON
|
||
|
|
```
|
||
|
|
|
||
|
|
**Check browser console** for errors
|
||
|
|
|
||
|
|
**Verify CORS**:
|
||
|
|
```bash
|
||
|
|
curl -I -H "Origin: http://localhost:5174" \
|
||
|
|
http://localhost:8081/gamedata/UITexts.json | grep Access-Control
|
||
|
|
# Should show: Access-Control-Allow-Origin: *
|
||
|
|
```
|
||
|
|
|
||
|
|
### Database Import Fails
|
||
|
|
|
||
|
|
**Check character encoding**:
|
||
|
|
```sql
|
||
|
|
SHOW VARIABLES LIKE 'character_set%';
|
||
|
|
# Should all be utf8mb4
|
||
|
|
```
|
||
|
|
|
||
|
|
**Import with specific encoding**:
|
||
|
|
```bash
|
||
|
|
docker-compose exec -T mysql mysql \
|
||
|
|
-u habbo_user \
|
||
|
|
-phabbo_password_2024 \
|
||
|
|
--default-character-set=utf8mb4 \
|
||
|
|
habbo_retro < backup.sql
|
||
|
|
```
|
||
|
|
|
||
|
|
### CMS Shows 500 Error
|
||
|
|
|
||
|
|
**Check Laravel logs**:
|
||
|
|
```bash
|
||
|
|
docker-compose exec cms tail -f /var/www/html/storage/logs/laravel.log
|
||
|
|
```
|
||
|
|
|
||
|
|
**Clear Laravel cache**:
|
||
|
|
```bash
|
||
|
|
docker-compose exec cms php artisan cache:clear
|
||
|
|
docker-compose exec cms php artisan config:clear
|
||
|
|
docker-compose exec cms php artisan view:clear
|
||
|
|
```
|
||
|
|
|
||
|
|
**Fix: Install composer dependencies locally**:
|
||
|
|
```bash
|
||
|
|
cd atomcms
|
||
|
|
composer install --no-dev --optimize-autoloader
|
||
|
|
# Then rebuild: docker-compose build cms
|
||
|
|
```
|
||
|
|
|
||
|
|
### Port Already in Use
|
||
|
|
|
||
|
|
**Change port mapping** in `docker-compose.yml`:
|
||
|
|
```yaml
|
||
|
|
ports:
|
||
|
|
- "5175:80" # Changed from 5174:80
|
||
|
|
```
|
||
|
|
|
||
|
|
### Reset Everything
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Stop all services
|
||
|
|
docker-compose down
|
||
|
|
|
||
|
|
# Remove all volumes (⚠️ DELETES ALL DATA)
|
||
|
|
docker-compose down -v
|
||
|
|
|
||
|
|
# Remove all images
|
||
|
|
docker-compose down --rmi all
|
||
|
|
|
||
|
|
# Start fresh
|
||
|
|
docker-compose up -d
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚀 Production Deployment
|
||
|
|
|
||
|
|
### Pre-Deployment Checklist
|
||
|
|
|
||
|
|
- [ ] Change all default passwords in `.env`
|
||
|
|
- [ ] Set `APP_DEBUG=false` in CMS `.env`
|
||
|
|
- [ ] Generate new `APP_KEY` for Laravel
|
||
|
|
- [ ] Configure SSL certificates
|
||
|
|
- [ ] Set up automated database backups
|
||
|
|
- [ ] Configure firewall rules
|
||
|
|
- [ ] Set up monitoring and alerting
|
||
|
|
- [ ] Test backup restoration procedure
|
||
|
|
- [ ] Document your custom configuration
|
||
|
|
- [ ] Create admin accounts
|
||
|
|
- [ ] Test all services under load
|
||
|
|
|
||
|
|
### Security Recommendations
|
||
|
|
|
||
|
|
**1. Change Default Passwords**:
|
||
|
|
```env
|
||
|
|
# .env
|
||
|
|
MYSQL_ROOT_PASSWORD=<strong-random-password>
|
||
|
|
MYSQL_PASSWORD=<strong-random-password>
|
||
|
|
APP_KEY=base64:<generated-key>
|
||
|
|
```
|
||
|
|
|
||
|
|
**2. Restrict Database Access**:
|
||
|
|
```yaml
|
||
|
|
# docker-compose.yml
|
||
|
|
mysql:
|
||
|
|
environment:
|
||
|
|
- MYSQL_ROOT_HOST=127.0.0.1 # Restrict to localhost
|
||
|
|
```
|
||
|
|
|
||
|
|
**3. Enable SSL for CMS**:
|
||
|
|
- Configure nginx SSL certificates
|
||
|
|
- Use Let's Encrypt for free SSL
|
||
|
|
- Redirect HTTP to HTTPS
|
||
|
|
|
||
|
|
**4. Firewall Configuration**:
|
||
|
|
```bash
|
||
|
|
# Only expose necessary ports
|
||
|
|
# Block: 3307 (MySQL - internal only)
|
||
|
|
# Allow: 80, 443 (CMS)
|
||
|
|
# Allow: 30000, 2096 (Emulator)
|
||
|
|
# Allow: 5173, 5174 (Clients)
|
||
|
|
```
|
||
|
|
|
||
|
|
**5. Regular Backups**:
|
||
|
|
```bash
|
||
|
|
# Add to crontab
|
||
|
|
0 2 * * * cd /path/to/retro && ./docker-backup.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
### Performance Optimization
|
||
|
|
|
||
|
|
**MySQL Configuration** (`mysql/conf.d/custom.cnf`):
|
||
|
|
```ini
|
||
|
|
innodb_buffer_pool_size = 1G # Increase for production
|
||
|
|
max_connections = 500
|
||
|
|
```
|
||
|
|
|
||
|
|
**Docker Resource Limits** (`docker-compose.yml`):
|
||
|
|
```yaml
|
||
|
|
services:
|
||
|
|
mysql:
|
||
|
|
deploy:
|
||
|
|
resources:
|
||
|
|
limits:
|
||
|
|
cpus: '2'
|
||
|
|
memory: 2G
|
||
|
|
reservations:
|
||
|
|
memory: 1G
|
||
|
|
```
|
||
|
|
|
||
|
|
### Monitoring
|
||
|
|
|
||
|
|
**Health Checks**:
|
||
|
|
```bash
|
||
|
|
# All services
|
||
|
|
docker-compose ps
|
||
|
|
|
||
|
|
# Specific health check
|
||
|
|
curl http://localhost:5174/health
|
||
|
|
```
|
||
|
|
|
||
|
|
**Resource Usage**:
|
||
|
|
```bash
|
||
|
|
docker stats
|
||
|
|
```
|
||
|
|
|
||
|
|
**Logs**:
|
||
|
|
```bash
|
||
|
|
# Aggregate logs
|
||
|
|
docker-compose logs -f > hotel.log
|
||
|
|
|
||
|
|
# Service-specific
|
||
|
|
docker-compose logs -f emulator > emulator.log
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 Project Statistics
|
||
|
|
|
||
|
|
### Translation Achievement
|
||
|
|
- **Total Items**: 51,678
|
||
|
|
- **Translated**: 51,643 (99.93%)
|
||
|
|
- **Original Language**: Spanish
|
||
|
|
- **Target Language**: English
|
||
|
|
- **Translation Method**:
|
||
|
|
- Automated: 1,493 items (MyMemory API)
|
||
|
|
- Manual (Gemini): 3,655 items (6 batches)
|
||
|
|
- Final round: 40 items
|
||
|
|
- Remaining: 32 proper nouns with accents
|
||
|
|
|
||
|
|
### Database Metrics
|
||
|
|
- **Tables**: 174
|
||
|
|
- **Size (Uncompressed)**: 51 MB
|
||
|
|
- **Size (SQL Dump)**: 29 MB
|
||
|
|
- **Size (Compressed)**: 3.3 MB
|
||
|
|
- **Character Set**: UTF8MB4
|
||
|
|
- **Export Compatibility**: MySQL 5.7+, MariaDB 10.2+
|
||
|
|
|
||
|
|
### Docker Deployment
|
||
|
|
- **Success Rate**: 83% (5/6 services operational)
|
||
|
|
- **Build Time**: 2.8 minutes (all services)
|
||
|
|
- **Startup Time**: 12 seconds
|
||
|
|
- **Total Memory**: 770 MB
|
||
|
|
- **Total Disk**: ~2.5 GB
|
||
|
|
|
||
|
|
### Asset Library
|
||
|
|
- **Total Size**: 695 MB
|
||
|
|
- **Catalogue Icons**: 5,655 files
|
||
|
|
- **Achievement Images**: 2,080 files
|
||
|
|
- **Sound Files**: 806 samples
|
||
|
|
- **Badge Parts**: 242 files
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📞 Support & Resources
|
||
|
|
|
||
|
|
### Documentation
|
||
|
|
- `DOCKER_README.md` - Docker deployment guide
|
||
|
|
- `DOCKER_TEST_REPORT.md` - Testing documentation
|
||
|
|
- `DOCKER_FIXES_SUMMARY.md` - Applied fixes
|
||
|
|
- `database_backup/MIGRATION_GUIDE.txt` - Database migration
|
||
|
|
|
||
|
|
### Useful Commands Reference
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Start services
|
||
|
|
docker-compose up -d
|
||
|
|
|
||
|
|
# Stop services
|
||
|
|
docker-compose down
|
||
|
|
|
||
|
|
# View logs
|
||
|
|
docker-compose logs -f [service]
|
||
|
|
|
||
|
|
# Restart service
|
||
|
|
docker-compose restart [service]
|
||
|
|
|
||
|
|
# Execute command in container
|
||
|
|
docker-compose exec [service] [command]
|
||
|
|
|
||
|
|
# View running processes
|
||
|
|
docker-compose ps
|
||
|
|
|
||
|
|
# View resource usage
|
||
|
|
docker stats
|
||
|
|
|
||
|
|
# Create backup
|
||
|
|
./docker-backup.sh
|
||
|
|
|
||
|
|
# Verify setup
|
||
|
|
./verify-docker-setup.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
### Common Operations
|
||
|
|
|
||
|
|
**Access MySQL**:
|
||
|
|
```bash
|
||
|
|
docker-compose exec mysql mysql -u habbo_user -phabbo_password_2024 habbo_retro
|
||
|
|
```
|
||
|
|
|
||
|
|
**View Emulator Console**:
|
||
|
|
```bash
|
||
|
|
docker-compose logs -f emulator
|
||
|
|
```
|
||
|
|
|
||
|
|
**Restart Services After Config Change**:
|
||
|
|
```bash
|
||
|
|
docker-compose restart emulator
|
||
|
|
docker-compose restart cool-ui
|
||
|
|
```
|
||
|
|
|
||
|
|
**Update Docker Images**:
|
||
|
|
```bash
|
||
|
|
docker-compose pull
|
||
|
|
docker-compose up -d
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎯 Quick Reference
|
||
|
|
|
||
|
|
### Service Status
|
||
|
|
```bash
|
||
|
|
docker-compose ps
|
||
|
|
```
|
||
|
|
|
||
|
|
### Access URLs
|
||
|
|
- Cool UI: http://localhost:5174
|
||
|
|
- Nitro React: http://localhost:5173
|
||
|
|
- Asset Server: http://localhost:8081
|
||
|
|
- CMS: http://localhost
|
||
|
|
|
||
|
|
### Database Access
|
||
|
|
```bash
|
||
|
|
# Docker
|
||
|
|
mysql -h localhost -P 3307 -u habbo_user -phabbo_password_2024 habbo_retro
|
||
|
|
|
||
|
|
# Local
|
||
|
|
mysql -h localhost -u habbo_user -phabbo_password_2024 habbo_retro
|
||
|
|
```
|
||
|
|
|
||
|
|
### Log Files
|
||
|
|
```bash
|
||
|
|
# All logs
|
||
|
|
docker-compose logs -f
|
||
|
|
|
||
|
|
# Specific service
|
||
|
|
docker-compose logs -f emulator
|
||
|
|
docker-compose logs -f mysql
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📝 License & Credits
|
||
|
|
|
||
|
|
### Emulator
|
||
|
|
- **Arcturus Morningstar** - Open-source Habbo emulator
|
||
|
|
- Repository: https://git.krews.org/morningstar/Arcturus-Community
|
||
|
|
- License: Educational purposes
|
||
|
|
|
||
|
|
### Clients
|
||
|
|
- **Nitro React** - React-based Habbo client
|
||
|
|
- **Cool UI** - Modern Habbo client interface
|
||
|
|
|
||
|
|
### CMS
|
||
|
|
- **AtomCMS** - Laravel-based hotel management
|
||
|
|
|
||
|
|
### Catalog Translation
|
||
|
|
- Automated translation: MyMemory API
|
||
|
|
- Manual translation: Google Gemini
|
||
|
|
- Translation date: December 6, 2025
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎮 Enjoy Your Habbo Retro!
|
||
|
|
|
||
|
|
Your fully containerized Habbo retro hotel is ready to use!
|
||
|
|
|
||
|
|
**Quick Start**: Run `./docker-start.sh` and visit http://localhost:5174
|
||
|
|
|
||
|
|
For questions, issues, or contributions, check the documentation files in this repository.
|
||
|
|
|
||
|
|
**Last Updated**: December 6, 2025
|
||
|
|
**Version**: 1.0.0
|
||
|
|
**Database Version**: 20251206_155812
|