Requirements
Before installing Doss, ensure your server meets the following requirements:| Requirement | Version |
|---|---|
| PHP | 8.2 or higher |
| Database | MySQL 8.0+ or PostgreSQL 13+ |
| Composer | 2.x |
| Node.js | 18 LTS or higher |
| npm | 9+ |
| Redis | 6+ (required for queue processing) |
| Web server | Nginx or Apache |
pdo, pdo_mysql (or pdo_pgsql), mbstring, openssl, tokenizer, xml, ctype, json, bcmath, gd, zip, curl, fileinfo.
Installation steps
Install PHP dependencies
Install all Composer packages defined in For a development environment, omit
composer.json. Key dependencies include Laravel 10, Laravel Passport, nwidart/laravel-modules, Stripe, Firebase, and Pusher.--no-dev to include packages like PHPUnit, Laravel Pint, and Ignition:Configure environment
Copy the example environment file and open it for editing:Edit Then install Laravel Passport encryption keys:
.env and set the values for your environment. See the Environment variables section below for a full reference.At minimum, configure:.env
Run database migrations and seeders
Create the database schema and load required seed data (currencies, countries, transaction types, default settings):
The seeder populates essential lookup data including countries, currencies, notification types, transaction types, and a default admin account. Do not skip seeding on a fresh installation.
Set file permissions
The web server process must be able to write to the Then generate the storage symlink for public file access:
storage and bootstrap/cache directories:Set up queue workers
Doss uses Laravel queues for FCM push notifications, email dispatch, and async transaction processing. Set For production, manage the queue worker with Supervisor so it restarts automatically:
QUEUE_CONNECTION=redis in .env, then start a worker:/etc/supervisor/conf.d/doss-worker.conf
Configure the web server
Point your web server document root to the Enable the site and reload Nginx:For HTTPS, use Certbot to obtain a Let’s Encrypt certificate:
public/ directory. Below is an example Nginx server block:/etc/nginx/sites-available/doss
Environment variables
The following environment variables control core platform behavior. Set them in your.env file.
Application
| Variable | Description | Example |
|---|---|---|
APP_NAME | Application name shown in emails and notifications | Doss |
APP_ENV | Environment (production, local, staging) | production |
APP_KEY | 32-character encryption key — generate with php artisan key:generate | |
APP_DEBUG | Show detailed errors (true only in development) | false |
APP_URL | Full URL of the application including scheme | https://pay.example.com |
ADMIN_PREFIX | URL prefix for the admin panel | admin |
APP_DEMO | Enable demo mode (disables destructive actions) | false |
Database
| Variable | Description | Default |
|---|---|---|
DB_CONNECTION | Database driver (mysql or pgsql) | mysql |
DB_HOST | Database server hostname | 127.0.0.1 |
DB_PORT | Database port | 3306 |
DB_DATABASE | Database name | |
DB_USERNAME | Database user | |
DB_PASSWORD | Database password |
Queue and cache
| Variable | Description | Default |
|---|---|---|
QUEUE_CONNECTION | Queue driver — use redis for production | sync |
REDIS_HOST | Redis server hostname | 127.0.0.1 |
REDIS_PORT | Redis port | 6379 |
REDIS_PASSWORD | Redis password (if auth is enabled) |
Broadcasting (Pusher)
Pusher powers real-time in-browser notifications.| Variable | Description |
|---|---|
BROADCAST_DRIVER | Set to pusher to enable real-time events |
PUSHER_APP_ID | Pusher application ID |
PUSHER_APP_KEY | Pusher application key |
PUSHER_APP_SECRET | Pusher application secret |
PUSHER_APP_CLUSTER | Pusher cluster (e.g., eu, us2) |
| Variable | Description | Default |
|---|---|---|
MAIL_MAILER | Mail transport (smtp, mailgun, ses, log) | smtp |
MAIL_HOST | SMTP server hostname | smtp.mailgun.org |
MAIL_PORT | SMTP port | 587 |
MAIL_ENCRYPTION | Encryption (tls or ssl) | tls |
MAIL_USERNAME | SMTP username | |
MAIL_PASSWORD | SMTP password | |
MAIL_FROM_ADDRESS | Sender address | |
MAIL_FROM_NAME | Sender display name |
Payment integrations
Configure only the gateways you intend to activate. Credentials for each gateway are stored in the admin panel under Settings → Payment Methods rather than in.env — the admin UI writes them to the settings database table at runtime.
| Variable | Description |
|---|---|
STRIPE_KEY | Stripe publishable key |
STRIPE_SECRET | Stripe secret key |
Firebase (FCM push notifications)
Firebase credentials are configured via the admin panel. Upload yourfirebase_credentials.json service account file through Admin → Settings → Firebase. The application uses kreait/firebase-php to send FCM messages to mobile devices.