Skip to content

Configuration Guide

This guide covers all configuration options for HelpDesk Pro, from basic setup to advanced customization.

Environment Configuration

Basic Environment Setup

The .env file contains all configuration settings for your HelpDesk Pro installation.

bash
# Application Settings
APP_NAME="HelpDesk Pro"
APP_ENV=production
APP_KEY=base64:your-generated-key-here
APP_DEBUG=false
APP_URL=https://yourdomain.com
APP_TIMEZONE=UTC
APP_LOCALE=en

# Database Configuration
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=helpdesk_pro
DB_USERNAME=your_username
DB_PASSWORD=your_password

# Cache Configuration
CACHE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

# Session Configuration
SESSION_DRIVER=redis
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null

# Queue Configuration
QUEUE_CONNECTION=redis
QUEUE_FAILED_DRIVER=database-uuids

Mail Configuration

SMTP Settings

bash
# Mail Configuration
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@yourdomain.com
MAIL_FROM_NAME="${APP_NAME}"

Gmail Configuration:

bash
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
MAIL_ENCRYPTION=tls

Outlook/Hotmail Configuration:

bash
MAIL_HOST=smtp-mail.outlook.com
MAIL_PORT=587
MAIL_USERNAME=your-email@outlook.com
MAIL_PASSWORD=your-password
MAIL_ENCRYPTION=tls

Custom SMTP Configuration:

bash
MAIL_HOST=mail.yourdomain.com
MAIL_PORT=587
MAIL_USERNAME=support@yourdomain.com
MAIL_PASSWORD=your-password
MAIL_ENCRYPTION=tls

File Storage Configuration

Local Storage

bash
FILESYSTEM_DISK=local

Amazon S3

bash
FILESYSTEM_DISK=s3
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=your-bucket-name
AWS_USE_PATH_STYLE_ENDPOINT=false

CloudFlare R2

bash
FILESYSTEM_DISK=s3
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_DEFAULT_REGION=auto
AWS_BUCKET=your-bucket-name
AWS_ENDPOINT=https://your-account-id.r2.cloudflarestorage.com

AI Configuration

OpenAI Integration

bash
# OpenAI Configuration
OPENAI_API_KEY=sk-your-api-key-here
OPENAI_ORGANIZATION=org-your-org-id
OPENAI_MODEL=gpt-4
OPENAI_MAX_TOKENS=1000
OPENAI_TEMPERATURE=0.7
OPENAI_TIMEOUT=30

AI Feature Toggles

bash
# AI Features
AI_TICKET_CLASSIFICATION=true
AI_RESPONSE_SUGGESTIONS=true
AI_SENTIMENT_ANALYSIS=true
AI_PREDICTIVE_ANALYTICS=true
AI_AUTO_ROUTING=true

AI Configuration in Admin Panel

  1. Navigate to Settings → AI Configuration

  2. Enter OpenAI API Key

  3. Configure AI Features:

    • Smart Ticket Classification
    • Response Suggestions
    • Sentiment Analysis
    • Predictive Analytics
    • Auto-Routing
  4. Set Confidence Thresholds:

    php
    // Example configuration
    'classification_threshold' => 0.8,
    'suggestion_threshold' => 0.7,
    'sentiment_threshold' => 0.6,

Real-Time Features Configuration

Pusher Configuration

bash
# Pusher Configuration
PUSHER_APP_ID=your-app-id
PUSHER_APP_KEY=your-app-key
PUSHER_APP_SECRET=your-app-secret
PUSHER_APP_CLUSTER=us2
PUSHER_APP_ENCRYPTED=true

Pusher Setup Steps

  1. Create Pusher Account at pusher.com
  2. Create New App in your dashboard
  3. Copy Credentials to your .env file
  4. Test Connection in admin panel

WebSocket Configuration

Nginx Configuration

nginx
# WebSocket proxy configuration
location /app/ {
    proxy_pass http://pusher;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_cache_bypass $http_upgrade;
}

Apache Configuration

apache
# WebSocket proxy configuration
ProxyPreserveHost On
ProxyPass /app/ ws://pusher:6001/app/
ProxyPassReverse /app/ ws://pusher:6001/app/

Email Piping Configuration

IMAP Configuration

bash
# IMAP Configuration
IMAP_HOST=imap.gmail.com
IMAP_PORT=993
IMAP_ENCRYPTION=ssl
IMAP_USERNAME=support@yourdomain.com
IMAP_PASSWORD=your-password
IMAP_VALIDATE_CERT=true

Gmail IMAP Setup

  1. Enable IMAP in Gmail settings
  2. Generate App Password for IMAP access
  3. Configure Email Forwarding to support address
  4. Set Up Cron Job for email checking
