Requirements & Installation
Everything you need to get Deprixa Plus running on your server.
2.1 Server Requirements
Deprixa Plus requires a standard LEMP or LAMP stack. The following table lists minimum and recommended specifications for a production deployment.
Core Requirements
| Requirement | Minimum | Recommended |
|---|---|---|
| PHP | 8.2+ | 8.3+ |
| MySQL | 8.0+ | 8.0+ |
| Node.js | 18+ | 20 LTS |
| Web Server | Apache 2.4+ or Nginx | |
| RAM | 512 MB | 1 GB+ |
| Disk Space | 500 MB | 2 GB+ |
Node.js Is Build-Only
Node.js is required only to compile frontend assets (npm run build). It is not needed at runtime in production if you use the pre-built assets included in the release ZIP.
Required PHP Extensions
| Extension | Purpose |
|---|---|
| PDO + pdo_mysql | MySQL database connectivity |
| OpenSSL | Encryption and secure connections |
| cURL | HTTP requests (payment gateways, APIs) |
| Zip | Software updates and file handling |
| Mbstring | Multi-byte string processing |
| GD or Imagick | Image processing (logos, labels) |
| Fileinfo | MIME type detection for uploads |
| BCMath | Precise financial calculations |
Additional Requirements
- mod_rewrite (Apache) or try_files (Nginx) — required for clean URL routing.
- Composer 2.x — PHP dependency manager, required for installation.
Optional System Binaries
Not required to install or run Deprixa Plus. If present on the server, the invoice parser can extract text from uploaded PDF/image invoices automatically; if absent, that step is skipped without errors and the invoice can still be processed manually.
| Binary | Purpose |
|---|---|
pdftotext (poppler-utils) | Extracts text from PDF invoices for automatic parsing |
tesseract | OCR text extraction from scanned/image invoices |
2.2 Shared Hosting / VPS / cPanel
Deprixa Plus can be deployed on a variety of hosting environments. Here is a quick guide for the most common setups.
cPanel / Shared Hosting
If your hosting provider offers cPanel with SSH access and PHP 8.2+, you can run Deprixa Plus on shared hosting.
- Upload the ZIP file to your account via File Manager or SFTP.
- Extract the contents into
public_html(for the primary domain) or into a subdirectory and point a subdomain to it (e.g.,app.yourdomain.com→public_html/deprixa-plus/public). - Create a MySQL database and user via cPanel → MySQL Databases. Grant all privileges to the user on that database.
- Use SSH (Terminal in cPanel) to run
composer installand proceed with the installation wizard.
Application Outside public_html (Recommended for Shared Hosting)
For better security you can keep the Laravel application outside the web root and serve only its public/ directory. Choose ONE of these options — never maintain two copies of the build by hand:
- Symlink (preferred): place the app in
~/deprixa-plusand makepublic_htmla symlink to~/deprixa-plus/public:ln -s ~/deprixa-plus/public ~/public_html. Everything (assets, updates, plugins) keeps working with zero extra configuration. - Document root: if your panel allows it, point the domain's document root directly to
~/deprixa-plus/public. - Separate web root (
APP_PUBLIC_PATH): if you must copy the contents ofpublic/intopublic_html(no symlinks allowed), tell the application where its real web root lives by adding this line to your.env:With this set, the asset manifest is read fromAPP_PUBLIC_PATH=/home/youruser/public_htmlpublic_html, and software updates and plugin installs write their public assets there automatically — you will never need to copy the build manually again.
VPS (DigitalOcean, Linode, Hetzner, AWS EC2)
A VPS gives you full control and is the recommended environment for production. A basic Nginx configuration:
server {
listen 80;
server_name yourdomain.com;
root /var/www/deprixa-plus/public;
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;
}
location ~ /\.(?!well-known) {
deny all;
}
}
After configuring Nginx, secure your site with a free SSL certificate:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
Shared Hosting Limitations
Some shared hosting providers restrict PHP versions, disable required extensions, or block SSH access. Verify that your host supports PHP 8.2+, Composer, and all required extensions before purchasing. If in doubt, use a VPS.
2.3 Step-by-Step Installation Wizard
Deprixa Plus includes a built-in installation wizard that guides you through the entire setup process. Follow these five steps in order.
-
1
Upload & Extract
Upload the Deprixa Plus ZIP file to your server and extract it into your web root directory. After extraction, set the correct permissions on writable directories:
bashchmod -R 775 storage bootstrap/cache -
2
Welcome & Requirements Check
Open your browser and navigate to
yourdomain.com/install. The wizard will automatically check your PHP version, required extensions, and folder permissions. All checks must pass before you can proceed to the next step. -
3
Database Configuration
Enter your MySQL connection details:
- Host — usually
127.0.0.1orlocalhost - Port — default is
3306 - Database Name — the empty database you created
- Username and Password
Click "Test Connection" to verify. Then enter your company name and email address. Click "Setup Database" — the wizard imports the database schema and runs all migrations automatically.
- Host — usually
-
4
Admin Account
Create your super-admin account by entering your name, email, and a strong password. This will be your main login to manage the entire platform.
-
5
Preferences
Configure your initial system preferences:
- Language — English or Spanish
- Timezone — select your local timezone
- Currency — default currency for invoices and rates
- Date Format — choose your preferred display format
- Weight Unit — kg or lb
- Dimension Unit — cm or in
Optionally, check "Load demo data" to populate the system with sample shipments, clients, and rates for testing. Click "Finish" — installation is complete and you will be redirected to the login page.
2.4 Cron Job Setup
Critical: Cron Jobs Are Required
Without cron jobs, subscriptions won't renew, logs won't be purged, and update notifications won't appear. You must configure the cron entry below for the system to function correctly.
Add the following cron entry to your server. This single entry runs Laravel's task scheduler every minute, which then dispatches individual tasks at their configured intervals.
* * * * * cd /path-to-project && php artisan schedule:run >> /dev/null 2>&1
Scheduled Tasks
| Task | Frequency | What It Does |
|---|---|---|
| SaaS subscription check | Daily at 01:00 | Validates active subscriptions, enforces grace periods, and triggers renewal charges |
| Driver location purge | Daily at 02:00 | Removes stale GPS location records older than the configured retention period |
| Shipment history purge | Weekly (Monday 03:30) | Archives and removes old shipment history entries to keep the database lean |
| Audit log purge | Monthly (1st at 04:00) | Prunes audit log entries older than the configured retention window |
| Update check | Twice daily (08:00 & 20:00) | Checks for new software versions and displays a notification in Settings if available |
| Plugin license check | Weekly (Monday 05:00) | Validates installed plugin licenses against the marketplace |
| System integrity | Every 4 hours | Verifies critical file checksums, directory permissions, and storage symlink health |
cPanel Setup
In cPanel, go to Cron Jobs (under Advanced). Set the interval to "Once Per Minute (* * * * *)" and paste the command:
cd /home/yourusername/public_html && php artisan schedule:run >> /dev/null 2>&1
VPS Setup
On a VPS, edit the crontab for the web server user:
sudo crontab -u www-data -e
# Add this line at the bottom:
* * * * * cd /var/www/deprixa-plus && php artisan schedule:run >> /dev/null 2>&1
2.5 Post-Install Checklist
After completing the installation wizard, go through this checklist to ensure your system is production-ready.
- Set
APP_DEBUG=falsein your.envfile - Set
APP_ENV=productionin your.envfile - Configure SMTP for email delivery — go to Settings → Notifications
- Upload your company logo — go to Settings → Branding
- Set your company information — go to Settings → Company Profile
- Create at least one branch — go to Settings → Branches
- Configure at least one rate zone and rate card — go to Logistics → Rates
- Set up cron jobs (see Section 2.4 above)
- Create the storage symlink:
bash
php artisan storage:link - Test the system: create a shipment, assign it to a driver, and verify it appears on the public tracking page
2.6 Updating to a New Version
Deprixa Plus includes a built-in update system accessible from the admin panel.
- Go to Settings → Updates in the admin panel.
- The system checks for new versions automatically (twice daily via the scheduled task). You can also click "Check Now" to force an immediate check.
- If a new version is available, review the changelog and click "Apply Update". The system will download the update, back up critical files, and apply any new database migrations.
Always Backup Before Updating
Before applying any update, always create a full backup of your database and files. While the updater creates automatic backups, having your own manual backup is strongly recommended as an additional safety net.
2.7 Common Installation Errors
If you encounter issues during or after installation, check this table for quick solutions.
| Error | Cause | Solution |
|---|---|---|
500 Server Error |
APP_KEY is missing or invalid | Run php artisan key:generate |
SQLSTATE Connection refused |
MySQL is not running or credentials are wrong | Verify your database host, port, username, and password in .env |
storage/ not writable |
Incorrect file permissions | Run chmod -R 775 storage bootstrap/cache |
Class not found |
Autoloader is out of date | Run composer dump-autoload |
Vite manifest not found |
Frontend assets have not been built | Run npm install && npm run build |
| Blank white page | PHP errors are hidden (display_errors off) | Check storage/logs/laravel.log for the actual error message |
Still Stuck?
If none of the solutions above resolve your issue, check the FAQ & Troubleshooting page or contact support with the contents of your storage/logs/laravel.log file.