There are plenty of scripts in the internet, some of them even open source, that helps us to install WordPress automatically in a (single) server. Bitnami is the most popular among them. However, none of them met my requirements. I have some design considerations, security requirements and performance checklists. Since none of the existing tools met all my principles, I started developing my own tool to set up a (single) WordPress site in a (tiny) server.
Here are my goals in mind when developing such a tool…
Generic Goals
- In sync with WordPress philosophy of “decision, not options”.
 
Performance Checklist
- Redis for object cache (memcached as an alternative / backup)
 - WP Super Cache as full page cache (with Batcache as an alternative / backup)
 - No Apache (long live Apache!)
 - PHP 7.x
 - Nginx
 - Varnish (planned, but no ETA)
- Why Varnish: to quickly deploy geo-distributed nodes
 
 
Security Considerations
- only ports 80, 443, and port for SSH are open
 - no phoning home
 - no external dependencies (such as third-party repositories)
 - automatic security updates (with an option to update everything)
 - disable password authentication for root
 - Nginx (possibly with Naxsi WAF when h2 issue is resolved)
 - umask 027 or 077
 - ACL integration
 - weekly logwatch (if email is supplied)
 
Implementation Details
- agent-less
 - random username (like GoDaddy generates)
 - no extra / third-party packages
 - automatic restart of MySQL (and Varnish) upon failure
 - automatic backup of site (files and DB) to AWS S3
 - Integrated wp-cli
 - Support for version control (git, hg)
 - Composer support
 
Web Interface
- Based on OpulencePHP or similar framework
 - LetsEncrypt support (the famous 1-click installation of SSL)
 - Backups download and restoration!
 
Progress
As you may have guessed, there is a huge work involved. Fortunately, I have started going in the right direction due to somewhat clear goals to back me up.
Please check it out in its Github repo… https://github.com/pothi/wp-in-a-box
What’s developed so far is enough for my current needs. I wouldn’t want to spend too much time on this project, if there are no takers. So, I am awaiting some feedback from early adopters. If you are one of them, please comment here on what you think of its various goals. You may also give a thumbs up by staring it in Github. If you used it and if you notice any issue/s, please feel free to open an issue in Github. All feedback is welcomed!
A huge thanks for Mail-In-A-Box for the inspiration!
Excellent work. Are you integrating your WP-specific Nginx conf tweaks, especially the https://github.com/pothi/WordPress-Nginx/#security part?
Unfortunately, not completely. For example, since creating a strong dhparam takes time, I usually do it post-installation. Thanks.
Hello,
I have question I’m very new to Redis & memcached.
Why did you choose Redis over memcached? I would like to know.
Thanks
I don’t remember why I started using Redis over memcached. I think it is because of variety of options that I had with Redis to integrate it with WordPress (as WP Object Cache).