01 System Requirements
DevPremier CRM v3.0 runs on Laravel 13 and requires a modern PHP stack. Use this checklist before you deploy.
Minimum server stack
- PHP 8.3+ (8.4 supported) with extensions: BCMath, Ctype, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML
- MySQL 8+ or MariaDB 10.6+ (InnoDB)
- Nginx or Apache 2.x
- Composer 2.x on the server (or run locally before upload)
Document root
Point the web server to public_html/ inside the CRM project — not Laravel’s default public/ folder.
Writable paths
bootstrap/cachestorage/app,storage/framework,storage/logs
Recommended for production
- Linux VPS or cloud instance — primary supported target
- Cron — every minute for scheduler and queued mail
- HTTPS — required for purchase-code verification on public domains
- SMTP — outbound email (can be configured after install)
Shared hosting
Shared hosting is not recommended for production v3.0. See Shared Hosting Installation below for limitations.
02 Installation Guide
DevPremier CRM v3.0 ships with a guided 3-step installation wizard.
Before you begin
- Download from CodeCanyon and unzip
main_file_v3.x.zip. - Have your Envato purchase code ready.
- Create an empty MySQL database and user with full privileges.
- SSH access to a Linux server (or use the Docker guide).
Deploy files
- Upload the CRM source to your server (e.g.
/var/www/crm). - Set the web server document root to
public_html/. - Run
composer install --no-dev --optimize-autoloaderif vendor is not bundled. - Visit your domain in a browser to open the wizard.
Wizard — Step 1: Welcome
Review the overview and click Begin installation.
Wizard — Step 2: Configure
- License — Enter purchase code and click Verify purchase code. Local domains (
localhost,127.0.0.1,*.local) skip domain locking. - Server — PHP version, extensions, and directory permissions check.
- Application — App name, URL,
productionenvironment,APP_DEBUG=false. - Database — Host, port, database, user, password. Use
127.0.0.1instead oflocalhost. Click Test connection. - Email (optional) — SMTP can be skipped; configure later under Office → Mail.
Click Save & continue to run migrations, seed data, and write .env.
Wizard — Step 3: Finish
Create your admin account, then click Finish installation.
03 Server Configuration
Configure your Linux web server to serve DevPremier CRM from public_html/.
Nginx example
Create a server block pointing to /var/www/crm/public_html:
server {
listen 80;
server_name crm.example.com;
root /var/www/crm/public_html;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
client_max_body_size 64M;
}Apache
Set DocumentRoot to public_html and ensure mod_rewrite is enabled. Laravel’s public_html/.htaccess handles front-controller routing.
PHP settings
upload_max_filesizeandpost_max_size— at least 32M for imports and attachments.memory_limit— 256M or higher for large exports.max_execution_time— 120+ for long imports.
File permissions
Web server user (e.g. www-data) must write to storage/ and bootstrap/cache/. After deploy:
chown -R www-data:www-data storage bootstrap/cache
chmod -R ug+rwX storage bootstrap/cache
04 Docker Installation
DevPremier CRM includes a docker-compose.yml for local development and staging. The container serves the app on port 8082 by default.
Prerequisites
- Docker Desktop or Docker Engine + Compose
- MySQL running on the host (or another container) reachable at
host.docker.internal
Quick start
- Copy
example.envto.envin the CRM root. - Set
DB_HOST=host.docker.internal, database name, user, and password. - Set
APP_URLtohttp://localhost:8082(or your mapped port). - From the CRM directory run:
docker compose up -d --build. - Open
http://localhost:8082and complete the installation wizard.
Database host in the wizard
When the install wizard asks for database host, use host.docker.internal (macOS/Windows Docker Desktop) or your host machine IP on Linux.
What the container runs
- PHP-FPM + Nginx inside the image
- Cron service with project
crontabsfile composer installon container start viascript.shphp artisan storage:linkfor public storage
Production note
For production, prefer a managed Linux VPS with Nginx and PHP-FPM natively installed. Docker is ideal for local dev, CI, and staging.
05 Shared Hosting Installation
DevPremier CRM v3.0 is designed for Linux VPS and cloud servers. Shared hosting is not recommended for production because of PHP version limits, missing SSH/cron, and restricted queue/redis support.
When shared hosting might work
- Short-term evaluation or demo on a host that offers PHP 8.3+, MySQL 8+, and SSH.
- Hosts that allow cron every minute and custom document roots.
If you must use shared hosting
- Confirm PHP 8.3+ and required extensions in the control panel.
- Upload files via SFTP; set document root to
public_html/. - Create MySQL database and import nothing — let the wizard migrate.
- Run
composer installlocally and uploadvendor/if SSH Composer is unavailable. - Add cron via cPanel:
* * * * * php /home/user/crm/artisan schedule:run. - Enable HTTPS through your host’s Let’s Encrypt tool.
Common blockers
- PHP below 8.3 — upgrade plan or switch to VPS.
- No cron — queued emails and reminders will not send.
- No Redis — use default
databasequeue (slower under load). - open_basedir restrictions — may block storage writes; contact host or migrate to VPS.
Recommendation
For CodeCanyon production use, deploy on DigitalOcean, Hetzner, Linode, AWS, GCP, or Azure — see the Installation Guide hosting links.
06 Upgrade Guide
Follow this process when updating DevPremier CRM to a new CodeCanyon release.
- Back up — full database dump and copy of
.env,storage/appuploads, and any custom code. - Download the latest zip from your CodeCanyon → Downloads page.
- Put the CRM in maintenance mode if you use it:
php artisan down. - Replace application files on the server. Do not overwrite
.envor customer uploads instorage/app/public. - Run
composer install --no-dev --optimize-autoloaderifcomposer.jsonchanged. - Run
php artisan migrate --forcewhen release notes require it. - Clear caches:
php artisan config:clear && php artisan cache:clear && php artisan view:clear. - Run
php artisan storage:linkif release notes mention storage changes. - Smoke-test login, leads, invoices, and cron; then
php artisan up.
In-app updater
If your build includes Office → CRM Update, you can upload the zip through the admin UI. Always back up first — the UI updater performs the same file swap and migration steps.
07 Backup & Restore
Back up before every upgrade and on a regular schedule in production.
Database backup
MySQL/MariaDB dump:
mysqldump -u USER -p DATABASE_NAME > devpremier-backup-$(date +%F).sqlStore dumps off-server (S3, backup VPS, or encrypted archive).
Files to include
.env— secrets and environment configstorage/app/public— uploaded media and customer filesstorage/app/INSTALLED— install marker (optional)- Any custom themes or
app/overrides you added
You typically do not need to archive vendor/ — restore with composer install instead.
Restore procedure
- Deploy a matching CRM version (same major release as the backup).
- Restore
.envand file uploads. - Import SQL:
mysql -u USER -p DATABASE_NAME < backup.sql. - Run
php artisan config:clearand verifystorage:link.
Automation
Schedule nightly mysqldump and rsync of storage/app/public via cron on your VPS.
08 Multi-language Setup
DevPremier CRM supports multiple UI languages for staff and stores per-contact language preferences.
Built-in UI languages
Staff can switch language from the top navigation dropdown. Configured locales in config/constants.php:
- EN — English (default)
- ZH — Chinese
- HI — Hindi
- FR — French
- ES — Spanish
- AR — Arabic
Selection is stored in session and cookie (applocale) via GET /lang?lang_code=XX.
Translation files
- JSON strings:
resources/lang/en.json(and parallel files per locale if added). - Use Laravel
__()helpers in Blade — most admin UI strings are translatable.
Add or customize a language
- Copy
resources/lang/en.jsontoresources/lang/{locale}.json(e.g.de.json). - Translate string values; keep keys identical.
- Add the locale code to
LOCALESinconfig/constants.php. - Clear config cache:
php artisan config:clear.
Contact / lead language
Set Preferred language on lead and customer records for segmentation and future localized communications.
09 HTTPS Configuration
HTTPS is required for production purchase-code verification on public domains and protects staff login, API tokens, and client portal sessions.
Let’s Encrypt (Certbot + Nginx)
- Point DNS A record for
crm.example.comto your server IP. - Install Certbot:
sudo apt install certbot python3-certbot-nginx. - Run:
sudo certbot --nginx -d crm.example.com. - Confirm auto-renewal:
sudo certbot renew --dry-run.
Application URL
Set in .env:
APP_URL=https://crm.example.com
APP_SYSTEM=httpsRun php artisan config:clear after changes.
Force HTTPS
Terminate TLS at Nginx/Apache or your load balancer. If behind a reverse proxy, configure trusted proxies in Laravel so URLs generate with https://.
Mixed content
If CSS or assets load over HTTP, set APP_URL correctly and enable HTTPS on your CDN or asset host.
10 Cron Jobs
Cron drives the Laravel scheduler — queued emails, reminders, and other timed tasks. Without it, mail sits in the queue and reminders never fire.
Required cron entry
Add to the www-data or deploy user crontab (crontab -e):
* * * * * cd /path/to/your-crm && php artisan schedule:run >> /dev/null 2>&1Replace /path/to/your-crm with the project root (where artisan lives).
Enable in CRM
After cron is active on the server, open Office → Mail Settings and enable Turn on CronJob so the CRM processes the email queue.
Verify
- Wait 2–3 minutes after adding cron.
- Queue a test email (proposal or invoice).
- Check
storage/logs/laravel.logfor scheduler errors.
Docker
The CRM Docker image starts the cron service and loads crontabs from the project root automatically.
11 Queue Configuration
Outbound email and some background work use Laravel’s queue. DevPremier CRM defaults to the database driver — no Redis required for small and medium deployments.
Default (database queue)
In .env:
QUEUE_CONNECTION=databaseJobs are stored in the jobs table. The scheduler (cron) processes them when Turn on CronJob is enabled.
Redis (optional, higher volume)
- Install Redis on your server.
- Set
QUEUE_CONNECTION=redisand configureREDIS_HOST,REDIS_PORTin.env. - Run a queue worker via Supervisor, e.g.
php artisan queue:work --sleep=3 --tries=3.
Redis reduces database load when sending high volumes of email or running many queued jobs.
Sync driver (development only)
QUEUE_CONNECTION=sync runs jobs immediately — useful locally; do not use in production under load.
12 Email Configuration
Configure SMTP so proposals, estimates, invoices, and notifications reach customers.
During installation
The wizard Email (optional) panel accepts SMTP host, port, username, password, and encryption. You can skip and configure later.
After installation — Office → Mail
Open Office → Mail Settings to update:
- SMTP host, port, username, password, encryption (TLS recommended)
- From name and address shown to recipients
- Turn on CronJob — required for queued delivery
.env reference
MAIL_MAILER=smtp
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USERNAME=your-user
MAIL_PASSWORD=your-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@example.com
MAIL_FROM_NAME="${APP_NAME}"Popular providers
- Amazon SES, SendGrid, Mailgun, Postmark — use their SMTP credentials.
- Mailtrap — safe inbox for staging (do not use in production).
Test delivery
- Save mail settings and enable cron.
- Email yourself a test invoice or proposal.
- If mail fails, check
storage/logs/laravel.logand provider SMTP logs.
Thanks for reading DevPremier CRM docs
Browse all guides