Getting Started
Installation guide and first-run configuration for Deprixa Plus on your server.
System Requirements
Deprixa Plus requires a standard LEMP or LAMP stack. The following are minimum and recommended specifications.
| Component | Minimum | Recommended | Notes |
|---|---|---|---|
| PHP | 8.2 | 8.3+ | Extensions required: BCMath, Ctype, cURL, DOM, Fileinfo, JSON, Mbstring, OpenSSL, PCRE, PDO, Tokenizer, XML, GD or Imagick |
| Web Server | Nginx 1.18 / Apache 2.4 | Nginx 1.24+ | Nginx is strongly recommended for production. Apache requires mod_rewrite. |
| Database | MySQL 8.0 | MySQL 8.0+ | MariaDB 10.6+ is also supported. PostgreSQL is not tested. |
| Node.js | 18 LTS | 20 LTS | Required only for building frontend assets. Not needed in production if you use pre-built assets. |
| Composer | 2.5 | 2.6+ | PHP package manager. |
| Redis | Optional | 7.x (strongly recommended) | Used for cache, sessions, and job queues. Without Redis, file-based drivers are used which are slower under load. |
| RAM | 1 GB | 4 GB+ | For small teams. Larger installations benefit from 8+ GB. |
| Storage | 5 GB | 50+ GB | Depends on shipment label volume and file uploads (logos, employee documents). |
| OS | Ubuntu 20.04 LTS | Ubuntu 22.04 / 24.04 LTS | macOS and Windows WSL2 are supported for local development only. Production should use Linux. |
Supported Hosting Environments
Deprixa Plus can be installed on: VPS/dedicated servers (DigitalOcean, Linode, Hetzner, AWS EC2 — full control, recommended for production), Hostinger Business or Premium shared hosting (SSH access required — see the Hostinger installation guide below), and local development servers like MAMP (macOS) or XAMPP (Windows/macOS — see the local installation guide below).
Basic shared hosting without SSH access is not supported because Composer and Artisan commands must be run at least once during setup.
Installation on Local Server (MAMP / XAMPP)
Use this guide to run Deprixa Plus on your own computer for development or testing. Node.js is required on local machines to compile the frontend assets.
Prerequisites for local development
Make sure you have installed: MAMP (macOS) or XAMPP (Windows/macOS), Composer (globally), Node.js 18+ LTS, and npm (bundled with Node.js). PHP must be available in your terminal PATH.
-
1
Place the Files
Extract the downloaded ZIP into your local web server's document root:
- MAMP (macOS):
/Applications/MAMP/htdocs/deprixa-plus/ - XAMPP (Windows):
C:\xampp\htdocs\deprixa-plus\ - XAMPP (macOS):
/Applications/XAMPP/htdocs/deprixa-plus/
The file
artisanmust be at the root of this folder. - MAMP (macOS):
-
2
Start MAMP / XAMPP
Open MAMP or XAMPP and start both the Apache (or Nginx) and MySQL services. In MAMP, go to MAMP → Preferences → PHP and confirm PHP 8.2 or 8.3 is selected. In XAMPP, use the Control Panel to start Apache and MySQL.
Create an empty database for Deprixa Plus using phpMyAdmin (accessible at
http://localhost/phpmyadminby default). -
3
Install PHP Dependencies (Composer)
Open a terminal, navigate to the project folder, and run Composer. On MAMP you may need to use MAMP's PHP binary explicitly:
bash — MAMP (macOS)cd /Applications/MAMP/htdocs/deprixa-plus /Applications/MAMP/bin/php/php8.3.x/bin/php /usr/local/bin/composer installbash — XAMPP (Windows, Command Prompt)cd C:\xampp\htdocs\deprixa-plus composer installIf Composer is not in your PATH, download it from
getcomposer.organd run it asphp composer.phar install. -
4
Configure the Environment File
bashcp .env.example .env php artisan key:generateOpen
.envand setAPP_URL=http://localhost:8888/deprixa-plus/public(adjust port to match MAMP's Apache port — default is 8888). SetAPP_ENV=localandAPP_DEBUG=truefor local development. -
5
Install Node.js Dependencies and Build Frontend
This step is required on local machines. It installs ~500 MB of packages into
node_modules/and compiles the React/TypeScript frontend intopublic/build/. Thenode_modules/folder is only needed on the machine doing the build — it is never uploaded to production.bashnpm install npm run buildFor active development (hot module replacement), use
npm run devinstead ofnpm run build. This starts Vite's dev server which automatically refreshes the browser on file changes. -
6
Create Storage Symlink
bashphp artisan storage:link -
7
Run the Installation Wizard
Open your browser and go to your local URL, for example:
- MAMP:
http://localhost:8888/deprixa-plus/public/install - XAMPP:
http://localhost/deprixa-plus/public/install
Follow the 5-step wizard. When entering database credentials in Step 3, use
127.0.0.1as the host,3306as the port, and the username/password you configured in MAMP/XAMPP (default is oftenroot/rootorroot/ empty). - MAMP:
Installation Steps
Deprixa Plus uses a web-based installation wizard. You prepare the server via the command line (steps 1–6), then complete the setup through your browser (step 7). Each step must complete successfully before proceeding to the next.
-
1
Extract the Source Code
Download the ZIP file from your Envato purchase page (CodeCanyon). Log in to your Envato account, go to your purchases, find Deprixa Plus, and click Download → All files & documentation.
Extract the downloaded ZIP to your web server directory. For example:
- Linux VPS/production:
/var/www/html/deprixa-plus - MAMP (macOS):
/Applications/MAMP/htdocs/deprixa-plus - XAMPP (Windows/macOS):
C:\xampp\htdocs\deprixa-plus
Upload the contents of the ZIP so that the
artisanfile is directly at the root of your chosen directory (e.g.,/var/www/html/deprixa-plus/artisan). - Linux VPS/production:
-
2
Install PHP Dependencies
Run Composer to install all backend packages. Use
--no-devin production to exclude development-only packages and--optimize-autoloaderfor a performance-optimized class map.bashcomposer install --no-dev --optimize-autoloader -
3
Configure the Environment File
Copy the example environment file and generate a new application encryption key. The key must be generated before running any other Artisan commands.
bashcp .env.example .env php artisan key:generateOpen
.envwith your preferred editor and fill in at minimum theAPP_URLand mail settings. The database credentials will be configured through the wizard in step 7. -
4
Build Frontend Assets
Pre-built assets included in the ZIP
The distribution ZIP already includes the compiled frontend in
public/build/. If that folder exists and contains amanifest.json, you can skip this step entirely — Node.js and npm are NOT required on the production server. Only run this step if you modified the frontend source code or if thepublic/build/folder is missing.If you need to rebuild the frontend (e.g., after modifying React source files), install Node dependencies and compile. Always use
npm run buildon production (notdev):bashnpm install npm run buildThe
node_modules/folder (~500 MB) is only needed during the build — do not upload it to production. Only the compiled output inpublic/build/needs to be present on the server. -
5
Configure Nginx Web Server
Point your Nginx server block to the
/publicdirectory. Below is a complete, production-ready configuration:nginxserver { listen 80; listen [::]:80; server_name yourdomain.com www.yourdomain.com; root /var/www/deprixa-plus/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; index index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; fastcgi_hide_header X-Powered-By; } location ~ /\.(?!well-known).* { deny all; } client_max_body_size 64M; }After saving the config, enable it and test:
bashln -s /etc/nginx/sites-available/deprixa /etc/nginx/sites-enabled/ nginx -t systemctl reload nginx -
6
Set Directory Permissions and Storage Symlink
Laravel needs write access to
storage/andbootstrap/cache/. Set the owner to your web server user (typicallywww-dataon Ubuntu). Then create the public storage symlink.bashchown -R www-data:www-data /var/www/deprixa-plus chmod -R 775 /var/www/deprixa-plus/storage chmod -R 775 /var/www/deprixa-plus/bootstrap/cache php artisan storage:link -
7
Run the Installation Wizard
Open your browser and navigate to
https://yourdomain.com/install. The wizard will guide you through 5 steps:Wizard URL
Navigate to
/installon your domain. For example:https://app.yourdomain.com/install. The wizard is only accessible before the application has been installed. Once installation is complete, this URL is disabled automatically.Step 1 — Requirements Check
URL:
/install— Automatically checks that PHP version, required extensions (PDO,OpenSSL,cURL,Zip,Mbstring,GD), and directory permissions are met. All checks must pass (green) before the Next button becomes active.
Step 2 — License Activation
URL:
/install/license— Enter your Envato Purchase Code (UUID format) and your Envato username. Click Verify License. When validation succeeds, the Next button becomes active.
Step 3 — Database & Company Information
URL:
/install/database— Enter your MySQL connection details (host, port, database name, username, password) and your company information (name, email, phone, country, address). Use the Test Connection button to verify before proceeding. The wizard creates the database if it does not exist and imports the application schema automatically.
After clicking "Test Connection":
Step 4 — Administrator Account
URL:
/install/admin— Create the first administrator account. Enter a name, email address, and a strong password (minimum 8 characters). This account will have super-admin access to every feature in the system.
Step 5 — System Preferences
URL:
/install/preferences— Configure the system defaults: language (Spanish or English), timezone (auto-detected from your browser), currency, date format, weight unit (kg/lb), and dimension unit (cm/in). Optionally enable Load demo data to populate the system with sample shipments and customers for testing.
Installation Complete
After clicking Finish Installation, the system creates the storage symlink, writes the lock file, and redirects you to the login page. Use the admin credentials you created in Step 4 to log in.
Where to Find Your Purchase Code
Log in to Envato Market (codecanyon.net) → click your avatar → Downloads → find Deprixa Plus → click License certificate & purchase code. The purchase code is a UUID in the format
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.When the wizard finishes, you will be redirected to
/login. Use the admin credentials you created in Step 4 to log in.
Installation on Hostinger Shared Hosting
Hostinger Business and Premium plans include SSH access and support PHP 8.2/8.3, making them compatible with Deprixa Plus. The key difference from a VPS is that you use the Hostinger File Manager or FTP to upload files and the Hostinger hPanel to create the database — SSH is used only for running Composer and Artisan commands.
Important: Use the pre-built ZIP — do NOT upload node_modules
The deployment ZIP already contains public/build/ (compiled frontend assets) and vendor/ (PHP dependencies). You do not need Node.js, npm, or Composer on the Hostinger server. Never upload the node_modules/ folder — it is ~500 MB and not needed on the server.
-
1
Create a MySQL Database in hPanel
Log in to your Hostinger account → go to hPanel → Databases → MySQL Databases. Click Create a new MySQL database & user. Write down the database name, username, and password — you will need them in the installation wizard.
The database host on Hostinger is typically
127.0.0.1. -
2
Upload the Files
In hPanel, go to File Manager and navigate to the
public_htmlfolder (or a subdomain directory if you're installing on a subdomain). Upload the deployment ZIP and extract it there.After extraction, the file structure should look like:
textpublic_html/ ├── app/ ├── bootstrap/ ├── config/ ├── database/ ├── public/ ← web root should point here │ ├── build/ ← compiled frontend (must exist) │ └── index.php ├── resources/ ├── routes/ ├── storage/ ├── vendor/ ← PHP dependencies (must exist) ├── .env.example └── artisanIf you are installing in a subdomain, set the subdomain's document root to point to the
public/folder inside the uploaded directory. Do this in hPanel → Subdomains → Edit → Document Root. -
3
Configure .env via File Manager
In File Manager, find
.env.example, duplicate it and rename the copy to.env. Open.envand set at minimum:envAPP_NAME="Deprixa Plus" APP_ENV=production APP_DEBUG=false APP_URL=https://yourdomain.com DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your_database_name DB_USERNAME=your_database_user DB_PASSWORD=your_database_passwordLeave
APP_KEYblank for now — you will generate it via SSH in the next step. -
4
Connect via SSH and Generate App Key
In hPanel, go to Advanced → SSH Access to get your SSH credentials and enable SSH if not already active. Then connect from your terminal:
bash — your local terminalssh username@yourdomain.com -p 65002Once connected, navigate to the project folder and generate the app key:
bash — SSH session on Hostingercd ~/public_html # or ~/domains/yourdomain.com/public_html php artisan key:generate php artisan storage:linkIf you installed into a subdirectory (e.g.,
public_html/app/), adjust the path accordingly. Thestorage:linkcommand creates the symlink so uploaded files (logos, attachments) are publicly accessible. -
5
Set Directory Permissions via SSH
bash — SSH session on Hostingerchmod -R 775 storage bootstrap/cache -
6
Configure the Document Root
Hostinger must serve the
public/directory, not the root of the project. In hPanel:- For the main domain: go to hPanel → Hosting → Manage → Files → Document Root and set it to
public_html/public(if you placed the project files directly inpublic_html). - For a subdomain: go to hPanel → Subdomains → Edit → Document Root and point it to the
public/subfolder inside your uploaded directory.
If your hosting plan does not allow changing the document root, you can move the contents of the
public/folder intopublic_html/and updatepublic/index.phppaths — but this is not recommended. Using a subdomain with the correct document root is the cleanest approach. - For the main domain: go to hPanel → Hosting → Manage → Files → Document Root and set it to
-
7
Run the Installation Wizard
Open your browser and navigate to
https://yourdomain.com/install. Follow the 5-step wizard. In Step 3, enter the database credentials you created in Step 1 of this guide.Cron Job on Hostinger
After installation, add a cron job in hPanel → Advanced → Cron Jobs. Set the command to:
php ~/public_html/artisan schedule:runand the interval to every minute (use the "Once per minute" preset). This is required for scheduled notifications and auto-status updates to work.
Environment Variables Reference (.env)
All configuration is done through the .env file at the project root. Never commit this file to version control. Database credentials entered in the installation wizard are written to this file automatically.
Application Settings
| Variable | Example Value | Description |
|---|---|---|
| APP_NAME | Deprixa Plus | Application name shown in emails, browser tab, and UI header. |
| APP_ENV | production | Set to production on live servers. local for development. Controls error verbosity. |
| APP_KEY | base64:… | Auto-generated by php artisan key:generate. Never change on production — all encrypted data will become unreadable. |
| APP_DEBUG | false | Set to false in production. When true, detailed error stack traces are shown to users — a major security risk. |
| APP_URL | https://app.yourdomain.com | Full URL of your installation including protocol. Used for asset URLs, email links, and API base paths. |
Database
These values are written automatically by the installation wizard when you complete Step 3. You can also set or update them manually here.
| Variable | Example Value | Description |
|---|---|---|
| DB_CONNECTION | mysql | Database driver. Supported: mysql, mariadb. |
| DB_HOST | 127.0.0.1 | Database server hostname or IP. Use 127.0.0.1 for local, or your RDS/Cloud DB endpoint. |
| DB_PORT | 3306 | MySQL default port. Change if your DB server uses a non-standard port. |
| DB_DATABASE | deprixa | Name of the database. The wizard creates it automatically if it does not exist. |
| DB_USERNAME | deprixa_user | Database user. Should have SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX privileges. |
| DB_PASSWORD | str0ngP@ssword! | Database user password. Use a strong, randomly generated password. |
Cache, Session & Queue
| Variable | Example Value | Description |
|---|---|---|
| CACHE_DRIVER | redis | Cache backend. Options: redis (recommended), file, database, array. |
| SESSION_DRIVER | redis | Session storage. Options: redis (recommended), file, cookie, database. |
| QUEUE_CONNECTION | redis | Queue backend for background jobs (notifications, exports). Options: redis, database, sync. |
| REDIS_HOST | 127.0.0.1 | Redis server hostname. |
| REDIS_PORT | 6379 | Redis port. Default is 6379. |
| REDIS_PASSWORD | null | Redis authentication password. Set to null if no password is configured. |
Mail Configuration
| Variable | Example Value | Description |
|---|---|---|
| MAIL_MAILER | smtp | Mail driver. Options: smtp, ses (AWS), mailgun, log (dev only), array. |
| MAIL_HOST | smtp.mailgun.org | SMTP server hostname. Use your ESP's SMTP endpoint. |
| MAIL_PORT | 587 | SMTP port. 587 (TLS/STARTTLS) is standard. 465 for SSL. 25 for unencrypted (not recommended). |
| MAIL_ENCRYPTION | tls | Encryption method: tls or ssl. |
| MAIL_USERNAME | postmaster@yourdomain.com | SMTP authentication username (usually your email address or API key). |
| MAIL_PASSWORD | your-smtp-password | SMTP authentication password. |
| MAIL_FROM_ADDRESS | noreply@yourdomain.com | The "From" email address for all outgoing system emails. |
| MAIL_FROM_NAME | Deprixa Plus | The "From" display name shown in email clients. |
File Storage (Optional S3)
By default, uploaded files (logos, attachments) are stored on the local server filesystem. To use AWS S3 or a compatible object storage service instead, set the following variables.
| Variable | Example Value | Description |
|---|---|---|
| FILESYSTEM_DISK | local | Default disk for file storage. Options: local (server filesystem) or s3 (AWS S3 or compatible). |
| AWS_ACCESS_KEY_ID | AKIA… | AWS IAM access key. Required only when FILESYSTEM_DISK=s3. |
| AWS_SECRET_ACCESS_KEY | wJalrX… | AWS IAM secret key. Required only when using S3. |
| AWS_DEFAULT_REGION | us-east-1 | AWS region where your S3 bucket is located. |
| AWS_BUCKET | deprixa-files | Your S3 bucket name. |
| AWS_URL | https://deprixa-files.s3.amazonaws.com | Public base URL for your S3 bucket. Used to generate file URLs. |
First-Run Checklist
After the installation wizard completes, log in with the admin account you created and finish these steps before going live:
- Set your company logo and contact details (Settings → Company Profile)
- Configure your mail settings and send a test email (Settings → Notifications)
- Review your timezone and date format (Settings → Locale)
- Create at least one branch (Settings → Branches)
- Configure shipment service types (Settings → Services)
- Create additional user accounts and assign roles (Settings → Users)
- Set up SSL (Let's Encrypt with Certbot is free and recommended)
- Configure a cron job for scheduled tasks (see below)
- Set up a queue worker for background jobs (Supervisord recommended)
- Test the shipment creation workflow end-to-end
Cron Job for Scheduled Tasks
Add the following entry to your server's crontab (crontab -e as the web server user or root):
* * * * * www-data php /var/www/deprixa-plus/artisan schedule:run >> /dev/null 2>&1
Queue Worker (Supervisord)
For production, use Supervisord to keep the queue worker running. Create /etc/supervisor/conf.d/deprixa-worker.conf:
[program:deprixa-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/deprixa-plus/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/log/deprixa-worker.log
stopwaitsecs=3600
Common Installation Errors
| Error | Cause | Fix |
|---|---|---|
| License verification fails | Wrong purchase code or Envato username, or the license server cannot be reached. | Double-check the purchase code (UUID format) and your exact Envato username. Verify the server has outbound internet access on port 443. |
| Database connection fails in wizard Step 3 | MySQL is not running, the credentials are wrong, or the host is incorrect. | Run systemctl status mysql. Verify the host, port, username, and password. Use 127.0.0.1 instead of localhost for TCP connections. |
No application encryption key has been specified |
APP_KEY is empty in .env. | Run php artisan key:generate. Ensure the .env file exists. |
| White page / 500 error | Storage or bootstrap/cache is not writable. | Run chmod -R 775 storage bootstrap/cache and ensure the web server user owns these directories. |
Class "App\Models\..." not found |
Composer autoloader is outdated. | Run composer dump-autoload --optimize. |
| Assets not loading (404 on /build/*.js) | npm run build was not run or the public/build directory is missing. | Run npm install && npm run build. Verify that public/build/manifest.json exists. |
| Images/logos not loading (404 on /storage/...) | Storage symlink not created. | Run php artisan storage:link. Verify that public/storage is a symlink. |
TokenMismatchException / 419 Page Expired |
CSRF token mismatch, usually because SESSION_DRIVER is misconfigured. | Verify CACHE_DRIVER and SESSION_DRIVER in .env. If using Redis, ensure Redis is running. Run php artisan config:clear. |
| Email not being sent | MAIL_* settings are wrong or queue worker is not running. | Check MAIL_* variables. Verify SMTP credentials with a tool like MailTrap. Ensure queue worker is running if using async queues. |
Permission denied when writing files |
Web server user does not own the storage directory. | Run chown -R www-data:www-data storage bootstrap/cache. |
Next Steps
With installation complete, explore the Settings module to configure your company profile, branding, and shipment services. Then read the Shipments module documentation to understand the core workflow.