Files
Archive/retro/HABBO_RETRO_SETUP_PLAN.md

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+