WPFleet is a production-ready, scalable solution for hosting multiple WordPress sites on a single server using Docker, FrankenPHP, MariaDB, and Valkey (Redis-compatible cache).
- FrankenPHP - Modern PHP application server with built-in Caddy
- Automatic SSL - Let's Encrypt certificates via Caddy
- Shared MariaDB - Single database server with isolated databases
- Valkey Caching - Redis-compatible object cache for improved performance
- WP-CLI - Built-in WordPress command-line interface
- Security First - Isolated containers, security headers, and best practices
- Resource Management - CPU and memory limits per site
- Easy Management - Simple scripts for common tasks
- Migration Support - Import WordPress sites from archives and database dumps
- Automated Backups - Scheduled backups with configurable retention
- Discord & Slack Notifications - Real-time alerts for backups, health issues, and deployments
- Site Cloning - One-command site duplication for staging or testing
- Git-Based Deployments - Deploy themes and plugins directly from Git repositories
- Disk Quota Management - Per-site disk quotas with monitoring and alerts
- Full-Page Caching - Redis Object Cache and Cache Enabler for maximum performance
git clone https://github.com/Open-WP-Club/wpfleet
cd wpfleetcp .env.example .env
nano .env # Edit with your valuesImportant: Generate secure passwords for MYSQL_ROOT_PASSWORD, MYSQL_PASSWORD, and WP_ADMIN_PASSWORD.
chmod +x scripts/*.shdocker-compose up -d mariadb valkey./scripts/site-manager.sh add example.comThat's it! Your site will be available at https://example.com with automatic SSL.
Comprehensive documentation is available in the docs/ directory:
- Installation Guide - Detailed installation instructions and requirements
- Migration Guide - Migrate existing WordPress sites to WPFleet
- Site Management - Adding, removing, cloning, and managing sites
- Cache Management - Object and full-page caching
- Backups - Automated backup scheduling and restoration
- Git Deployments - Deploy themes and plugins from Git
- Disk Quotas - Per-site storage limits and monitoring
- Monitoring - Real-time dashboard and health checks
- Notifications - Discord and Slack integration
- Security - Security features and best practices
- Scaling - Vertical and horizontal scaling strategies
- Troubleshooting - Common issues and solutions
- Docker Engine 20.10+
- Docker Compose 2.0+
- Linux server (Ubuntu 20.04+ recommended)
- Domain names pointing to your server
- Ports 80 and 443 available
- Minimum 2GB RAM (4GB+ recommended)
- SSH access for management
./scripts/site-manager.sh add example.com./scripts/site-manager.sh clone source.com staging.com./scripts/backup.sh site example.com./scripts/monitor.sh./scripts/health-check.sh./scripts/wp-cli.sh example.com plugin listwpfleet/
├── config/ # Configuration files (Caddy, PHP, etc.)
├── docker/ # Dockerfiles and container configs
├── docs/ # Documentation
├── scripts/ # Management scripts
│ ├── site-manager.sh # Site operations
│ ├── backup.sh # Backup functionality
│ ├── cache-manager.sh # Cache operations
│ ├── git-deploy.sh # Git deployments
│ ├── quota-manager.sh # Disk quotas
│ ├── monitor.sh # Real-time monitoring
│ ├── health-check.sh # Health checks
│ ├── notify.sh # Notifications
│ └── wp-cli.sh # WordPress CLI
├── data/ # Runtime data (created on first run)
│ ├── wordpress/ # WordPress site files
│ ├── mysql/ # MariaDB data
│ ├── valkey/ # Cache data
│ ├── backups/ # Backup storage
│ └── logs/ # Log files
├── .env.example # Environment configuration template
└── docker-compose.yml
- FrankenPHP: Serves PHP applications with built-in Caddy web server
- MariaDB: Shared database with isolated databases per site
- Valkey: Redis-compatible cache for object caching
- Docker Compose: Orchestrates all services
Each WordPress site runs in an isolated directory with its own database, while sharing the same PHP server and cache infrastructure.
- Fork the repository
- Create your feature branch:
git checkout -b feature/my-feature - Commit your changes:
git commit -am 'Add my feature' - Push to the branch:
git push origin feature/my-feature - Submit a pull request
- Issues: GitHub Issues
- Documentation: See docs/ directory
- Discussions: GitHub Discussions
This project is licensed under the MIT License - see the LICENSE file for details.
- FrankenPHP - Modern PHP application server
- Caddy - Automatic HTTPS server
- WordPress - The world's most popular CMS
- Docker - Container platform
- Valkey - Redis-compatible cache