1078 lines
28 KiB
Markdown
1078 lines
28 KiB
Markdown
# Complete Habbo Retro Setup Plan (2025)
|
|
|
|
## Table of Contents
|
|
1. [Overview](#overview)
|
|
2. [Quick Start (RageZone Method)](#quick-start-ragezone-method)
|
|
3. [System Components](#system-components)
|
|
4. [System Requirements](#system-requirements)
|
|
5. [Prerequisites Installation](#prerequisites-installation)
|
|
6. [Database Setup](#database-setup)
|
|
7. [Asset Conversion](#asset-conversion)
|
|
8. [Emulator Setup](#emulator-setup)
|
|
9. [CMS Installation](#cms-installation)
|
|
10. [Client Setup](#client-setup)
|
|
11. [Configuration & Integration](#configuration--integration)
|
|
12. [Deployment](#deployment)
|
|
13. [Testing & Troubleshooting](#testing--troubleshooting)
|
|
14. [Additional Resources](#additional-resources)
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
This guide provides a complete walkthrough for setting up a Habbo retro hotel using modern technologies and the Nitro HTML5 client. This setup includes:
|
|
|
|
- **AtomCMS** - Modern Laravel-based web CMS
|
|
- **Arcturus Morningstar Extended** - Java-based Habbo emulator
|
|
- **Nitro Converter** - Tool for converting Flash assets to Nitro format
|
|
- **Nitro Cool UI** - React-based HTML5 client
|
|
|
|
### Educational Disclaimer
|
|
⚠️ This setup is provided for educational purposes only. Ensure you comply with all applicable laws and regulations when using these tools.
|
|
|
|
---
|
|
|
|
## Quick Start (RageZone Method)
|
|
|
|
This is a streamlined production setup based on the [RageZone tutorial](https://forum.ragezone.com/threads/nitro-set-up-nitro-arcturus-for-production-en.1195557/). Use this if you want to get up and running quickly with minimal configuration.
|
|
|
|
### Prerequisites Downloads
|
|
|
|
1. **Node.js & Angular**
|
|
- Windows: Download from https://nodejs.org/en/download/
|
|
- After installing: `npm install -g @angular/cli`
|
|
- macOS: `brew update && brew install node && npm install -g @angular/cli`
|
|
|
|
2. **Download Required Files**
|
|
- Nitro Client (Angular): https://git.krews.org/nitro/nitro-client
|
|
- Arcturus Morningstar: https://git.krews.org/morningstar/Arcturus-Community/-/releases
|
|
- WebSocket Plugin: https://git.krews.org/nitro/ms-websockets/-/releases
|
|
- Nitro Assets: https://git.krews.org/oshawott/nitro-assets
|
|
- Flash UI Nitro (Compiled): https://mega.nz/file/xQsiFKhB#ECpscHvWJw-EW6ldgwApdYdD4Ff6TEoZp7m1Hq6ztps
|
|
|
|
3. **Web Server**
|
|
- Install Xampp/Wampp/Laragon/IIS
|
|
|
|
### Quick Setup Steps
|
|
|
|
#### 1. Set Up Nitro Client
|
|
|
|
```bash
|
|
# Extract nitro-client zip
|
|
cd nitro-client/src
|
|
|
|
# Rename configuration files
|
|
mv index.html.example index.html
|
|
mv configuration.json.example configuration.json
|
|
```
|
|
|
|
Edit `configuration.json`:
|
|
```json
|
|
{
|
|
"socketUrl": "ws://localhost:2096",
|
|
"assetUrl": "http://localhost/nitro-assets",
|
|
"imageUrl": "http://localhost/c_images/album1584/"
|
|
}
|
|
```
|
|
|
|
Install and run:
|
|
```bash
|
|
npm install
|
|
ng serve
|
|
```
|
|
|
|
Access at: `http://localhost:4200`
|
|
|
|
#### 2. Set Up Assets
|
|
|
|
```bash
|
|
# Extract nitro-assets to your web server
|
|
# For Xampp: copy to C:/xampp/htdocs/nitro-assets
|
|
# For other servers: copy to htdocs or www folder
|
|
```
|
|
|
|
#### 3. Configure Arcturus Emulator
|
|
|
|
1. Extract Arcturus and place WebSocket plugin in `plugins/` folder
|
|
2. Start emulator (it will create database tables)
|
|
3. Stop emulator
|
|
4. Configure database settings in `emulator_settings` table:
|
|
|
|
```sql
|
|
UPDATE emulator_settings SET value = '0.0.0.0' WHERE key = 'ws.nitro.host';
|
|
UPDATE emulator_settings SET value = '2096' WHERE key = 'ws.nitro.port';
|
|
```
|
|
|
|
5. Restart emulator
|
|
|
|
#### 4. Quick Test (Without CMS)
|
|
|
|
Add SSO ticket to test user:
|
|
```sql
|
|
-- Add auth ticket to any user
|
|
UPDATE users SET auth_ticket = 'test123' WHERE id = 1;
|
|
```
|
|
|
|
Access Nitro:
|
|
```
|
|
http://localhost:4200/?sso=test123
|
|
```
|
|
|
|
You should now be able to enter the client and test basic functionality!
|
|
|
|
### When to Use This Method
|
|
|
|
✅ **Use this for:**
|
|
- Quick testing and development
|
|
- Understanding the basic components
|
|
- Learning how Nitro and Arcturus work together
|
|
- Proof of concept
|
|
|
|
❌ **Don't use this for:**
|
|
- Production deployments (skip to full setup below)
|
|
- Hotels with public registration
|
|
- Long-term projects
|
|
|
|
For full production setup with CMS, SSL, and proper user management, continue with the detailed sections below.
|
|
|
|
---
|
|
|
|
## System Components
|
|
|
|
### 1. Web CMS: AtomCMS
|
|
- **Technology**: Laravel 10.x, Vite, TailwindCSS
|
|
- **Purpose**: User registration, hotel website, user management
|
|
- **Repository**: https://github.com/atom-retros/atomcms
|
|
- **Documentation**: https://github.com/atom-retros/atomcms/wiki
|
|
|
|
### 2. Emulator: Arcturus Morningstar Extended
|
|
- **Technology**: Java
|
|
- **Purpose**: Game server handling rooms, users, furniture, interactions
|
|
- **Repository**: https://github.com/duckietm/Arcturus-Morningstar-Extended
|
|
- **Compatibility**: Works with Nitro client via WebSocket plugin
|
|
|
|
### 3. Asset Converter: Nitro Converter
|
|
- **Technology**: Node.js/TypeScript
|
|
- **Purpose**: Convert Flash SWF assets to Nitro `.nitro` bundles
|
|
- **Repository**: https://github.com/billsonnn/nitro-converter
|
|
|
|
### 4. Client: Nitro (Multiple Options)
|
|
|
|
#### Option A: Nitro Cool UI (React-based)
|
|
- **Technology**: React, TypeScript
|
|
- **Purpose**: Modern HTML5 client with custom UI
|
|
- **Repository**: https://github.com/duckietm/Nitro-Cool-UI
|
|
- **Version**: v2.1 (Nitro React)
|
|
- **Best for**: Custom branded hotels, modern UI/UX
|
|
|
|
#### Option B: Nitro Client (Angular-based)
|
|
- **Technology**: Angular, TypeScript
|
|
- **Purpose**: Official Nitro client implementation
|
|
- **Repository**: https://git.krews.org/nitro/nitro-client
|
|
- **Best for**: Quick setup, standard Habbo-like experience
|
|
|
|
#### Option C: Flash UI Nitro (Compiled)
|
|
- **Technology**: Pre-compiled Nitro with Flash-like UI
|
|
- **Download**: https://mega.nz/file/xQsiFKhB#ECpscHvWJw-EW6ldgwApdYdD4Ff6TEoZp7m1Hq6ztps
|
|
- **Best for**: Classic Habbo look and feel
|
|
|
|
**Note**: This guide covers the React-based Nitro Cool UI in detail, but the Quick Start section uses the Angular client for simplicity.
|
|
|
|
---
|
|
|
|
## System Requirements
|
|
|
|
### Hardware Requirements
|
|
- **CPU**: 2+ cores recommended
|
|
- **RAM**: 4GB minimum, 8GB recommended
|
|
- **Storage**: 20GB+ for assets, database, and applications
|
|
- **Network**: Stable internet connection with static IP or domain
|
|
|
|
### Software Requirements
|
|
|
|
#### For Windows (IIS Setup)
|
|
- Windows Server 2019+ or Windows 10/11 Pro
|
|
- Internet Information Services (IIS) 10+
|
|
- MariaDB 10.6+ or MySQL 8.0+
|
|
- PHP 8.2+
|
|
- Composer v2
|
|
- Java JDK 17+ (for emulator)
|
|
- Node.js 18+ (for Nitro client)
|
|
- Git
|
|
- Yarn package manager
|
|
|
|
#### For Linux (Ubuntu/Debian)
|
|
- Ubuntu 20.04+ or Debian 11+
|
|
- Nginx or Apache
|
|
- MariaDB 10.6+ or MySQL 8.0+
|
|
- PHP 8.2+ with extensions: curl, mbstring, pdo, pdo_mysql, xml, zip, gd
|
|
- Composer v2
|
|
- Java JDK 17+
|
|
- Node.js 18+
|
|
- Git
|
|
- Yarn package manager
|
|
|
|
---
|
|
|
|
## Prerequisites Installation
|
|
|
|
### Step 1: Install Core Software
|
|
|
|
#### On Windows:
|
|
```powershell
|
|
# Install Chocolatey (Windows package manager)
|
|
Set-ExecutionPolicy Bypass -Scope Process -Force
|
|
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
|
|
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
|
|
|
|
# Install required software
|
|
choco install git -y
|
|
choco install php --version=8.2 -y
|
|
choco install composer -y
|
|
choco install mariadb -y
|
|
choco install nodejs --version=18.0.0 -y
|
|
choco install openjdk17 -y
|
|
|
|
# Install Yarn
|
|
npm install -g yarn
|
|
|
|
# Enable IIS via PowerShell
|
|
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole
|
|
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServer
|
|
Enable-WindowsOptionalFeature -Online -FeatureName IIS-ASPNET45
|
|
```
|
|
|
|
#### On Linux (Ubuntu):
|
|
```bash
|
|
# Update system
|
|
sudo apt update && sudo apt upgrade -y
|
|
|
|
# Install Git
|
|
sudo apt install git -y
|
|
|
|
# Install PHP 8.2 and extensions
|
|
sudo apt install software-properties-common -y
|
|
sudo add-apt-repository ppa:ondrej/php -y
|
|
sudo apt update
|
|
sudo apt install php8.2 php8.2-fpm php8.2-cli php8.2-curl php8.2-mbstring \
|
|
php8.2-mysql php8.2-xml php8.2-zip php8.2-gd -y
|
|
|
|
# Install Composer
|
|
curl -sS https://getcomposer.org/installer | php
|
|
sudo mv composer.phar /usr/local/bin/composer
|
|
|
|
# Install MariaDB
|
|
sudo apt install mariadb-server mariadb-client -y
|
|
sudo mysql_secure_installation
|
|
|
|
# Install Java 17
|
|
sudo apt install openjdk-17-jdk -y
|
|
|
|
# Install Node.js 18+ and Yarn
|
|
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
|
|
sudo apt install nodejs -y
|
|
sudo npm install -g yarn
|
|
|
|
# Install Nginx
|
|
sudo apt install nginx -y
|
|
```
|
|
|
|
### Step 2: Verify Installations
|
|
```bash
|
|
# Check versions
|
|
php -v # Should show PHP 8.2.x
|
|
composer -V # Should show Composer version 2.x
|
|
node -v # Should show v18.x or higher
|
|
yarn -v # Should show yarn version
|
|
java -version # Should show Java 17+
|
|
git --version # Should show git version
|
|
```
|
|
|
|
---
|
|
|
|
## Database Setup
|
|
|
|
### Step 1: Create Database
|
|
|
|
#### MySQL/MariaDB Setup:
|
|
```sql
|
|
-- Login to MySQL
|
|
mysql -u root -p
|
|
|
|
-- Create database
|
|
CREATE DATABASE habbo_retro CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- Create user
|
|
CREATE USER 'habbo_user'@'localhost' IDENTIFIED BY 'strong_password_here';
|
|
|
|
-- Grant privileges
|
|
GRANT ALL PRIVILEGES ON habbo_retro.* TO 'habbo_user'@'localhost';
|
|
FLUSH PRIVILEGES;
|
|
|
|
-- Exit
|
|
EXIT;
|
|
```
|
|
|
|
### Step 2: Import Base Database
|
|
|
|
The Arcturus Morningstar Extended repository includes database files:
|
|
|
|
```bash
|
|
cd Arcturus-Morningstar-Extended/Default\ Database
|
|
|
|
# Import the myBoBBa database
|
|
mysql -u habbo_user -p habbo_retro < myBoBBa_LATEST.sql
|
|
|
|
# Import database updates
|
|
mysql -u habbo_user -p habbo_retro < ../Database\ Updates/UpdateDatabase.sql
|
|
```
|
|
|
|
**Note**: The myBoBBa database is mentioned in the Arcturus README and provides a complete starting point.
|
|
|
|
---
|
|
|
|
## Asset Conversion
|
|
|
|
Before setting up the client, you need to convert Flash assets to Nitro format.
|
|
|
|
### Step 1: Setup Nitro Converter
|
|
|
|
```bash
|
|
cd nitro-converter
|
|
|
|
# Install dependencies
|
|
yarn install
|
|
|
|
# Build the converter
|
|
yarn build
|
|
```
|
|
|
|
### Step 2: Configure the Converter
|
|
|
|
```bash
|
|
# Copy configuration template
|
|
cp configuration.json.example configuration.json
|
|
```
|
|
|
|
Edit `configuration.json`:
|
|
```json
|
|
{
|
|
"output.folder": "./output",
|
|
"flash.client.url": "https://images.habbo.com/gordon/",
|
|
"furnidata.load.url": "https://www.habbo.com/gamedata/furnidata/1",
|
|
"productdata.load.url": "https://www.habbo.com/gamedata/productdata/1",
|
|
"figuremap.load.url": "https://images.habbo.com/gordon/figuremap.xml",
|
|
"effectmap.load.url": "https://images.habbo.com/gordon/effectmap.xml",
|
|
"dynamic.download.pet.url": "https://images.habbo.com/gordon/%className%.swf",
|
|
"dynamic.download.figure.url": "https://images.habbo.com/gordon/%className%.swf",
|
|
"dynamic.download.effect.url": "https://images.habbo.com/gordon/%className%.swf",
|
|
"flash.dynamic.download.url": "https://images.habbo.com/dcr/hof_furni/",
|
|
"dynamic.download.furniture.url": "https://images.habbo.com/dcr/hof_furni/%className%.swf",
|
|
"external.variables.url": "https://www.habbo.com/gamedata/external_variables/1",
|
|
"external.texts.url": "https://www.habbo.com/gamedata/external_flash_texts/1",
|
|
"convert.productdata": "1",
|
|
"convert.externaltexts": "1",
|
|
"convert.figure": "1",
|
|
"convert.figuredata": "1",
|
|
"convert.effect": "1",
|
|
"convert.furniture": "1",
|
|
"convert.pet": "1"
|
|
}
|
|
```
|
|
|
|
**Note**: You can use official Habbo URLs or download a complete asset pack from community resources.
|
|
|
|
### Step 3: Run Asset Conversion
|
|
|
|
```bash
|
|
# Download and convert all assets
|
|
yarn start
|
|
```
|
|
|
|
This process may take 30-60 minutes depending on your connection and the number of assets.
|
|
|
|
### Step 4: Extract Converted Assets
|
|
|
|
After conversion, you'll have `.nitro` bundles. Extract them for hosting:
|
|
|
|
```bash
|
|
yarn start:extract
|
|
```
|
|
|
|
The extracted assets will be in the `output` folder and need to be hosted on a web server.
|
|
|
|
---
|
|
|
|
## Emulator Setup
|
|
|
|
### Step 1: Compile/Download Emulator
|
|
|
|
The repository includes a pre-compiled version:
|
|
|
|
```bash
|
|
cd Arcturus-Morningstar-Extended/Latest_Compiled_Version
|
|
```
|
|
|
|
Or compile from source:
|
|
```bash
|
|
cd Arcturus-Morningstar-Extended/Emulator
|
|
# Use your Java IDE (IntelliJ IDEA recommended) to compile
|
|
# Or use Maven if pom.xml is present
|
|
mvn clean package
|
|
```
|
|
|
|
### Step 2: Configure Emulator
|
|
|
|
Create/edit `config.ini`:
|
|
|
|
```ini
|
|
[database]
|
|
mysql.hostname=localhost
|
|
mysql.port=3306
|
|
mysql.username=habbo_user
|
|
mysql.password=strong_password_here
|
|
mysql.database=habbo_retro
|
|
|
|
[websockets]
|
|
ws.nitro.enabled=true
|
|
ws.nitro.host=0.0.0.0
|
|
ws.nitro.port=2096
|
|
ws.nitro.ip.header=X-Forwarded-For
|
|
|
|
[server]
|
|
hotel.name=My Habbo Retro
|
|
hotel.url=http://localhost
|
|
```
|
|
|
|
### Step 3: Install WebSocket Plugin
|
|
|
|
The WebSocket plugin is required for Nitro client compatibility:
|
|
|
|
```bash
|
|
cd Arcturus-Morningstar-Extended/Plugins
|
|
|
|
# Copy the WebSocket plugin JAR to the emulator plugins folder
|
|
# The plugin should be included in the repository
|
|
```
|
|
|
|
### Step 4: Configure SSL/WSS (Production)
|
|
|
|
For secure WebSocket connections (wss://):
|
|
|
|
**Option 1: Using Cloudflare (Recommended)**
|
|
1. Set `ws.nitro.port` to a Cloudflare-compatible HTTPS port: 443, 2053, 2083, 2087, 2096, or 8443
|
|
2. Create an A record for a subdomain (e.g., `ws.yourhotel.com`) pointing to your server IP
|
|
3. Enable Cloudflare proxy (orange cloud)
|
|
4. Create a Page Rule to disable SSL for the WebSocket subdomain
|
|
5. Configure `ws.nitro.ip.header=CF-Connecting-IP` in config.ini
|
|
|
|
**Option 2: Direct SSL**
|
|
1. Obtain SSL certificate (Let's Encrypt recommended)
|
|
2. Place certificate files:
|
|
- `/ssl/cert.pem`
|
|
- `/ssl/privkey.pem`
|
|
3. Restart emulator
|
|
|
|
**Note**: Self-signed certificates will not work with the client.
|
|
|
|
### Step 5: Run the Emulator
|
|
|
|
```bash
|
|
java -jar Arcturus-Morningstar-Extended.jar
|
|
```
|
|
|
|
The emulator should start and connect to the database. Check console for any errors.
|
|
|
|
---
|
|
|
|
## CMS Installation
|
|
|
|
### Step 1: Setup AtomCMS
|
|
|
|
```bash
|
|
cd atomcms
|
|
|
|
# Install PHP dependencies
|
|
composer install
|
|
|
|
# Install Node dependencies
|
|
yarn install
|
|
```
|
|
|
|
### Step 2: Configure Environment
|
|
|
|
```bash
|
|
# Copy environment file
|
|
cp .env.example .env
|
|
```
|
|
|
|
Edit `.env`:
|
|
```env
|
|
APP_NAME="My Habbo Retro"
|
|
APP_ENV=production
|
|
APP_KEY=
|
|
APP_DEBUG=false
|
|
APP_URL=http://localhost
|
|
|
|
DB_CONNECTION=mysql
|
|
DB_HOST=127.0.0.1
|
|
DB_PORT=3306
|
|
DB_DATABASE=habbo_retro
|
|
DB_USERNAME=habbo_user
|
|
DB_PASSWORD=strong_password_here
|
|
|
|
# Nitro Client Configuration
|
|
NITRO_CLIENT_URL=http://localhost:3000
|
|
NITRO_WEBSOCKET_URL=ws://localhost:2096
|
|
|
|
# Asset URLs (from your converted assets)
|
|
GAME_ASSETS_URL=http://localhost/assets
|
|
FIGURE_IMAGER_URL=http://localhost/imaging
|
|
```
|
|
|
|
### Step 3: Generate Application Key
|
|
|
|
```bash
|
|
php artisan key:generate
|
|
```
|
|
|
|
### Step 4: Run Migrations
|
|
|
|
```bash
|
|
# Run AtomCMS migrations (if required)
|
|
php artisan migrate
|
|
|
|
# Note: The myBoBBa database should already have the required tables
|
|
# Run migrations only if AtomCMS has additional tables to create
|
|
```
|
|
|
|
### Step 5: Build Frontend Assets
|
|
|
|
```bash
|
|
# Build for production
|
|
yarn build
|
|
|
|
# Or for development
|
|
yarn dev
|
|
```
|
|
|
|
### Step 6: Configure Web Server
|
|
|
|
#### Nginx Configuration (Linux):
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
server_name yourhotel.com;
|
|
root /var/www/atomcms/public;
|
|
|
|
add_header X-Frame-Options "SAMEORIGIN";
|
|
add_header X-Content-Type-Options "nosniff";
|
|
|
|
index index.php;
|
|
|
|
charset utf-8;
|
|
|
|
location / {
|
|
try_files $uri $uri/ /index.php?$query_string;
|
|
}
|
|
|
|
location = /favicon.ico { access_log off; log_not_found off; }
|
|
location = /robots.txt { access_log off; log_not_found off; }
|
|
|
|
error_page 404 /index.php;
|
|
|
|
location ~ \.php$ {
|
|
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
|
|
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
|
include fastcgi_params;
|
|
}
|
|
|
|
location ~ /\.(?!well-known).* {
|
|
deny all;
|
|
}
|
|
}
|
|
```
|
|
|
|
#### IIS Configuration (Windows):
|
|
Create `web.config` in the `public` folder (should already exist in AtomCMS).
|
|
|
|
### Step 7: Set Permissions (Linux)
|
|
|
|
```bash
|
|
# Set proper permissions
|
|
sudo chown -R www-data:www-data /var/www/atomcms
|
|
sudo chmod -R 755 /var/www/atomcms
|
|
sudo chmod -R 775 /var/www/atomcms/storage
|
|
sudo chmod -R 775 /var/www/atomcms/bootstrap/cache
|
|
```
|
|
|
|
---
|
|
|
|
## Client Setup
|
|
|
|
### Step 1: Configure Nitro Cool UI
|
|
|
|
```bash
|
|
cd Nitro-Cool-UI
|
|
|
|
# Install dependencies
|
|
yarn install
|
|
```
|
|
|
|
### Step 2: Configure Client
|
|
|
|
```bash
|
|
# Rename configuration files
|
|
cp public/renderer-config.json.example public/renderer-config.json
|
|
cp public/ui-config.json.example public/ui-config.json
|
|
```
|
|
|
|
Edit `public/renderer-config.json`:
|
|
```json
|
|
{
|
|
"socket.url": "ws://localhost:2096",
|
|
"asset.url": "http://localhost/assets",
|
|
"image.library.url": "http://localhost/assets/images",
|
|
"hof.furni.url": "http://localhost/assets/dcr/hof_furni"
|
|
}
|
|
```
|
|
|
|
Edit `public/ui-config.json`:
|
|
```json
|
|
{
|
|
"camera.url": "http://localhost/api/camera",
|
|
"thumbnails.url": "http://localhost/imaging",
|
|
"url.prefix": "http://localhost",
|
|
"habbopages.url": "http://localhost"
|
|
}
|
|
```
|
|
|
|
### Step 3: Update ExternalTexts.json
|
|
|
|
As mentioned in the Nitro Cool UI README, make these changes:
|
|
|
|
```json
|
|
{
|
|
"room.mute.button.text": "Hide chat",
|
|
"room.unmute.button.text": "Unhide chat"
|
|
}
|
|
```
|
|
|
|
### Step 4: Build the Client
|
|
|
|
#### For Development:
|
|
```bash
|
|
yarn start
|
|
```
|
|
This runs on http://localhost:3000 with hot-reload.
|
|
|
|
#### For Production:
|
|
```bash
|
|
yarn build
|
|
```
|
|
|
|
The production files will be in the `dist` folder. These need to be:
|
|
1. Uploaded to your web server
|
|
2. Configured in your CMS to load the client
|
|
|
|
---
|
|
|
|
## Configuration & Integration
|
|
|
|
### Step 1: Host Converted Assets
|
|
|
|
The assets from nitro-converter need to be accessible via HTTP:
|
|
|
|
```bash
|
|
# Example: Copy to web server
|
|
cp -r nitro-converter/output/* /var/www/html/assets/
|
|
|
|
# Or create a symlink
|
|
ln -s /path/to/nitro-converter/output /var/www/html/assets
|
|
```
|
|
|
|
### Step 2: Configure Asset URLs
|
|
|
|
Ensure all components point to the correct asset URLs:
|
|
|
|
- **Nitro Client**: `renderer-config.json` → `asset.url`
|
|
- **CMS**: `.env` → `GAME_ASSETS_URL`
|
|
- **Database**: Update `emulator_settings` table if needed
|
|
|
|
### Step 3: Update Database Settings
|
|
|
|
Connect to your database and verify/update the `emulator_settings` table:
|
|
|
|
```sql
|
|
USE habbo_retro;
|
|
|
|
-- Update camera URL
|
|
UPDATE emulator_settings SET value = 'http://localhost/api/camera' WHERE key = 'camera.url';
|
|
|
|
-- Update badge imager URL
|
|
UPDATE emulator_settings SET value = 'http://localhost/imaging/badge' WHERE key = 'imager.location.badges';
|
|
|
|
-- Update figure imager URL
|
|
UPDATE emulator_settings SET value = 'http://localhost/imaging/avatar' WHERE key = 'imager.location.figure';
|
|
```
|
|
|
|
### Step 4: Integrate Client with CMS
|
|
|
|
AtomCMS should have built-in support for Nitro. Configure the client loading in the CMS:
|
|
|
|
1. Login to your CMS as admin
|
|
2. Navigate to housekeeping/settings
|
|
3. Set client type to "Nitro"
|
|
4. Set client URL to your Nitro build location
|
|
|
|
---
|
|
|
|
## Deployment
|
|
|
|
### Step 1: Domain & DNS Setup
|
|
|
|
1. Purchase a domain name
|
|
2. Configure DNS records:
|
|
- A record: `@` → Your server IP
|
|
- A record: `www` → Your server IP
|
|
- A record: `ws` → Your server IP (for WebSockets)
|
|
|
|
### Step 2: SSL Certificate (Let's Encrypt)
|
|
|
|
```bash
|
|
# Install Certbot
|
|
sudo apt install certbot python3-certbot-nginx -y
|
|
|
|
# Obtain certificate
|
|
sudo certbot --nginx -d yourhotel.com -d www.yourhotel.com
|
|
|
|
# Auto-renewal is configured automatically
|
|
```
|
|
|
|
### Step 3: Firewall Configuration
|
|
|
|
```bash
|
|
# Allow necessary ports
|
|
sudo ufw allow 80/tcp # HTTP
|
|
sudo ufw allow 443/tcp # HTTPS
|
|
sudo ufw allow 2096/tcp # WebSocket (if not using Cloudflare)
|
|
sudo ufw allow 3306/tcp # MySQL (only if remote access needed)
|
|
|
|
sudo ufw enable
|
|
```
|
|
|
|
### Step 4: Start All Services
|
|
|
|
```bash
|
|
# Start/restart web server
|
|
sudo systemctl restart nginx # or httpd/apache2
|
|
|
|
# Start PHP-FPM
|
|
sudo systemctl restart php8.2-fpm
|
|
|
|
# Start MySQL
|
|
sudo systemctl restart mariadb
|
|
|
|
# Start emulator in screen/tmux
|
|
screen -S emulator
|
|
cd /path/to/emulator
|
|
java -jar Arcturus-Morningstar-Extended.jar
|
|
# Ctrl+A, D to detach
|
|
```
|
|
|
|
### Step 5: Production Checklist
|
|
|
|
- [ ] All URLs use HTTPS
|
|
- [ ] WebSockets use WSS (secure)
|
|
- [ ] Database credentials are strong
|
|
- [ ] APP_DEBUG=false in .env
|
|
- [ ] Regular database backups configured
|
|
- [ ] Firewall properly configured
|
|
- [ ] SSL certificates auto-renew
|
|
- [ ] Server monitoring in place
|
|
- [ ] Error logging enabled
|
|
|
|
---
|
|
|
|
## Testing & Troubleshooting
|
|
|
|
### Step 1: Test Database Connection
|
|
|
|
```bash
|
|
# Test from CMS
|
|
php artisan tinker
|
|
>>> DB::connection()->getPdo();
|
|
|
|
# Should return PDO object without errors
|
|
```
|
|
|
|
### Step 2: Test Emulator
|
|
|
|
1. Check emulator console for errors
|
|
2. Verify WebSocket port is listening:
|
|
```bash
|
|
netstat -an | grep 2096
|
|
```
|
|
3. Check database connection in emulator logs
|
|
|
|
### Step 3: Test Client
|
|
|
|
1. Open browser developer tools (F12)
|
|
2. Navigate to your hotel URL
|
|
3. Check Console for JavaScript errors
|
|
4. Check Network tab for failed requests
|
|
5. Verify WebSocket connection is established
|
|
|
|
### Step 4: Direct SSO Testing (Without CMS)
|
|
|
|
For quick testing without CMS integration, you can use direct SSO authentication:
|
|
|
|
```sql
|
|
-- Add an auth ticket to a test user
|
|
UPDATE users SET auth_ticket = 'your_test_sso_ticket' WHERE id = 1;
|
|
```
|
|
|
|
Then access the client with the SSO parameter:
|
|
```
|
|
http://yourhotel.com/client?sso=your_test_sso_ticket
|
|
```
|
|
|
|
**Note**: This bypasses CMS login and is useful for:
|
|
- Testing client/emulator connectivity
|
|
- Debugging WebSocket issues
|
|
- Verifying asset loading
|
|
- Development and troubleshooting
|
|
|
|
### Step 5: WebSocket Connection Verification
|
|
|
|
Check browser console for WebSocket messages:
|
|
```
|
|
✅ Good: "WebSocket connection established"
|
|
❌ Bad: "WebSocket connection failed" or "ERR_CONNECTION_REFUSED"
|
|
```
|
|
|
|
Verify in emulator console:
|
|
```
|
|
✅ Good: "[WebSocket] User connected from IP: xxx.xxx.xxx.xxx"
|
|
❌ Bad: No connection messages or timeout errors
|
|
```
|
|
|
|
### Common Issues & Solutions
|
|
|
|
#### Issue: Client won't connect to emulator
|
|
**Solution**:
|
|
- Verify WebSocket URL in `renderer-config.json`
|
|
- Check firewall allows port 2096
|
|
- Verify emulator is running
|
|
- Check `ws.nitro.enabled=true` in emulator config
|
|
|
|
#### Issue: Assets not loading
|
|
**Solution**:
|
|
- Verify asset URLs in `renderer-config.json`
|
|
- Check web server can serve files from assets directory
|
|
- Verify nitro-converter completed successfully
|
|
- Check CORS headers if assets on different domain
|
|
|
|
#### Issue: Database connection failed
|
|
**Solution**:
|
|
- Verify credentials in `.env` and `config.ini`
|
|
- Check MySQL is running: `sudo systemctl status mariadb`
|
|
- Verify user has correct permissions
|
|
- Check database exists
|
|
|
|
#### Issue: CMS shows white screen
|
|
**Solution**:
|
|
- Check `storage` and `bootstrap/cache` permissions
|
|
- Run `php artisan config:clear`
|
|
- Run `php artisan cache:clear`
|
|
- Check `storage/logs/laravel.log` for errors
|
|
|
|
#### Issue: WebSocket SSL errors
|
|
**Solution**:
|
|
- Browser rejects self-signed certificates
|
|
- Use Let's Encrypt or Cloudflare
|
|
- Verify SSL certificate chain is complete
|
|
- Check `ws.nitro.ip.header` configuration
|
|
|
|
---
|
|
|
|
## Additional Resources
|
|
|
|
### Official Documentation
|
|
- [AtomCMS Wiki](https://github.com/atom-retros/atomcms/wiki)
|
|
- [Arcturus Morningstar GitLab](https://git.krews.org/morningstar/Arcturus-Community)
|
|
- [Arcturus Setup Tutorial](https://git.krews.org/duckietm/ubuntu-tutorial/-/blob/main/Emulator_Setup.md)
|
|
- [Nitro Converter GitHub](https://github.com/billsonnn/nitro-converter)
|
|
- [Nitro React GitHub](https://github.com/billsonnn/nitro-react)
|
|
- [Nitro Client (Angular) GitLab](https://git.krews.org/nitro/nitro-client)
|
|
- [WebSocket Plugin for Arcturus](https://git.krews.org/nitro/ms-websockets)
|
|
|
|
### Community Resources & Tutorials
|
|
- [RageZone - Nitro Production Setup](https://forum.ragezone.com/threads/nitro-set-up-nitro-arcturus-for-production-en.1195557/)
|
|
- [DevBest Forum - Habbo Tutorials](https://devbest.com/forums/habbo-tutorials.37/)
|
|
- [DevBest - 2025 Retro Setup Guide (IIS + Nitro)](https://devbest.com/threads/how-to-set-up-a-retro-in-2025-iis-nitro-html5-part-1.92532/)
|
|
- [DevBest - Linux Nitro Setup](https://devbest.com/threads/install-and-configure-a-retro-with-the-nitro-client-locally-on-linux-1-2.92331/)
|
|
- [Arcturus Morningstar Discord](https://discord.gg/3VeyZXf5)
|
|
- [Atom CMS Discord](https://discord.gg/rX3aShUHdg)
|
|
|
|
### Alternative Tools & Resources
|
|
- [Nitro Docker](https://github.com/Holo5/nitro-docker) - Simplified Docker setup (2 commands!)
|
|
- [Habbo Asset Archives](https://github.com/ObjectRetros/2023-hotel-files) - Pre-packaged assets
|
|
- [Nitro Assets (Krews)](https://git.krews.org/oshawott/nitro-assets) - Pre-converted Nitro assets
|
|
- [Flash UI Nitro Compiled](https://mega.nz/file/xQsiFKhB#ECpscHvWJw-EW6ldgwApdYdD4Ff6TEoZp7m1Hq6ztps) - Ready-to-use client
|
|
- [Atom Housekeeping](https://github.com/atom-retros/atomhk) - Standalone admin panel
|
|
- [DeepWiki - AtomCMS Docs](https://deepwiki.com/atom-retros/atomcms) - Comprehensive documentation
|
|
|
|
### Learning Resources
|
|
- [Laravel Documentation](https://laravel.com/docs/10.x)
|
|
- [Laravel Bootcamp](https://bootcamp.laravel.com/)
|
|
- [Laracasts - Laravel from Scratch](https://laracasts.com/series/laravel-8-from-scratch)
|
|
- [Vite Documentation](https://vitejs.dev/)
|
|
- [TailwindCSS Documentation](https://tailwindcss.com/docs)
|
|
|
|
### Asset Packs & Downloads
|
|
Check community forums for complete asset packs that include:
|
|
- SWF archives for conversion
|
|
- Pre-converted Nitro assets
|
|
- Database dumps with furniture/catalog data
|
|
- Production data files
|
|
- Badge collections
|
|
- Custom furniture
|
|
|
|
---
|
|
|
|
## Maintenance & Updates
|
|
|
|
### Regular Tasks
|
|
|
|
**Daily:**
|
|
- Monitor server resources
|
|
- Check error logs
|
|
- Backup database
|
|
|
|
**Weekly:**
|
|
- Review user reports
|
|
- Update furniture/catalog
|
|
- Security audit
|
|
|
|
**Monthly:**
|
|
- Update dependencies (Composer, NPM)
|
|
- Review and apply emulator updates
|
|
- Database optimization
|
|
- Security patches
|
|
|
|
### Update Procedures
|
|
|
|
#### Updating AtomCMS:
|
|
```bash
|
|
cd atomcms
|
|
git pull origin main
|
|
composer install
|
|
yarn install
|
|
yarn build
|
|
php artisan migrate
|
|
php artisan cache:clear
|
|
```
|
|
|
|
#### Updating Arcturus Emulator:
|
|
1. Backup database
|
|
2. Download latest version
|
|
3. Review changelog for breaking changes
|
|
4. Update configuration if needed
|
|
5. Test on staging environment first
|
|
6. Deploy to production
|
|
|
|
#### Updating Nitro Client:
|
|
```bash
|
|
cd Nitro-Cool-UI
|
|
git pull origin main
|
|
yarn install
|
|
yarn build
|
|
# Deploy new build to production
|
|
```
|
|
|
|
---
|
|
|
|
## Security Best Practices
|
|
|
|
1. **Never expose database credentials** - Use environment variables
|
|
2. **Regular backups** - Automate daily database and file backups
|
|
3. **Keep software updated** - Apply security patches promptly
|
|
4. **Use strong passwords** - For all accounts and database users
|
|
5. **Enable HTTPS everywhere** - No mixed content
|
|
6. **Implement rate limiting** - Prevent abuse and DDoS
|
|
7. **Monitor logs** - Set up alerts for suspicious activity
|
|
8. **Validate user input** - Prevent SQL injection and XSS
|
|
9. **Use prepared statements** - For all database queries
|
|
10. **Regular security audits** - Review code and configurations
|
|
|
|
---
|
|
|
|
## Performance Optimization
|
|
|
|
### Database Optimization
|
|
```sql
|
|
-- Add indexes for frequently queried columns
|
|
CREATE INDEX idx_users_username ON users(username);
|
|
CREATE INDEX idx_users_online ON users(online);
|
|
|
|
-- Optimize tables monthly
|
|
OPTIMIZE TABLE users, rooms, items, furniture;
|
|
```
|
|
|
|
### Web Server Optimization
|
|
- Enable Gzip compression
|
|
- Configure browser caching
|
|
- Use CDN for static assets
|
|
- Enable OPcache for PHP
|
|
- Configure Redis/Memcached for session storage
|
|
|
|
### Client Optimization
|
|
- Minimize bundle size
|
|
- Enable production builds
|
|
- Use CDN for Nitro assets
|
|
- Implement lazy loading
|
|
- Optimize images
|
|
|
|
---
|
|
|
|
## Success Criteria
|
|
|
|
Your Habbo retro is successfully set up when:
|
|
|
|
- ✅ Users can register and login via CMS
|
|
- ✅ Client loads without errors
|
|
- ✅ WebSocket connection established (check browser console)
|
|
- ✅ Users can enter rooms
|
|
- ✅ Chat messages work
|
|
- ✅ Furniture loads and can be placed
|
|
- ✅ Avatar changes reflect immediately
|
|
- ✅ No console errors in client
|
|
- ✅ Emulator shows active connections
|
|
- ✅ All assets load correctly
|
|
|
|
---
|
|
|
|
## Conclusion
|
|
|
|
Setting up a Habbo retro requires patience and attention to detail. This guide covers the essential components and configuration. Remember:
|
|
|
|
1. Start with a development environment
|
|
2. Test each component independently
|
|
3. Document your configuration
|
|
4. Join community forums for support
|
|
5. Keep everything updated and backed up
|
|
|
|
Good luck with your Habbo retro hotel! 🏨
|
|
|
|
---
|
|
|
|
**Last Updated**: December 2025
|
|
**Compatible Versions**:
|
|
- AtomCMS: Latest (Laravel 10.x)
|
|
- Arcturus Morningstar Extended: Latest
|
|
- Nitro Client: v2.1+
|
|
- PHP: 8.2+
|
|
- Node.js: 18+
|
|
- Java: 17+
|