Files
Atomcms-edit/README.md
T

11 KiB
Executable File

AtomCMS — Remco Epicnabbo Edition

Atom CMS

The Ultimate Retro Hotel CMS

Modern • Fast • Self-Repairing

Discord Laravel PHP


Features

Commandocentrum (Admin Panel)

  • Nitro V3 Update — One-click update system for Emulator, Nitro-V3, and Nitro_Render_V3
  • Configurable paths — All directories (emulator, nitro client, renderer, gamedata, SQL, backups) configurable via the Housekeeping UI, stored in the database
  • Emulator control — Start, stop, restart, and check emulator status
  • Hotel alert — Send messages to all online users
  • Live monitoring — Online users, emulator status, database status, server load, system diagnostics
  • Emulator logs viewer — Live log viewer
  • Clothing sync — Sync catalog clothing from FigureMap
  • Notification settings — Email & Discord alerts with rank-based filtering
  • Social login — Google, Discord, GitHub OAuth configuration
  • Staff activity log — Track recent housekeeping actions

Radio Station

  • DJ applications & rank system
  • Live DJ sessions with schedule
  • Song requests & voting
  • Shoutbox
  • Listener points & leaderboard
  • Contests & giveaways
  • Radio banners & history

Shop

  • Product catalog with categories
  • Virtual currency purchases
  • Voucher/promo codes
  • PayPal integration
  • Order history

Community

  • Articles with comments, reactions & tags
  • Photo gallery
  • Leaderboard
  • Teams & team applications
  • Staff page & staff applications
  • Rare values tracker
  • Badge draw/lottery system

Hotel Client

  • Nitro (HTML5) client support
  • VPN/proxy checker

User System

  • Public profiles with guestbook
  • Two-Factor Authentication (2FA)
  • Referral system with rewards
  • Account & password settings
  • Session logs

Help Center

  • Support ticket system with replies & status management
  • Website rules
  • FAQ with categories

Themes

  • Atom — Default light theme
  • Dusk — Dark theme

Filament Admin Panel

  • User & ban management
  • Radio management (applications, schedules, ranks, shouts, history, banners)
  • Shop & order management with charts
  • Article & tag management
  • Emulator settings, texts & catalog editors
  • Chatlog viewer (rooms & private messages)
  • Word filters & moderation tools
  • Housekeeping permissions
  • Website navigation & settings
  • Camera/photo management

Nitro V3 Update System

The Commandocentrum page in the Filament admin panel provides a one-click update system for your entire retro hotel stack.

How It Works

  1. Configure paths — Click "Configureer Paths" to set directories for your emulator, Nitro-V3 client, Nitro_Render_V3, Gamedata, SQL updates, and backups. Paths are stored in the database and editable at any time.
  2. Run Update — Click "Run Update" to execute update-Nitrov3.sh, which performs:
    • git pull on the emulator source
    • Automatic database backup via mariadb-dump
    • Import new SQL update files
    • Maven build (mvn package)
    • Update the emulator launch script to point to the newly built JAR
    • git pull on Nitro_Render_V3 (with automatic yarn install if package.json changed)
    • git pull on Nitro-V3 (with automatic yarn install if package.json changed)
    • yarn build for Nitro-V3
    • Sync Gamedata configuration files (renderer-config, ui-config, UITexts)
    • Cleanup old emulator logs (14+ days) and database backups (keep last 5)
    • Clear Yarn cache
    • Fix filesystem permissions
    • Restart the emulator service

Sudo Configuration

The update script requires sudo access for www-data to restart the emulator service and fix permissions. Add this sudoers file:

sudo tee /etc/sudoers.d/www-data << 'EOF'
www-data ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart emulator
www-data ALL=(ALL) NOPASSWD: /usr/bin/systemctl status emulator
www-data ALL=(ALL) NOPASSWD: /usr/bin/chown
EOF
sudo chmod 440 /etc/sudoers.d/www-data

The script gracefully skips sudo operations if they're not available.

Configurable Paths

Setting Default Description
Emulator hoofdmap /var/www/emulator Root emulator directory
Emulator service naam emulator systemd service name
Database naam habbo MySQL/MariaDB database
SQL updates map {emulator}/Database Updates Directory with .sql update files
Backup map {emulator}/Database Updates/backups Database backup storage
Gamedata config map /var/www/Gamedata/config Gamedata configuration
Nitro client config map {nitro}/public/configuration Client configuration output
Nitro-V3 bronmap /var/www/Nitro-V3 Nitro client source
Nitro Render V3 bronmap /var/www/Nitro_Render_V3 Nitro renderer source

Database credentials are read automatically from the Laravel .env file.


Requirements

Component Requirement
PHP 8.1 or higher
Database MariaDB 10.6+ or MySQL 8.0+
Web Server Apache (mod_rewrite) or Nginx
Node.js 20 or higher
Yarn 1.22+ or 4.x (Berry)
Composer 2.x

