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}"
Popular Email Providers
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
Navigate to Settings → AI Configuration
Enter OpenAI API Key
Configure AI Features:
- Smart Ticket Classification
- Response Suggestions
- Sentiment Analysis
- Predictive Analytics
- Auto-Routing
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
- Create Pusher Account at pusher.com
- Create New App in your dashboard
- Copy Credentials to your
.env
file - 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
- Enable IMAP in Gmail settings
- Generate App Password for IMAP access
- Configure Email Forwarding to support address
- 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
- Create Filter in Gmail
- Set Conditions:
- To: support@yourdomain.com
- Subject: [Ticket]
- Set Actions:
- Forward to: support+pipe@yourdomain.com
- Mark as read
- Apply label: "HelpDesk"
cPanel Rules
- Access Email Filters in cPanel
- Create New Filter:
- Rule: To contains support@yourdomain.com
- Action: Forward to support+pipe@yourdomain.com
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
- Never commit
.env
file to version control - Use strong passwords for all services
- Enable SSL/TLS for all connections
- Regular security updates for all components
- Monitor access logs for suspicious activity
Performance Best Practices
- Use Redis for caching and sessions
- Enable database query caching
- Optimize database indexes
- Use CDN for static assets
- Monitor performance metrics
Maintenance Best Practices
- Regular backups of database and files
- Monitor disk space and memory usage
- Update dependencies regularly
- Test configuration changes in staging
- Document custom configurations
Next Steps
- Complete First Steps Guide to set up your system
- Configure AI Features for intelligent automation
- Set up Email Piping for automatic ticket creation
- 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.