Skip to content

Installation

Phillip Dornauer edited this page Apr 1, 2026 · 1 revision

Installation & Setup

Requirements

  • Docker & Docker Compose

That's it. Everything else runs inside the container.

Quick Start

git clone --recurse-submodules https://github.com/marblecms/demo
cd demo
cp .env.example .env
docker compose up -d
docker compose exec app php artisan migrate:fresh --seed
docker compose exec app php artisan vendor:publish --tag=marble-assets

Note: --recurse-submodules is required. The packages/marble/admin directory is a Git submodule. Without the flag it will be empty and the app won't boot.

Already cloned without the flag?

git submodule update --init

Services

Service URL
Admin panel http://localhost:8080/admin
Frontend http://localhost:8080
phpMyAdmin http://localhost:8081

Database: host db, name marble, user marble, password marble.

Default Credentials

Admin:

Email:    admin@admin
Password: admin

Portal user (frontend):

Email:    demo@demo.com
Password: demo

First Login

Open http://localhost:8080/admin and log in. The seeder creates a full demo site with navigation, blog, products, contact form, and intranet content.

Re-seeding

To wipe and start fresh:

docker compose exec app php artisan migrate:fresh --seed

Updating Assets

After pulling package updates, republish the admin CSS/JS:

docker compose exec app php artisan vendor:publish --tag=marble-assets --force
docker compose exec app php artisan view:clear

Health Check

docker compose exec app php artisan marble:doctor

This checks database tables, site configuration, blueprints, items, workflows, and field types.

Environment Variables

Key .env options specific to Marble:

Variable Default Description
MARBLE_AUTO_ROUTING true Set to false if you define custom routes in routes/web.php before Marble::routes()
MARBLE_DEBUGBAR false Show the Marble debug panel on the frontend when admin is logged in

Clone this wiki locally