⚠️ XAMPP wordt niet ondersteund. XAMPP is extreem onveilig voor productieomgevingen — het gebruikt standaard accounts zonder wachtwoord, mist essentiële PHP-beveiligingsconfiguraties en biedt geen isolatie tussen services. Wij willen onze gebruikers en hun hotels beschermen tegen vermijdbare risico's. Gebruik een propere Linux-server met Nginx of Apache.


Installation

Linux (Ubuntu / Debian)

# 1. System dependencies
sudo apt update
sudo apt install -y git curl wget unzip nginx mariadb-server \
  php8.3 php8.3-cli php8.3-fpm php8.3-mysql php8.3-xml \
  php8.3-mbstring php8.3-curl php8.3-zip php8.3-bcmath \
  php8.3-gd php8.3-sockets php8.3-intl

# 2. Install Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

# 3. Install Node.js & Yarn
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
sudo corepack enable
corepack install -g yarn@latest

# 4. Clone the project
git clone ssh://git@5.252.100.130:8422/remco/Atomcms-edit.git /var/www/atomcms
cd /var/www/atomcms

# 5. Configure environment
cp .env.example .env
php artisan key:generate

# 6. Install PHP dependencies
composer install --no-dev --optimize-autoloader

# 7. Install frontend dependencies
yarn install

# 8. Create database
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS habbo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# 9. Run migrations & seeders
php artisan migrate --seed

# 10. Build frontend assets
yarn build:all

# 11. Set permissions
sudo chown -R www-data:www-data storage bootstrap/cache public/build
sudo chmod -R 775 storage bootstrap/cache

# 12. Configure web server (Nginx example)
server {
    listen 80;
    server_name your-domain.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 ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}
sudo ln -sf /etc/nginx/sites-available/atomcms /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo systemctl restart php8.3-fpm

Yarn Scripts

# Build all themes
yarn build:all

# Build single theme
yarn build:atom      # Atom theme
yarn build:dusk      # Dusk theme

# Development
yarn dev             # Start Vite dev server
yarn dev:atom        # Dev server for Atom theme

# Linting & Formatting
yarn lint            # Check JS/Vue
yarn lint:fix        # Fix JS/Vue
yarn format          # Format everything

# Cache
yarn clean           # Clear Vite cache
yarn rebuild         # Clean + install + build

Tech Stack

  • Backend: Laravel 13
  • Frontend: React 19 + Alpine.js
  • Build: Vite 8
  • CSS: TailwindCSS 4
  • Admin Panel: Filament 5
  • Database: MariaDB / MySQL

Changelog (May 27, 2026)

  • Added OPcache troubleshooting — 500 error after php artisan optimize fix in README
  • Fixed Dashboard navigation translation — added Dashboard key to Dutch Filament resources.php
  • Fixed Homepage navigation label — added Homepage translation to nl.json
  • Disabled OPcache in FPM99-opcache.ini set to opcache.enable=0 to prevent stale cache issues

Changelog (May 26, 2026)

  • Removed auto-recovery — caused race conditions by running view:clear during live traffic, fixed filemtime(): stat failed errors
  • Fixed debug banner — now uses config('app.debug') with proper (bool) cast, no more false positives
  • Added (bool) casts to all env() calls with boolean defaults across 6 config files (habbo, activitylog, database, filesystems, log-viewer, session)
  • Removed dangerous public scriptscheck_icons.php and test_open_basedir.php (public Laravel bootstrap + DB queries)
  • Removed root index.php — duplicate front controller, unsafe if docroot misconfigured
  • Cleaned Clockwork debug data — 42 JSON files with SQL queries, tokens, and paths
  • Hardened .htaccess — block .env/.git/composer.json access + security headers (X-Frame-Options, X-Content-Type-Options, Referrer-Policy)
  • Fixed robots.txt — blocks crawlers from /admin, /filament, /log-viewer
  • Disabled Log Viewer by default — no longer accessible without explicit config
  • Disabled Boost browser logs watcher — stopped logging JS errors from every visitor to disk
  • Fixed REDIS_PASSWORD — was literal string "null", now empty
  • Fixed Session same_site — now reads from .env instead of being hardcoded
  • Fixed non-existent model importApp\Models\Article didn't exist, now aliased to WebsiteArticle
  • Removed unused traitsHasNotificationUrl and HasCommonScopes (dead code)
  • Restricted CORS headers — from wildcard ['*'] to specific allowed list
  • Rebuilt all caches — config, views, routes, opcache reset, PHP-FPM restart

Credits

  • Remco (Epicnabbo) — Core Maintainer, System Architecture
  • Kasja — Design & Themes
  • Kani — RCON & API
  • Atom Community — Testing & Feedback
Made with love for the Retro Community