Installing on cPanel or shared hosting
Installing on cPanel
You need PHP 8.4, a MySQL database, and the ability to add cron jobs. You do not need Redis, Docker, PostgreSQL or shell access to a long-running process.
1. Upload and point the document root
Upload the release bundle outside public_html, then point your domain's document root at the application's public/ directory. If your host will not let you move the document root, place the contents of public/ in public_html and update the two paths at the top of index.php.
2. Configure the database and drivers
In .env, use MySQL and the no-Redis drivers:
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=your_database
DB_USERNAME=your_user
DB_PASSWORD=your_password
CACHE_STORE=database
SESSION_DRIVER=database
QUEUE_CONNECTION=database
BROADCAST_CONNECTION=log
Leave the REDIS_* values unset. Then run the installer, which creates the schema and your first administrator.
3. Add the two cron jobs
Shared hosting cannot keep a worker running, so a cron job drains the queue instead. Name every queue — a bare queue:work only reads the default queue and will silently leave accounting and CRM jobs unprocessed:
# every minute — background jobs
* * * * * cd /home/youruser/storeconsole && php artisan queue:work --queue=default,accounting,crm-default --stop-when-empty --max-time=55 >/dev/null 2>&1
# every minute — scheduled tasks
* * * * * cd /home/youruser/storeconsole && php artisan schedule:run >/dev/null 2>&1
--stop-when-empty lets the worker exit once the queue is drained, so the job does not stack up. Horizon is not used on this setup; it requires Redis.
4. Check it
Run php artisan about. Cache, session, queue and database should all report the drivers you set above, with no Redis entry. Log in to the dashboard and confirm the queue is draining under Settings → System.
