Installation
Laravix is a self-hosted, multi-tenant CMS built on Laravel and Filament. This guide takes you from an empty directory to a running admin panel using the official distribution — no Node.js or asset building required.
Requirements
- PHP 8.4 with the
fileinfoextension (andgdif you want automatic image resizing) - Composer
- A database: SQLite (zero setup, recommended to start), MySQL/MariaDB or PostgreSQL
- A web server pointing at
public/(orphp artisan servefor local work)
If you'd rather not install PHP, a database and services yourself, the installer can put everything in containers for you — see Docker development environment.
1. Create the project
composer create-project laravix/laravix my-site
cd my-site
This scaffolds a Laravel application with the laravix/cms package installed and dependencies resolved.
2. Run the installer
php artisan laravix:install
The interactive installer walks you through everything:
- How to run Laravix — the first question offers Docker (database and services in containers, the default) or local services (you already have a database running). Pick local services to continue with the steps below; pick Docker and the installer takes over from Docker development environment. This question is skipped when a
compose.yamlalready exists. - Database — if the configured database isn't reachable, it asks you to pick SQLite, MySQL/MariaDB or PostgreSQL and writes the credentials into
.envfor you. - Migrations, storage and themes — runs migrations,
storage:linkandlaravix:theme:link. - Assets and theme — publishes the admin assets, the config file, the overridable views and Filament's assets, then publishes the default theme into
themes/default. - First site — asks for a site name and domain. The site is created in theme mode with the default theme.
- Super admin — asks for a name, email and password (minimum 8 characters) for the account you'll log in with.
Expected result: a summary box with your site URL, the admin panel URL and your login email.
Installing with Docker
If you don't want to set up PHP extensions, a database and search yourself, run:
php artisan laravix:install --docker
The installer generates a compose.yaml, starts the containers and then runs the rest of the installation inside the container, so you end up at the same summary box. Service selection, ports and the individual flags are covered in Docker development environment.
Non-interactive installation
Every prompt has a flag, so the installer also works in scripts:
php artisan laravix:install \
--site-name="My Site" \
--domain=my-site.test \
--admin-name="Jane Doe" \
[email protected] \
--admin-password=secret-password \
--no-interaction
With --no-interaction the installer never asks how to run Laravix — it uses your local services and expects a working database connection already configured in .env. If it can't connect, it stops with an error instead of prompting. To install into containers non-interactively, add --docker together with the service flags.
If sites already exist, the installer refuses to run — add --force to run it anyway.
3. Log in
Open https://your-domain/admin (or http://localhost:8000/admin with php artisan serve) and log in with the super admin account. The public website answers on the domain you entered for the site — Laravix resolves the site by the request's hostname, so the domain in the admin must match the address you're browsing.
Tip: For local development, use a domain like
my-site.testthat points to your machine and enter exactly that as the site domain.
Troubleshooting
The frontend shows a 404 for every page. The request hostname doesn't match any site's Domain. Check the site's domain in the admin (top-left switcher → your site) or in Sites as a super admin.
Images upload but no resized variants appear. Variants are generated by a queued job. Either run a queue worker (php artisan queue:work) or set QUEUE_CONNECTION=sync for small sites. See Deployment.
Scheduled content never publishes. The Laravel scheduler isn't running. Add the cron entry from Deployment.
Theme styles don't load. The theme's dist/ directory isn't exposed under public/themes. Run php artisan laravix:theme:link. See Theme Structure.
Related articles
- Docker development environment — running Laravix and its services in containers
- Deployment — production checklist (cron, queue, cache)
- Local Development (Monorepo) — contributing to Laravix itself
- Upgrading