Goodbye cPanel
As I planned roughly 14 months ago I finally terminated my cPanel license and said goodbye to some software I started using more than a decade ago. This journey took far longer than I expected, but it was worth the effort.
It all started way back in January of 2020 when cPanel decided to end the $170/year single VPS license. Of course I can understand with the increase of server power - some folks had thousands of sites on a single server. However, for me hosting roughly 17 websites my price was changing to $360/year for the same hosting. This was basically a ~111% increase in prices.
This is because I landed in the cPanel Pro Cloud (30 Accounts) plan, but the other available options were:
- Solo - 1 account
- Admin - up to 5 accounts.
- Pro - up to 30 accounts.
- Premier - up to 100 accounts.
Now knowing I could terminate 3 sites instantly my new website count in June of 2020 was 14. The jump between Admin/Pro plans upset me as I was sitting at 14 websites but paying for up to 30. What I really wanted was some plan that got you 15 accounts.
- As the year came to a close 2021 arrived with a new monthly price of $32.25 (from $30) and thus my new yearly bill was $387.
- Another year went by and 2022 arrived with a newly raised price of $35.99 (from $32.25) and thus my higher yearly bill was $431.88.
- Like clockwork another year (2023) another increase to $39.99 (from $35.99) and thus my yearly bill jumped to $479.88.
- As expected 2024 hit and the prices went up again - this time to $42.99 (from $39.99) and thus my yearly was $515.88.
- Unexpected in the middle of 2024 (August) my price went up again due to running CentOS 7 and being subjected to extended support which moved my price to $47.29 (from $42.99) and thus my yearly was now $567.48.
Additional Fees: Beginning August 1, 2024, there will be an additional monthly fee per qualifying license for ELS Support. The ELS Support fee will continue being applied until the underlying operating system is upgraded to a supported version. We are offering one month of free ELS Support for the month of July 2024. The ELS Support fee may be increased beginning January 1, 2025.
I was now determined in 2024 to not hit 2025 for another price increase which may be double due to my ELS support + the cPanel license. I got to work in January of 2024 with my remaining 13 websites. I was just getting exhausted from this slow boil of price increases and how my cPanel license was now more expensive than the server it was on.
Pretty quickly I plucked the websites that were WordPress and I pushed those owners to move to a different service (Hostinger - referral) which was very easy to migrate. I even migrated the domains and email over so these individuals had everything to manage in one location.
As I migrated those domains I realized my DNS for a good chunk of my sites were controlled via my cPanel server and I didn't want to manage my own DNS in the future. So knowing DNS propagation takes awhile I setup my new DNS on either Porkbun/Linode depending on some personal organization. Nothing changed at this point except some DNS entries as they were clones of the existing DNS zone. I was ready to get back to moving some websites now that DNS was out of the picture.
I had a few sites that were nothing more than a little static HTML page, so I migrated those over to the same server this blog runs on and pretty quickly I had only 9 websites left. These broke down to:
- 4 regular Laravel projects that ranged from PHP 8.0 to PHP 8.3
- 2 very old Laravel projects (5.1.x)
- 1 very old Invision Power Board forum (IPB 3.x)
- 1 very large modern Laravel project (30GB DB)
- 1 Ghost blog
So at this point I was considering a migration to a modern operating system using cPanel Elevate, but in my test runs it was not a viable option. This was because it would not install the older PHP versions and this was breaking a solid amount of my websites. So I proceeded with a different approach.
I looked at the website that I utilize to capture my Pi-hole stats and it was a website on the Internet that was getting data API`d out from my local network Raspberry Pi. So at that point I finally realized the purpose of my unused Raspberry Pi 5.
ibotpeaches@warlock:/var/www/html $ php artisan about
Environment .............................
Application Name ............... Pi Stats
Laravel Version ................ 10.48.23
PHP Version ...................... 8.3.14
Composer Version .................. 2.8.2
Environment .................. production
Debug Mode .......................... OFF
URL ........................... 127.0.0.1
Maintenance Mode .................... OFF
A few hours later I had warlock provisioned and serving my API that my Pi-hole a few inches away on a different Pi was sending.
I had 8 websites remaining, but 4 weren't mine so I passed that responsibility onto the responsible party and focused my effort on the final 4 sites around the Thanksgiving break from work.
Thus remaining was:
- A Laravel 5.1 (PHP 7) website serving an Ingress project.
- A Laravel 10 (PHP 8.1) website serving an Ingress project.
- A Laravel 11 (PHP 8.2) Halo Infinite website with a 30GB database.
- An IPB 3.x Halo 2 forum requiring PHP 5.6.
So boy only one of these were going to be easy. I immediately started with buying an equivalent $40 Linode to begin with a modern Debian version and recent PHP version.
Seeing how work occasionally has a client come in the door with a very old Laravel application and requires support. I decided to manually upgrade my Laravel 5.1 project all the way to Laravel 11 with a modern PHP version to refresh my memory on older upgrades. This took about 15 hours as there was a good deal of changes in the resources/assets (SemanticUI) and packages that were no longer needed and directly in Laravel.
With a quick host file change everything looked good and I solidified on using Certbot on all new servers, instead of mix/matching solutions like acme.sh/Certbot. I was excited to try out the "IP Transfer" functionality of Linode to simply re-claim my 12 year old IP on the new server once all sites were transferred.
After a large internal discussion about containerizing a PHP 5.6 application to support an older version of forum software - I decided against it. I feel comfortable with Docker on Amazon and ECS, but I didn't want the costs associated with that. I didn't feel comfortable with my knowledge of self-hosting Docker in a manner that was secure.
So I payed the renewal of my software which had been expired for almost a decade and got the latest and greatest version. To my utmost surprise, I ran a test migration from my mega old version to latest and it just worked first time. Yeah I lost a few tweaks here and there, but as my goal was to just persist content I didn't lose that aspect.
However, the latest forum software (IPB v4) couldn't work on the latest and greatest PHP (8.4) so I decided to spin up a new $5/month Linode to host just this website. I ran the real migration and ported my cbox over to the new version. This time I just gave it my old 70 lines of code I custom wrote and asked OpenAI to convert it to the latest version of IPB software and it did. I was impressed because I sure didn't know the names of new functions/methods, but AI proved successful in this case.
I was down to 2 sites and one of them was a small modern Laravel application. So I took a database export, changed my CI pipeline to the new server and deployed it. It failed a few times for missing some PHP extensions, but then it was complete and moved. I wish all the sites transferred as easy as that one.
I was down to 1 site with a massive 30GB database. Thankfully the site was Leaf which could survive in read only mode while I transferred it. So I took a backup, did a little scp transfer and painfully waited 12 hours for it to complete a SQL import. I'm sure there was a more optimized way to do that, but this worked. I tweaked my hosts file and confirmed no issues, so was ready to swap IPs.
I transferred the IP from my old Linode to my new Linode and immediately triggered Certbot to obtain some SSL certificates – everything just worked immediately. I was quite surprised outside of doing a large forum migration how well everything transferred. Hopefully when 90 days elapses and certificates renew I'll still be able to say that.
When the year clocks into 2025 and I no longer see a cPanel bill - I'll be happy. It was an amazing piece of software when I lacked the technology skills to manage a Linux server, but those times have changed. I might have continued to pay for it instead of migrating everything away, but boy a price hike every year was insanely depressing. Imagine if every piece of subscription software you depend on changed prices every single year. I'm glad this is probably last time I'll write the word cPanel and won't have to worry about it ever again.