# AtomCMS — Remco Epicnabbo Edition
Atom CMS **Modern • Fast • Self-Repairing** [![Discord](https://img.shields.io/badge/Discord-Join%20Server-5865F2?style=flat&logo=discord&logoColor=white)](https://discord.gg/pP6HyZedAj) [![Laravel](https://img.shields.io/badge/Laravel-13.x-FF2D20?style=flat&logo=laravel&logoColor=white)](https://laravel.com) [![PHP](https://img.shields.io/badge/PHP-8.5+-777BB4?style=flat&logo=php&logoColor=white)](https://php.net)
--- ## Features **Commandocentrum** — Nitro V3 one-click updater, emulator start/stop/restart, hotel alert, live monitoring, emulator logs viewer, clothing sync, notification settings, social login (Google/Discord/GitHub), staff activity log **Radio** — DJ apps, live sessions, song requests, shoutbox, leaderboard, contests **Shop** — Product catalog, virtual currency, vouchers, PayPal integration **Community** — Articles, photo gallery, leaderboard, teams, staff page, rare values, badge lottery **Client** — Nitro (HTML5), VPN/proxy checker **Users** — Public profiles, 2FA, referrals, session logs **Help** — Ticket system, FAQ, rules **Themes** — Atom (light), Dusk (dark) **Filament Admin** — Users, bans, radio, shop, articles, emulator settings/texts/catalog, chatlogs, word filters, permissions, navigation, camera --- ## Nitro V3 Update System One-click update via **Commandocentrum** → "Configureer Paths" (9 configurable paths stored in DB) → "Run Update". The script: `git pull` emulator → DB backup + SQL imports → Maven build → `git pull` Nitro_Render_V3 + Nitro-V3 → `yarn build` → sync Gamedata → cleanup old logs/backups → permissions fix → emulator restart. ### Sudoers (required for restart) ```bash 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 ``` --- ## Environment Files | File | Platform | Cache | DB | | ---- | -------- | ----- | -- | | `.env.install` | — | — | Setup guide | | `.env.example.linux` | Linux (prod) | Redis | MariaDB | | `.env.example.windows` | Windows (dev) | File | MySQL | ```bash cp .env.example.linux .env # or .windows php artisan key:generate ``` > **⚠️ XAMPP is not supported.** Extremely unsafe for production. --- ## Requirements | Component | Requirement | |-----------|-------------| | **PHP** | 8.5+ | | **Database** | MariaDB 10.6+ / MySQL 8.0+ | | **Web Server** | Nginx / Apache | | **Node.js** | 20+ | | **Yarn** | 1.22+ | | **Composer** | 2.x | --- ## Installation (Ubuntu 26.04) ```bash # ───────────────────────────────────────────────── # 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 (set root password) # ───────────────────────────────────────────────── sudo mysql << EOF ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_root_password'; FLUSH PRIVILEGES; EOF # ───────────────────────────────────────────────── # 5. Clone the project # ───────────────────────────────────────────────── git clone https://your-gitea-server/remco/Atomcms-edit.git /var/www/atomcms # Or via SSH: git clone ssh://git@your-gitea-server:8422/remco/Atomcms-edit.git /var/www/atomcms cd /var/www/atomcms # ───────────────────────────────────────────────── # 6. Configure environment # ───────────────────────────────────────────────── cp .env.example.linux .env # !! EDIT .env FIRST !! — set DB_PASSWORD, APP_URL, SESSION_DOMAIN, etc. nano .env php artisan key:generate # ───────────────────────────────────────────────── # 7. Create database & user # ───────────────────────────────────────────────── sudo mysql << EOF CREATE DATABASE IF NOT EXISTS habbo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER IF NOT EXISTS 'cms'@'localhost' IDENTIFIED BY 'your_db_password'; GRANT ALL PRIVILEGES ON habbo.* TO 'cms'@'localhost'; FLUSH PRIVILEGES; EOF # ───────────────────────────────────────────────── # 8. Install dependencies # ───────────────────────────────────────────────── composer install --no-dev --optimize-autoloader yarn install # ───────────────────────────────────────────────── # 9. Migrate, seed & build # ───────────────────────────────────────────────── php artisan migrate --seed yarn build:all # ───────────────────────────────────────────────── # 10. Permissions # ───────────────────────────────────────────────── sudo chown -R www-data:www-data storage bootstrap/cache public/build sudo chmod -R 775 storage bootstrap/cache # ───────────────────────────────────────────────── # 11. Start Redis # ───────────────────────────────────────────────── sudo systemctl enable --now redis-server # ───────────────────────────────────────────────── # 12. Configure PHP (tune for production) # ───────────────────────────────────────────────── 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 ``` ### Nginx config (`/etc/nginx/sites-available/atomcms`) ```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 gzip on; gzip_types text/plain text/css application/json application/javascript text/xml image/svg+xml; gzip_vary on; gzip_min_length 1024; 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; } # Block hidden files location ~ /\.(?!well-known).* { deny all; } # Block sensitive files location ~ /(\.env|\.git|composer\.(json|lock)|package\.json|yarn\.lock) { deny all; } } ``` ```bash # Enable site & restart services 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 # ───────────────────────────────────────────────── # Optional: Firewall # ───────────────────────────────────────────────── sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw --force enable # ───────────────────────────────────────────────── # Optional: SSL via Certbot # ───────────────────────────────────────────────── sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d your-domain.com # ───────────────────────────────────────────────── # Verify everything works # ───────────────────────────────────────────────── curl -I http://your-domain.com # Expected: HTTP/2 200 or 302 # Visit https://your-domain.com in your browser ``` --- ## Yarn Scripts ```bash yarn build:all # Build all themes yarn build:atom # Atom theme yarn build:dusk # Dusk theme yarn dev # Vite dev server yarn lint # Check JS/Vue yarn lint:fix # Fix JS/Vue yarn format # Format everything yarn clean # Clear Vite cache yarn rebuild # Clean + install + build ``` --- ## Tech Stack Laravel 13 · React 19 + Alpine.js · Vite 8 · TailwindCSS 4 · Filament 5 · MariaDB/MySQL --- ## Credits **Remco (Epicnabbo)** — Core Maintainer · **Kasja** — Design & Themes · **Kani** — RCON & API · **Atom Community** — Testing & Feedback
Made with love for the Retro Community