{"id":28909147,"url":"https://github.com/open-wp-club/wpfleet","last_synced_at":"2026-04-11T06:02:29.005Z","repository":{"id":298303154,"uuid":"999511665","full_name":"Open-WP-Club/wpfleet","owner":"Open-WP-Club","description":"WPFleet is a production-ready, scalable solution for hosting multiple WordPress sites on a single server using Docker, FrankenPHP, MariaDB, and Redis.","archived":false,"fork":false,"pushed_at":"2025-06-20T16:21:11.000Z","size":54,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-20T17:32:02.714Z","etag":null,"topics":["docker","docker-compose","frankenphp","mariadb","wordpress","wp-cli"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Open-WP-Club.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-10T11:11:35.000Z","updated_at":"2025-06-20T16:21:14.000Z","dependencies_parsed_at":"2025-06-10T12:30:30.902Z","dependency_job_id":null,"html_url":"https://github.com/Open-WP-Club/wpfleet","commit_stats":null,"previous_names":["open-wp-club/wpfleet"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Open-WP-Club/wpfleet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-WP-Club%2Fwpfleet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-WP-Club%2Fwpfleet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-WP-Club%2Fwpfleet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-WP-Club%2Fwpfleet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Open-WP-Club","download_url":"https://codeload.github.com/Open-WP-Club/wpfleet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-WP-Club%2Fwpfleet/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261162076,"owners_count":23118221,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","frankenphp","mariadb","wordpress","wp-cli"],"created_at":"2025-06-21T17:07:40.799Z","updated_at":"2025-12-30T22:28:05.953Z","avatar_url":"https://github.com/Open-WP-Club.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WPFleet - Docker-based WordPress Multi-Site Hosting\n\nWPFleet is a production-ready, scalable solution for hosting multiple WordPress sites on a single server using Docker, FrankenPHP, MariaDB, and Valkey (Redis-compatible cache).\n\n## Features\n\n- **FrankenPHP** - Modern PHP application server with built-in Caddy\n- **Automatic SSL** - Let's Encrypt certificates via Caddy\n- **Shared MariaDB** - Single database server with isolated databases\n- **Valkey Caching** - Redis-compatible object cache for improved performance\n- **WP-CLI** - Built-in WordPress command-line interface\n- **Security First** - Isolated containers, security headers, and best practices\n- **Resource Management** - CPU and memory limits per site\n- **Easy Management** - Simple scripts for common tasks\n- **Migration Support** - Import WordPress sites from archives and database dumps\n- **Automated Backups** - Scheduled backups with configurable retention\n- **Discord \u0026 Slack Notifications** - Real-time alerts for backups, health issues, and deployments\n- **Site Cloning** - One-command site duplication for staging or testing\n- **Git-Based Deployments** - Deploy themes and plugins directly from Git repositories\n- **Disk Quota Management** - Per-site disk quotas with monitoring and alerts\n- **Full-Page Caching** - Redis Object Cache and Cache Enabler for maximum performance\n\n## Quick Start\n\n### 1. Clone the Repository\n\n```bash\ngit clone https://github.com/Open-WP-Club/wpfleet\ncd wpfleet\n```\n\n### 2. Configure Environment\n\n```bash\ncp .env.example .env\nnano .env  # Edit with your values\n```\n\n**Important**: Generate secure passwords for `MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD`, and `WP_ADMIN_PASSWORD`.\n\n### 3. Make Scripts Executable\n\n```bash\nchmod +x scripts/*.sh\n```\n\n### 4. Start Core Services\n\n```bash\ndocker-compose up -d mariadb valkey\n```\n\n### 5. Add Your First Site\n\n```bash\n./scripts/site-manager.sh add example.com\n```\n\nThat's it! Your site will be available at `https://example.com` with automatic SSL.\n\n## Documentation\n\nComprehensive documentation is available in the `docs/` directory:\n\n### Getting Started\n- **[Installation Guide](docs/installation.md)** - Detailed installation instructions and requirements\n- **[Migration Guide](docs/migration.md)** - Migrate existing WordPress sites to WPFleet\n\n### Core Features\n- **[Site Management](docs/site-management.md)** - Adding, removing, cloning, and managing sites\n- **[Cache Management](docs/cache-management.md)** - Object and full-page caching\n- **[Backups](docs/backups.md)** - Automated backup scheduling and restoration\n- **[Git Deployments](docs/git-deployments.md)** - Deploy themes and plugins from Git\n- **[Disk Quotas](docs/disk-quotas.md)** - Per-site storage limits and monitoring\n\n### Operations\n- **[Monitoring](docs/monitoring.md)** - Real-time dashboard and health checks\n- **[Notifications](docs/notifications.md)** - Discord and Slack integration\n- **[Security](docs/security.md)** - Security features and best practices\n- **[Scaling](docs/scaling.md)** - Vertical and horizontal scaling strategies\n- **[Troubleshooting](docs/troubleshooting.md)** - Common issues and solutions\n\n## Requirements\n\n- Docker Engine 20.10+\n- Docker Compose 2.0+\n- Linux server (Ubuntu 20.04+ recommended)\n- Domain names pointing to your server\n- Ports 80 and 443 available\n- Minimum 2GB RAM (4GB+ recommended)\n- SSH access for management\n\n## Common Operations\n\n### Add a Site\n\n```bash\n./scripts/site-manager.sh add example.com\n```\n\n### Clone a Site\n\n```bash\n./scripts/site-manager.sh clone source.com staging.com\n```\n\n### Backup a Site\n\n```bash\n./scripts/backup.sh site example.com\n```\n\n### Monitor Services\n\n```bash\n./scripts/monitor.sh\n```\n\n### Run Health Check\n\n```bash\n./scripts/health-check.sh\n```\n\n### Use WP-CLI\n\n```bash\n./scripts/wp-cli.sh example.com plugin list\n```\n\n## Project Structure\n\n```\nwpfleet/\n├── config/           # Configuration files (Caddy, PHP, etc.)\n├── docker/           # Dockerfiles and container configs\n├── docs/             # Documentation\n├── scripts/          # Management scripts\n│   ├── site-manager.sh    # Site operations\n│   ├── backup.sh          # Backup functionality\n│   ├── cache-manager.sh   # Cache operations\n│   ├── git-deploy.sh      # Git deployments\n│   ├── quota-manager.sh   # Disk quotas\n│   ├── monitor.sh         # Real-time monitoring\n│   ├── health-check.sh    # Health checks\n│   ├── notify.sh          # Notifications\n│   └── wp-cli.sh          # WordPress CLI\n├── data/             # Runtime data (created on first run)\n│   ├── wordpress/    # WordPress site files\n│   ├── mysql/        # MariaDB data\n│   ├── valkey/       # Cache data\n│   ├── backups/      # Backup storage\n│   └── logs/         # Log files\n├── .env.example      # Environment configuration template\n└── docker-compose.yml\n```\n\n## Architecture\n\n- **FrankenPHP**: Serves PHP applications with built-in Caddy web server\n- **MariaDB**: Shared database with isolated databases per site\n- **Valkey**: Redis-compatible cache for object caching\n- **Docker Compose**: Orchestrates all services\n\nEach WordPress site runs in an isolated directory with its own database, while sharing the same PHP server and cache infrastructure.\n\n## Contributing\n\n1. Fork the repository\n2. Create your feature branch: `git checkout -b feature/my-feature`\n3. Commit your changes: `git commit -am 'Add my feature'`\n4. Push to the branch: `git push origin feature/my-feature`\n5. Submit a pull request\n\n## Support\n\n- **Issues**: [GitHub Issues](https://github.com/Open-WP-Club/wpfleet/issues)\n- **Documentation**: See [docs/](docs/) directory\n- **Discussions**: [GitHub Discussions](https://github.com/Open-WP-Club/wpfleet/discussions)\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- [FrankenPHP](https://frankenphp.dev/) - Modern PHP application server\n- [Caddy](https://caddyserver.com/) - Automatic HTTPS server\n- [WordPress](https://wordpress.org/) - The world's most popular CMS\n- [Docker](https://www.docker.com/) - Container platform\n- [Valkey](https://valkey.io/) - Redis-compatible cache\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-wp-club%2Fwpfleet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopen-wp-club%2Fwpfleet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-wp-club%2Fwpfleet/lists"}