Enterprise-grade installation and configuration scripts for deploying WHMCS on Debian 12 (Bookworm). Automates the complete server setup process with security-first approach.
| Component | Requirement |
|---|---|
| OS | Debian 12 (Bookworm) |
| CPU | 2+ cores recommended |
| RAM | 4GB minimum, 8GB recommended |
| Storage | 20GB minimum |
| Network | Static IP address |
| Domain | Valid domain pointed to server |
| License | Valid WHMCS license |
- Quick Start
- Features
- Basic Configuration
- Installation Steps
- Post-Installation
- Advanced Configuration
- Configuration Files Reference
- Maintenance
- Troubleshooting
- Support & Contributing
# 1. Clone repository
git clone https://github.com/chargeditsolutionsllc/whmcs_init.git
cd whmcs_init
# 2. Configure environment
cp .env.example .env
nano .env
# 3. Run installation
chmod +x scripts/*.sh
sudo ./scripts/install.sh- PHP 8.1 with optimized configuration
- MariaDB 10.11 with security hardening
- Apache with HTTP/2 and SSL support
- ModSecurity WAF with OWASP ruleset
- Automated security hardening
- File permission management
- Cloudflare integration
- Security headers implementation
- Automatic updates
- Environment-based configuration
- Modular installation process
- Comprehensive logging
- Automated backups
- Service monitoring
- Edit
.envfile with your settings:
# Domain Settings
DOMAIN=billing.yourdomain.com
EMAIL=admin@yourdomain.com
# Database Settings
MYSQL_USER=whmcs_user
MYSQL_DATABASE=whmcs
# Installation Path
WHMCS_PATH=/var/www/whmcs- Choose SSL Configuration:
# SSL Settings
ENABLE_SSL=true
SSL_TYPE=letsencrypt # Options: letsencrypt, customSee .env.example for all available options.
The installer performs these steps automatically:
-
System Preparation
- System updates
- Required dependencies
- Package mirror optimization
-
Component Installation
- PHP 8.1 with extensions
- MariaDB 10.11
- Apache with mods
- IonCube Loader
-
Security Configuration
- UFW firewall setup
- ModSecurity configuration
- File permissions
- Security headers
-
Upload WHMCS Files
# Upload to /var/www/whmcs/public_html/ -
Complete Setup
- Visit
https://your-domain.com/install/install.php - Follow installation wizard
- Remove install directory
- Visit
-
Verify Installation
- Check PHP configuration
- Test database connection
- Verify SSL setup
# Production
SSL_TYPE=letsencrypt
SSL_STAGING=false
# Testing
SSL_TYPE=letsencrypt
SSL_STAGING=trueSSL_TYPE=custom
SSL_CERT_PATH=/path/to/cert.pem
SSL_KEY_PATH=/path/to/key.pem# Enable Cloudflare
ENABLE_CLOUDFLARE=true
CLOUDFLARE_TRUSTED_IPS_ENABLE=true- Full (strict) - Production certificates
- Full - Testing/staging certificates
- Flexible - Not recommended
-
TLS Configuration
- TLS 1.2/1.3 support
- Strong cipher suites
- OCSP stapling
-
Headers
- HSTS
- CSP
- X-Frame-Options
-
File System
- Restricted permissions
- Regular integrity checks
- Automated backups
/etc/apache2/apache2.conf- Main Apache configuration/etc/php/${PHP_VERSION}/apache2/php.ini- PHP configuration/etc/mysql/mariadb.conf.d/50-server.cnf- MariaDB configuration/var/www/whmcs/.env- WHMCS environment configuration
-
Apache SSL Configuration
/etc/apache2/conf-available/ssl-security.conf- SSL security settings/etc/apache2/sites-available/[domain].conf- Virtual host configuration/etc/letsencrypt/live/${DOMAIN}/- Let's Encrypt certificates/etc/ssl/whmcs/- Custom SSL certificates directory
-
Let's Encrypt Files
/etc/letsencrypt/renewal/[domain].conf- Certificate renewal configuration/etc/systemd/system/certbot.timer- Automatic renewal timer/etc/systemd/system/certbot.service- Renewal service configuration
-
Web Application Firewall
/etc/modsecurity/modsecurity.conf- ModSecurity base configuration/etc/modsecurity/whmcs-rules.conf- WHMCS-specific rules/etc/apache2/conf-available/security.conf- Apache security settings
-
Firewall Configuration
/etc/ufw/user.rules- UFW firewall rules/etc/ufw/before.rules- Pre-processing rules/etc/apache2/conf-available/cloudflare.conf- Cloudflare configuration
-
Web Server Logs
/var/log/apache2/access.log- Apache access logs/var/log/apache2/error.log- Apache error logs/var/log/apache2/ssl_access.log- SSL-specific logs
-
Database Logs
/var/log/mysql/error.log- MariaDB error log/var/log/mysql/slow-query.log- Slow query log
-
Security Logs
/var/log/modsec_audit.log- ModSecurity audit log/var/log/ufw.log- Firewall logs/var/log/letsencrypt/- SSL certificate logs
/var/backups/whmcs/- Automated backup directory/var/backups/whmcs/database/- Database backups/var/backups/whmcs/files/- File backups/var/backups/whmcs/config/- Configuration backups
# System updates
apt update && apt upgrade
# Check services
systemctl status apache2
systemctl status mariadb# Check logs
tail -f /var/log/apache2/error.log
tail -f /var/log/mysql/error.log
# Database backup
mysqldump -u root -p whmcs > backup.sql-
Permission Errors
# Fix permissions sudo scripts/install.sh --fix-permissions -
SSL Problems
# Check SSL sudo apache2ctl configtest sudo certbot certificates -
Database Connection Issues
# Verify MySQL sudo systemctl status mariadb mysql -u whmcs_user -p whmcs
- Apache:
/var/log/apache2/ - MySQL:
/var/log/mysql/ - PHP:
/var/log/php/ - SSL:
/var/log/letsencrypt/
- GitHub Issues: Bug reports and feature requests
- Security Reports: security@chargeditsolutions.com
- Documentation: README.md
- Fork repository
- Create feature branch
- Commit changes
- Open pull request
MIT License - See LICENSE file.
This is an unofficial installation script. WHMCS is a trademark of WHMCS Ltd.