This guide is for the packaged release ZIP created with bin/build-release.sh. The release ZIP includes production Composer dependencies in vendor/ and compiled frontend assets in public/build/, so buyers on shared hosting do not need Composer or Node.js on the server.
Related documents:
Requirements #
- PHP 8.3 or newer
- MySQL 8.0+ or PostgreSQL 16+
- PHP extensions commonly required by Laravel: BCMath, Ctype, cURL, DOM, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML, ZIP
- Write access for
storage/andbootstrap/cache/ - Apache with
mod_rewriteor nginx/PHP-FPM
Shared Hosting Installation #
- Upload the release ZIP to your hosting account and extract it.
- Prefer pointing the domain document root to the
public/directory. - If your host forces the project to live directly inside
public_html, keep the default extracted structure and choose the public-html option in the installer. - Set PHP to 8.3 or newer in your hosting panel.
- Make these directories writable:
storage/andbootstrap/cache/. - Open your domain in the browser. The installer will redirect to
/installautomatically. - Complete the requirements, database, site, and admin account steps.
- After installation, log in at
/admin.
The installer writes the production .env, generates the application key, runs migrations and seeders, creates your admin account, and locks itself after completion.
If the project is installed directly inside public_html, media files are served from https://example.com/public/storage. If the domain document root points to public/, media files are served from https://example.com/storage. The installer writes this setting automatically; it can be checked later in Admin > System Health.
On locked public_html installs where the full project is uploaded into the web root, assets may need to be served from the public/ subdirectory. In that case use ASSET_URL=https://example.com/public, LIVEWIRE_ASSET_URL=https://example.com/public/vendor/livewire/livewire.js, and PUBLIC_STORAGE_URL=https://example.com/public/storage. If the domain document root points directly to public/, use ASSET_URL=https://example.com, LIVEWIRE_ASSET_URL=https://example.com/vendor/livewire/livewire.js, and PUBLIC_STORAGE_URL=https://example.com/storage.
VPS / Dedicated Server #
For nginx, start from deploy/nginx.conf.example and update:
server_name- project path
- PHP-FPM socket or host
The safest document root is always the project’s public/ directory.
Post-Install Checklist #
- Set mail credentials in the admin settings.
- Configure site name, logo, homepage, social links, cookie consent, and tracking code.
- Add map, AI, and webhook credentials only if you use those features.
- Review languages and localized URL prefixes before adding public content.
- Replace demo data and create real agents, pages, properties, and SEO metadata.
- Test contact forms, inquiry forms, favorites, property search, and admin login.
External accounts, API keys, provider billing, quotas, and provider-side setup belong to the buyer. The product package does not include paid API credits for mail, maps, AI, translation, hosting, CDN, or automation providers.
Updates #
Use Admin > License & Updates to check and install available updates.
Before any update, take a full file and database backup.
See update-guide.md for the full update checklist.
Troubleshooting #
- Blank page or HTTP 500 before install: check PHP version, missing PHP extensions, and write permissions for
storage/andbootstrap/cache/. - Styles or scripts are missing: make sure you uploaded the release ZIP, not a raw Git checkout. The release ZIP includes
public/build/. On directpublic_htmlinstalls, setASSET_URLtohttps://example.com/publicwhen assets only load from thepublic/subdirectory. - Admin login does not react: verify that Livewire assets exist under
public/vendor/livewire/and that your server routes requests to Laravel correctly. - Installer cannot save
.env: check file ownership and write permission on the project root. - Database connection fails: verify host, port, database name, username, password, and whether your hosting provider requires
localhostor a socket-specific host. - Uploaded images return 404: open Admin > System Health, check the public disk URL and run Fix storage link. On direct
public_htmlinstalls the public disk URL should end with/public/storage; on normal public document-root installs it should end with/storage.