In this blog post, I want to share my personal experience with Hestia Control Panel, an open-source web server control panel. My journey began when I decided to transition my blog from wordpress.com to a self-hosted WordPress platform. The goal was to set up a multi-purpose server for personal use, and HestiaCP seemed like the perfect fit.
Discovery
What is HestiaCP?
Hestia Control Panel is designed to provide administrators with an easy-to-use web and command line interface. This allows for quick deployment and management of web domains, mail accounts, DNS zones, and databases from one central dashboard, eliminating the hassle of manually deploying and configuring individual components or services.
What attracted me to HestiaCP was the One-Click Install Apps feature. This, coupled with the user-friendly interface, made everything manageable and straightforward.
Key Features
HestiaCP boasts a range of features, including:
- Apache2 and NGINX with PHP-FPM
- Multiple PHP versions (5.6 – 8.2, 8.1 as default)
- DNS Server (Bind) with clustering capabilities
- POP/IMAP/SMTP mail services with Anti-Virus, Anti-Spam, and Webmail (ClamAV, SpamAssassin, Sieve, Roundcube)
- MariaDB/MySQL and/or PostgreSQL databases
- Let’s Encrypt SSL support with wildcard certificates
- Firewall with brute-force attack detection and IP lists (iptables, fail2ban, and ipset)
- One-Click Quick install app
- Ultra-configurable and user-friendly Server administration
- Automated backups
Setting Up
Setting up HestiaCP was a breeze. In a matter of hours, I had everything up and running. The process was hassle-free, with no need to worry about setting up databases, SSL, PHP, Apache, etc. I could easily set up new domains from the user interface, which was a fantastic feature. I initially set this up on a t2.small EC2 instance, and everything worked perfectly for about a year.
However, I soon realized that reducing the EC2 instance size to t2.micro was not feasible as the server stopped unexpectedly at times due to low resources. This was a clear indication that it requires a minimum small size server to run efficiently.
The Challenge of Reducing EC2 Root Volume
After an year, I noticed that my EC2 EBS Root volume was over-provisioned at 50GB, with usage only around 30%. I decided to reduce the size of my EC2 root volume. While AWS provides a one-click solution to increase the volume size, reducing it is unfortunately not as straightforward.
I attempted several suggested approaches, such as attaching a new smaller EBS volume, mounting it, installing GRUB, and copying data over. However, the process was complex and failed during the GRUB installation. I decided to explore other options.
Migrating to a New Server
I devised a plan to set up a new EC2 instance with a smaller volume, install HestiaCP on it, back up the old HestiaCP server, and then restore it on the new server. This seemed like a clean solution, but it turned out to be a nightmare.
While the user migration was successful and everything seemed in place, my blog was not opening. I spent an entire evening trying to fix it, reading documentation, and troubleshooting. Later the database connections were not working due to some user related issues i suspect, and despite HestiaCP’s comprehensive documentation on setup and server administration, they lacked detailed information on migrating from one HestiaCP server to another.
Their backup and restore section was quite brief and didn’t provide the detailed guidance I needed. I also turned to their forum, where I found numerous questions similar to my own and a variety of suggested solutions. I tried a few of these, but none resolved my issue.
The Final Solution
In the end, I decided not to proceed any further. I was wary of making manual changes to the core setups, as this could potentially cause problems in the future. I realized that while HestiaCP was excellent in many aspects, its lack of comprehensive migration documentation was a significant drawback.
Finally, I decided to revert to the old school method of setting up a tiny EC2 with WordPress using Bitnami and using the export-import feature to migrate the blog. This method worked well and was super quick.
Final Thoughts
While I appreciate HestiaCP for its out-of-the-box tools and user-friendly UI, the migration process was a significant pain point. I believe that comprehensive migration documentation is crucial to the success of any tool or framework. This is an area where HestiaCP could improve and where the community could provide more support.
Despite my personal challenges, I still believe HestiaCP is a simple, production-ready, and secure tool. However, my experience may not reflect that of others.