9.9 KiB
Executable File
AtomCMS — Remco Epicnabbo Edition
A modern Habbo retro CMS powered by Laravel 13, Filament 5, React 19, and Nitro. Forked and maintained by Remco (Epicnabbo).
What's New in V3
| Feature | Description |
|---|---|
| Commandocentrum | Central admin dashboard with one-click Nitro V3 updater |
| Nitro V3 Update System | Auto-update emulator, Nitro client & renderer from the HK |
| Configurable Paths | 9 paths fully adjustable via HK UI (no SSH needed) |
| Emulator Control | Start, stop, restart & check status from the admin panel |
| Live Monitoring | Online users, emulator status, DB status, server load, diagnostics |
| Hotel Alerts | Send messages to all online users in real-time |
| Emulator Log Viewer | Live logs directly in the browser |
| Clothing Sync | Sync catalog clothing from FigureMap with one click |
| Social Login | OAuth login via Google, Discord & GitHub |
| Notification Settings | Email & Discord webhook alerts with rank filtering |
| Staff Activity Log | Full audit trail of all housekeeping actions |
| Bulletproof Installation | 12-step guide for Ubuntu 26.04 with Redis, SSL, firewall & PHP tuning |
| PHP 8.5 + Ubuntu 26.04 | Fully compatible with the latest PHP and Ubuntu LTS |
| Dual .env System | Separate configs for Linux (Redis) and Windows (file-based) |
| XAMPP Blocked | Explicitly unsupported — we prioritise security |
Quick Start
git clone https://your-gitea-server/remco/Atomcms-edit.git /var/www/atomcms
cd /var/www/atomcms
cp .env.example.linux .env
php artisan key:generate
# Edit .env with your DB credentials, then:
composer install --no-dev --optimize-autoloader
php artisan migrate --seed
yarn install && yarn build:all
Full installation guide →
.env.installor scroll down to Installation
Features
| Module | What it does |
|---|---|
| Commandocentrum | Nitro V3 one-click updater, emulator start/stop/restart, hotel alerts, live monitoring, log viewer, clothing sync, social login (Google/Discord/GitHub) |
| Radio | DJ apps, live sessions, song requests, shoutbox, leaderboard, contests |
| Shop | Product catalog, virtual currency, vouchers, PayPal |
| Community | Articles, photo gallery, leaderboard, teams, rare values, badge lottery |
| Users | Public profiles, 2FA, referrals, session logs |
| Help | Ticket system, FAQ, rules |
| Filament Admin | Users, bans, radio, shop, articles, emulator settings/texts/catalog, chatlogs, word filters, permissions, navigation |
| Themes | Atom (light) & Dusk (dark) |
Nitro V3 Update
One-click update from Commandocentrum → "Configureer Paths" → "Run Update".
What it does: git pull emulator → DB backup → SQL imports → Maven build → git pull Nitro_Render_V3 + Nitro-V3 → yarn build → sync Gamedata → cleanup → restart emulator.
Configurable paths (9 settings, stored in DB):
| Setting | Default |
|---|---|
| Emulator map | /var/www/emulator |
| Service naam | emulator |
| Database | habbo |
| SQL updates | {emulator}/Database Updates |
| Backups | {emulator}/Database Updates/backups |
| Gamedata | /var/www/Gamedata/config |
| Nitro client | {nitro}/public/configuration |
| Nitro-V3 bron | /var/www/Nitro-V3 |
| Nitro Render V3 | /var/www/Nitro_Render_V3 |
Sudoers – passwordless systemctl + chown for the web UI:
✅ Completely safe. Each command is pinned to a specific binary and (where possible) a specific path. The web user (
www-data) cannot run arbitrary shell commands — only these exact operations. No shell, no arbitrary binary, no risk.
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 -R www-data\:www-data /var/www/*
EOF
sudo chmod 440 /etc/sudoers.d/www-data
| Entry | Why it's needed |
|---|---|
systemctl restart emulator |
One-click emulator restart from the admin panel |
systemctl status emulator |
Live emulator status in the dashboard |
chown -R www-data:www-data /var/www/* |
Fix permissions after the updater clones/builds files as root |
Requirements
| Component | Version |
|---|---|
| PHP | 8.5+ |
| Database | MariaDB 10.6+ or MySQL 8.0+ |
| Web Server | Nginx or Apache |
| Node.js | 20+ |
| Yarn | 1.22+ |
| Composer | 2.x |
| Redis | Recommended (Linux) |
Environment Files
| File | Use | Cache | DB |
|---|---|---|---|
.env.install |
Step-by-step setup guide | — | — |
.env.example.linux |
Linux production | Redis | MariaDB |
.env.example.windows |
Windows development | File | MySQL |
cp .env.example.linux .env
php artisan key:generate
⚠️ XAMPP is not supported. Extremely unsafe for production.
Installation (Ubuntu 26.04)
# 1. System dependencies
sudo apt update
sudo apt install -y git curl wget unzip nginx mariadb-server redis-server \
php8.5 php8.5-{cli,fpm,mysql,xml,mbstring,curl,zip,bcmath,gd,sockets,intl} \
build-essential
# 2. Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
# 3. 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. Secure MariaDB
sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_root_password'; FLUSH PRIVILEGES;"
# 5. Clone
git clone https://your-gitea-server/remco/Atomcms-edit.git /var/www/atomcms
cd /var/www/atomcms
# 6. Configure
cp .env.example.linux .env
# EDIT .env first: set DB_PASSWORD, APP_URL, SESSION_DOMAIN
nano .env
php artisan key:generate
# 7. Create database + user
sudo mysql -e "CREATE DATABASE IF NOT EXISTS habbo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER IF NOT EXISTS 'cms'@'localhost' IDENTIFIED BY 'your_db_password';"
sudo mysql -e "GRANT ALL ON habbo.* TO 'cms'@'localhost'; FLUSH PRIVILEGES;"
# 8. Install PHP & JS deps
composer install --no-dev --optimize-autoloader
yarn install
# 9. Migrate, seed & cache
php artisan migrate --seed
php artisan optimize
php artisan filament:optimize
# 10. Build frontend
yarn build:all
# 11. Permissions
sudo chown -R www-data:www-data storage bootstrap/cache public/build
sudo chmod -R 775 storage bootstrap/cache
# 12. Sudoers (for the Nitro updater — see section above)
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 -R www-data\:www-data /var/www/*
EOF
sudo chmod 440 /etc/sudoers.d/www-data
# 13. Start services
sudo systemctl enable --now redis-server
# 14. PHP tuning
sudo sed -i 's/upload_max_filesize = .*/upload_max_filesize = 64M/' /etc/php/8.5/fpm/php.ini
sudo sed -i 's/post_max_size = .*/post_max_size = 64M/' /etc/php/8.5/fpm/php.ini
sudo sed -i 's/memory_limit = .*/memory_limit = 256M/' /etc/php/8.5/fpm/php.ini
sudo sed -i 's/max_execution_time = .*/max_execution_time = 300/' /etc/php/8.5/fpm/php.ini
# 16. Restart & verify
sudo systemctl restart php8.5-fpm redis-server nginx
php artisan about # should show green "Application" line
Nginx
server {
listen 80;
server_name your-domain.com;
root /var/www/atomcms/public;
index index.php;
charset utf-8;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml image/svg+xml;
gzip_vary on;
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* { deny all; }
location ~ /(\.env|\.git|composer\.(json|lock)) { 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.5-fpm redis-server
sudo ufw allow 80/tcp && sudo ufw allow 443/tcp && sudo ufw --force enable
SSL (recommended)
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
Yarn Scripts
yarn build:all # Build all themes
yarn build:atom # Atom theme only
yarn build:dusk # Dusk theme only
yarn dev # Vite dev server
yarn lint # Lint JS/Vue
yarn format # Format code
Tech Stack
Laravel 13 · React 19 + Alpine.js · Vite 8 · TailwindCSS 4 · Filament 5 · MariaDB/MySQL · Redis
Support
- Discord: Join our server
- Issues: Report bugs via the project issue tracker
- Contributions: Fork & submit merge requests — all help is welcome!
Credits
Remco (Epicnabbo) — Core Maintainer · Kasja — Design & Themes · Kani — RCON & API · Atom Community — Testing & Feedback