bash
# Cron job for email checking
* * * * * cd /path/to/helpdesk && php artisan email:check >> /dev/null 2>&1

cPanel IMAP Setup

bash
# cPanel IMAP Configuration
IMAP_HOST=mail.yourdomain.com
IMAP_PORT=993
IMAP_ENCRYPTION=ssl
IMAP_USERNAME=support@yourdomain.com
IMAP_PASSWORD=your-password
IMAP_VALIDATE_CERT=false

Email Piping Rules

Gmail Rules

  1. Create Filter in Gmail
  2. Set Conditions:
  3. Set Actions:

cPanel Rules

  1. Access Email Filters in cPanel
  2. Create New Filter:

Security Configuration

Authentication Settings

bash
# Authentication Configuration
AUTH_GUARD=web
AUTH_PROVIDER=users
AUTH_PASSWORD_TIMEOUT=10800
AUTH_THROTTLE=60,1

Session Security

bash
# Session Security
SESSION_SECURE_COOKIE=true
SESSION_HTTP_ONLY=true
SESSION_SAME_SITE=lax
SESSION_COOKIE_NAME=helpdesk_session

CSRF Protection

bash
# CSRF Configuration
CSRF_COOKIE_SECURE=true
CSRF_COOKIE_HTTP_ONLY=true
CSRF_COOKIE_SAME_SITE=lax

Content Security Policy

php
// CSP Configuration in config/cors.php
'csp' => [
    'default-src' => ["'self'", 'http:', 'https:', 'data:', 'blob:', "'unsafe-inline'"],
    'connect-src' => ["'self'", 'http:', 'https:', 'wss:', 'ws:', 'data:', 'blob:'],
    'script-src' => ["'self'", "'unsafe-inline'", "'unsafe-eval'", 'http:', 'https:'],
    'style-src' => ["'self'", "'unsafe-inline'", 'http:', 'https:'],
    'img-src' => ["'self'", 'data:', 'blob:', 'http:', 'https:'],
    'font-src' => ["'self'", 'data:', 'http:', 'https:'],
    'media-src' => ["'self'", 'data:', 'blob:', 'http:', 'https:'],
],

Performance Configuration

Cache Configuration

Redis Cache

bash
# Redis Configuration
CACHE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_DB=0

Memcached Cache

bash
# Memcached Configuration
CACHE_DRIVER=memcached
MEMCACHED_HOST=127.0.0.1
MEMCACHED_PORT=11211

Database Optimization

bash
# Database Configuration
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=helpdesk_pro
DB_USERNAME=your_username
DB_PASSWORD=your_password
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
DB_STRICT_MODE=true

Queue Configuration

Database Queue

bash
QUEUE_CONNECTION=database

Redis Queue

bash
QUEUE_CONNECTION=redis
REDIS_QUEUE=default

Supervisor Configuration

