Hosting decides how your platform feels to customers. A slow API makes the apps feel broken, a missed cron job means stuck orders, and an untested backup means a bad day becomes a disaster. This is the server setup we use for 6amMart, and it applies to 6Valley, Demandium and DriveMond too, with an extra note for DriveMond's real-time layer.
VPS, not shared hosting
You can sometimes get the admin panel running on shared hosting, but a live delivery platform needs things shared hosts restrict: reliable cron every minute, long-running queue workers, websockets (DriveMond), custom PHP settings, and outbound API calls. Use a VPS from a reputable provider, in a region close to your customers so the apps respond quickly.
Sizing: start sensibly, measure, then scale
We don't believe in one-size-fits-all numbers. Requirements depend on order volume, the number of active drivers or delivery men, catalogue size and image traffic. Our approach:
- Start with a VPS with enough RAM for PHP-FPM workers, MySQL and caching together, without swapping.
- Set up monitoring from day one: CPU, RAM, disk and response times.
- Scale vertically first, with a bigger VPS, when monitoring shows sustained pressure.
- Later, split the database onto its own server and move images to object storage or a CDN.
Upgrading a VPS is usually quick. Recovering from an overloaded server during a promotion isn't.
The software stack
- Ubuntu LTS as the operating system.
- Nginx with PHP-FPM, using the PHP version your script release requires. Apache works too, but Nginx with PHP-FPM gives you more control under load.
- MySQL 8 (or the version your docs specify), with
innodb_buffer_pool_sizetuned to your RAM. - Redis for cache and queues where your version supports it.
- Supervisor to keep queue workers, and DriveMond's websocket service, running.
- Certbot for free SSL certificates with automatic renewal.
PHP settings that matter
Raise upload_max_filesize and post_max_size so stores can upload product images and imports. Increase max_execution_time for heavy admin tasks. Set memory_limit to suit your RAM. Enable OPcache, which gives a significant speed-up for Laravel at no cost.
Cron and queues
Add the Laravel scheduler to cron, running every minute as the web user:
* * * * * cd /var/www/yourapp && php artisan schedule:run >> /dev/null 2>&1
If your version dispatches queued jobs for emails, notifications or reports, run php artisan queue:work under Supervisor, and restart the worker after each deployment. Missing cron or queue workers are the hidden cause of many "notifications don't work" and "orders stuck" tickets. See the Firebase troubleshooting guide.
DriveMond and real-time
DriveMond's live trip requests and tracking rely on a websocket service. Run it under Supervisor, serve it over SSL through Nginx as a reverse proxy, and open only the ports you need. Follow your version's docs closely. The DriveMond setup guide covers the rest.
Security basics
- SSH keys only. Disable password login and root login.
- A firewall that allows only HTTP, HTTPS, SSH and whatever your websockets need.
- Set
APP_DEBUG=falsein production. A debug page can expose credentials. - Keep the OS and PHP patched.
- Unique, strong admin passwords, with access limited to the people who need it.
- Keep the Firebase service account file and
.envout of public folders and repositories.
Backups you've actually tested
- Daily database dumps, kept for at least a couple of weeks.
- File backups for uploaded images and the
.envfile. - Store backups off the server, at a different provider or in object storage.
- Test a restore regularly on a separate server. A backup you've never restored isn't a backup.
Performance
- Run
php artisan config:cacheandroute:cacheafter deployments, where your version supports it. - Compress and resize product images. They're usually the heaviest traffic.
- Put a CDN in front of images and static assets when traffic grows.
- Watch the MySQL slow query log once you have real data.
Deployments
Deploy through Git rather than uploading zips by FTP, and keep a staging server for testing updates. Our update guide explains the full workflow.
A pre-launch server checklist
Before you announce the platform, confirm each item:
- SSL is valid on every domain the apps and admin panel use, and auto-renewal is tested.
- Cron runs every minute. Check the scheduler log or a test job.
- Queue workers, and websockets for DriveMond, are running under Supervisor and restart after a reboot.
APP_DEBUGis off and error logs are being written somewhere you watch.- A database and file backup exists off-server, and you've restored it once.
- Monitoring alerts reach a real person by email or messaging.
- The firewall only allows the ports you need.
How we help
Server setup, SSL, cron, queues, backups and monitoring are part of every installation we do. Our Care plan covers server monitoring and backups after launch. See the Packages section or our grocery delivery solution.
Questions
What are the server requirements for 6amMart?
A PHP version and extensions matching your release, MySQL, URL rewriting, writable storage folders, cron and SSL. A VPS is strongly recommended for live use.
How much RAM does 6amMart need?
It depends on order volume and traffic. Start with enough RAM for PHP-FPM, MySQL and cache together, monitor usage, and upgrade when you see sustained pressure.
Can I host the apps and admin panel on the same server?
The mobile apps aren't hosted; they're installed from the stores. The admin panel, API and optional website run on your server.
Do I need Redis?
It isn't always required, but Redis for cache and queues improves performance and reliability on busy platforms where your version supports it.