Installation
Install dependencies, configure the environment, and run the application.
Pick the path that matches how comfortable you are with the terminal (command line). You do not need Git, Composer, or npm on your computer if you use the release ZIP — that package is built for typical shared hosting.
Choose your path
| Situation | What to do |
|---|---|
| I want to install on shared hosting (cPanel, Plesk, etc.) and prefer no terminal | Use Install from a release ZIP — upload, extract, open the site, finish in the web installer (/install). |
| I am developing locally or I use SSH and know Composer / npm | Use Developer install — clone the repo, install dependencies, build assets. |
Install from a release ZIP
This is the simplest path for people who only want to run NebulaCMS, not develop it. Official release archives are built in CI with PHP dependencies (vendor) and frontend assets already compiled, so you do not run composer install or npm run build on the server.
1. Download
- Open the Download page on this site. It links to the same ZIP file as the latest GitHub Release (built in CI with dependencies and a production asset build).
- Save the
nebulacms-vX.Y.Z.ziparchive (for examplenebulacms-v1.0.1.zip).
2. Upload and extract on your host
Use your host’s File Manager, FTP, or SFTP (not the terminal — a graphical app is fine):
- Upload the ZIP to your account (e.g.
public_htmlor a subfolder). - Extract the archive so you get a project folder containing
app,public,artisan, etc.
3. Point the website to the public folder
Laravel serves the site from the public directory. In your hosting control panel:
- Set the document root (or “web root”) to
.../your-project/public, or - If you cannot change the document root, ask your host’s documentation or support how to point the domain at a subfolder’s
publicfolder.
If the document root cannot be changed, you may need help from someone with server experience — this is a common Laravel requirement.
4. Create a database
In the hosting panel, create a MySQL database and a user with full access to it. Note the host, database name, username, and password — you will enter them in the installer.
5. Run the web installer (no terminal)
- Open your site in the browser (e.g.
https://example.com). - If NebulaCMS is not installed yet, you should be redirected to the installer at
/install. - Follow the steps on screen: requirements, database, site settings, admin account.
You do not need to type shell commands for this flow. The installer writes configuration, runs migrations, and creates your first user. You also do not need to copy .env.example to .env by hand before opening /install — the wizard creates .env from .env.example when it applies your settings.
After installation
- Sign in at
/admin(see Admin basics). - Scheduled posts in production still need the server cron to run Laravel’s scheduler — see Operations. That step often uses a one-line entry in the hosting panel (“Cron jobs”) rather than a full terminal.
- If media uploads fail with missing storage URLs, your host may need the
public/storagesymlink. Some panels offer a “run artisan” tool; otherwise ask support to runphp artisan storage:linkonce, or use SSH if available.
Updates and ongoing maintenance
After the site is live, plan for upgrades, caches, backups, and security the same way you would for any Laravel app. A concise checklist lives under Maintenance and updates in Operations — start there when you are moving to a new NebulaCMS version or tuning production.
When the ZIP path is not enough
You may still need a friend, agency, or hosting support if: PHP version is below 8.3, extensions are missing, document root cannot target public/, or folder permissions block storage/ and bootstrap/cache/.
Developer install (Git and build)
Use this when you contribute to the codebase, run tests, or want the latest unreleased changes from Git.
Requirements
- PHP 8.3 or newer with extensions typical for Laravel (mbstring, openssl, pdo, tokenizer, xml, ctype, json, fileinfo; BCMath recommended).
- Composer 2.x
- Node.js 20+ and npm (or pnpm/yarn if you adapt scripts)
- Database: MySQL 8+ or PostgreSQL
- Web server: PHP-FPM + Nginx/Apache, or
php artisan servefor local development
Clone and install dependencies
git clone https://github.com/AngkasaLabs/NebulaCMS nebulacms
cd nebulacms
composer install
npm install
Environment
cp .env.example .env
php artisan key:generate
Edit .env and set at minimum:
APP_NAME,APP_URL,APP_ENV,APP_DEBUGDB_CONNECTION,DB_HOST,DB_DATABASE,DB_USERNAME,DB_PASSWORDMAIL_*if you need email (verification, password reset)
Database
php artisan migrate
php artisan db:seed # optional: default roles/users if your seeders provide them
Create storage symlink for public disk uploads:
php artisan storage:link
Frontend assets
npm run build
For development with hot reload:
npm run dev
Run the application
php artisan serve
Visit APP_URL (e.g. http://localhost:8000). Register the first user or use seeded credentials if available. Alternatively use the web installer at /install if storage/installed.lock is not present.
Common issues
| Problem | Hint |
|---|---|
| 500 / blank page | Check storage/logs/laravel.log, APP_DEBUG=true locally |
| Vite manifest missing | Run npm run build or npm run dev (developer install); release ZIP includes a build |
Permission errors on storage/ or bootstrap/cache/ |
Ensure the web user can write these directories |
| Database connection refused | Verify DB_* and that the DB service is running |
| Installer does not appear | Ensure storage/installed.lock is absent and CheckInstallation middleware allows /install |
Next steps
- Start here — pick documentation by role (editor, host, or developer)
- Configuration
- Operations — scheduler for scheduled posts in production