ini
[program:helpdesk-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/helpdesk/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=/path/to/helpdesk/storage/logs/worker.log
stopwaitsecs=3600

Localization Configuration

Language Settings

bash
# Localization
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US

Supported Languages

php
// Available languages in config/app.php
'supported_locales' => [
    'en' => 'English',
    'es' => 'Español',
    'fr' => 'Français',
    'de' => 'Deutsch',
    'it' => 'Italiano',
    'pt' => 'Português',
    'nl' => 'Nederlands',
    'pl' => 'Polski',
    'tr' => 'Türkçe',
    'ar' => 'العربية',
    'he' => 'עברית',
    'ur' => 'اردو',
    'cn' => '中文',
    'bd' => 'বাংলা',
    'sa' => 'العربية السعودية',
    'se' => 'Svenska',
    'lt' => 'Lietuvių',
],

RTL Support

bash
# RTL Configuration
RTL_LANGUAGES=ar,he,ur
RTL_DEFAULT=false

System Settings

General Settings

bash
# System Configuration
SYSTEM_NAME="HelpDesk Pro"
SYSTEM_LOGO="/images/logo.png"
SYSTEM_FAVICON="/images/favicon.ico"
SYSTEM_TIMEZONE=UTC
SYSTEM_CURRENCY=USD
SYSTEM_DATE_FORMAT=Y-m-d
SYSTEM_TIME_FORMAT=H:i:s

File Upload Settings

bash
# File Upload Configuration
UPLOAD_MAX_SIZE=10240
UPLOAD_ALLOWED_TYPES=jpg,jpeg,png,gif,pdf,doc,docx,txt,zip
UPLOAD_PATH=uploads
UPLOAD_THUMBNAIL_SIZE=150

Notification Settings

bash
# Notification Configuration
NOTIFICATION_EMAIL=true
NOTIFICATION_SMS=false
NOTIFICATION_PUSH=true
NOTIFICATION_SLACK=false
NOTIFICATION_DISCORD=false

Advanced Configuration

Custom Configuration Files

AI Configuration

php
// config/ai.php
return [
    'openai' => [
        'api_key' => env('OPENAI_API_KEY'),
        'organization' => env('OPENAI_ORGANIZATION'),
        'model' => env('OPENAI_MODEL', 'gpt-4'),
        'max_tokens' => env('OPENAI_MAX_TOKENS', 1000),
        'temperature' => env('OPENAI_TEMPERATURE', 0.7),
        'timeout' => env('OPENAI_TIMEOUT', 30),
    ],
    
    'features' => [
        'ticket_classification' => env('AI_TICKET_CLASSIFICATION', true),
        'response_suggestions' => env('AI_RESPONSE_SUGGESTIONS', true),
        'sentiment_analysis' => env('AI_SENTIMENT_ANALYSIS', true),
        'predictive_analytics' => env('AI_PREDICTIVE_ANALYTICS', true),
        'auto_routing' => env('AI_AUTO_ROUTING', true),
    ],
    
    'thresholds' => [
        'classification' => env('AI_CLASSIFICATION_THRESHOLD', 0.8),
        'suggestion' => env('AI_SUGGESTION_THRESHOLD', 0.7),
        'sentiment' => env('AI_SENTIMENT_THRESHOLD', 0.6),
    ],
];

Chat Configuration

php
// config/chat.php
return [
    'pusher' => [
        'app_id' => env('PUSHER_APP_ID'),
        'app_key' => env('PUSHER_APP_KEY'),
        'app_secret' => env('PUSHER_APP_SECRET'),
        'app_cluster' => env('PUSHER_APP_CLUSTER'),
        'encrypted' => env('PUSHER_APP_ENCRYPTED', true),
    ],
    
    'settings' => [
        'max_message_length' => 1000,
        'max_file_size' => 10240, // KB
        'allowed_file_types' => ['jpg', 'jpeg', 'png', 'gif', 'pdf', 'doc', 'docx', 'txt'],
        'auto_close_inactive' => 3600, // seconds
        'typing_indicator_delay' => 1000, // milliseconds
    ],
];

Configuration Validation

Environment Check

bash
# Check environment configuration
php artisan config:check

# Validate all configuration
php artisan config:validate

# Clear configuration cache
php artisan config:clear

Configuration Testing

php
// Test configuration in tinker
php artisan tinker

// Test database connection
DB::connection()->getPdo();

// Test mail configuration
Mail::raw('Test email', function ($message) {
    $message->to('test@example.com')->subject('Test');
});

// Test cache configuration
Cache::put('test', 'value', 60);
Cache::get('test');

// Test queue configuration
dispatch(new TestJob());

Troubleshooting Configuration

Troubleshooting Common Issues

Database Connection Issues

bash
# Check database connection
php artisan migrate:status

# Test database connection
php artisan tinker
DB::connection()->getPdo();

Mail Configuration Issues

bash
# Test mail configuration
php artisan tinker
Mail::raw('Test', function ($message) {
    $message->to('test@example.com')->subject('Test');
});

Cache Issues

bash
# Clear all caches
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

# Test cache
php artisan tinker
Cache::put('test', 'value', 60);

Queue Issues

bash
# Check queue status
php artisan queue:work --once

# Restart queue workers
php artisan queue:restart

Configuration Debugging

php
// Debug configuration in tinker
php artisan tinker

// Check specific configuration
config('app.name');
config('database.connections.mysql');
config('mail.mailers.smtp');

// Check environment variables
env('APP_NAME');
env('DB_HOST');
env('MAIL_HOST');

Best Practices

Security Best Practices

  1. Never commit .env file to version control
  2. Use strong passwords for all services
  3. Enable SSL/TLS for all connections
  4. Regular security updates for all components
  5. Monitor access logs for suspicious activity

Performance Best Practices

  1. Use Redis for caching and sessions
  2. Enable database query caching
  3. Optimize database indexes
  4. Use CDN for static assets
  5. Monitor performance metrics

Maintenance Best Practices

  1. Regular backups of database and files
  2. Monitor disk space and memory usage
  3. Update dependencies regularly
  4. Test configuration changes in staging
  5. Document custom configurations

Next Steps

  1. Complete First Steps Guide to set up your system
  2. Configure AI Features for intelligent automation
  3. Set up Email Piping for automatic ticket creation
  4. Review Security Settings for production deployment

Configuration Complete! Your HelpDesk Pro system is now properly configured and ready for use. Remember to test all configurations before going live in production.

Released under the MIT License.