You've already forked Atomcms-edit
11 KiB
Executable File
11 KiB
Executable File
AtomCMS — Remco Epicnabbo Edition
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
- 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.
- Run Update — Click "Run Update" to execute
update-Nitrov3.sh, which performs:git pullon 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 pullon Nitro_Render_V3 (with automaticyarn installifpackage.jsonchanged)git pullon Nitro-V3 (with automaticyarn installifpackage.jsonchanged)yarn buildfor 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 |
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 optimizefix in README - Fixed Dashboard navigation translation — added
Dashboardkey to Dutch Filamentresources.php - Fixed Homepage navigation label — added
Homepagetranslation tonl.json - Disabled OPcache in FPM —
99-opcache.iniset toopcache.enable=0to prevent stale cache issues
Changelog (May 26, 2026)
- Removed auto-recovery — caused race conditions by running
view:clearduring live traffic, fixedfilemtime(): stat failederrors - Fixed debug banner — now uses
config('app.debug')with proper(bool)cast, no more false positives - Added
(bool)casts to allenv()calls with boolean defaults across 6 config files (habbo, activitylog, database, filesystems, log-viewer, session) - Removed dangerous public scripts —
check_icons.phpandtest_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.jsonaccess + 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.envinstead of being hardcoded - Fixed non-existent model import —
App\Models\Articledidn't exist, now aliased toWebsiteArticle - Removed unused traits —
HasNotificationUrlandHasCommonScopes(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
