It's been a while since I shared my excitement here; I guess I lost it.
I got my excitement back and am here to share again!
A semi-automated Let’s Encrypt SSL setup for WordPress on Namecheap, without breaking existing DNS and SSL setups.
The Goal
I had a simple (but tricky) need:
- My main domain is hosted on Namecheap.
- My main site and APIs are hosted on Render.com using A records.
- I wanted to create a blog using WordPress on a subdomain like
blog.mydomain.com
. - I wanted to do this without messing up existing DNS/SSL settings for the main domain and API services.
- I also needed a valid SSL certificate for the subdomain - even though Namecheap shared hosting doesn’t allow Let’s Encrypt automation.
Here's how I did it.
Why I Chose Namecheap Legacy Hosting Over Cloud Hosting
While there are dozens of cloud-based WordPress hosting platforms out there (like Kinsta, Cloudways, WP Engine, and even Render itself), I made a conscious decision to go with Namecheap’s legacy shared hosting plan - and here’s why:
Cost.
The amount I pay yearly for legacy hosting on Namecheap is less than what I would pay monthly on a typical cloud-based WordPress hosting platform.
Since this blog isn't mission-critical in terms of performance or uptime, and I can handle the technical bits myself, it didn’t make sense to overpay for managed cloud infrastructure. The legacy hosting plan gave me:
- Full cPanel access
- Softaculous for 1-click WordPress install
- Support for manual SSL
- Enough storage and bandwidth for my use case
The tradeoff: No automation for SSL
The win: I save real money every year
The Problem
If you’ve tried something similar, you’ve likely hit at least one of these roadblocks:
- DNS conflict — Hosting your main domain on Render means you don’t want Namecheap’s hosting to override your A records or nameservers.
- Namecheap’s shared hosting forces you to assign a primary domain, and if you use your real domain, it may mess with existing DNS setups.
- No free SSL automation — Shared hosting on Namecheap doesn’t support Let’s Encrypt natively or auto-renewals.
The Setup That Worked
1. Keep Main Domain on Render
My @
and api
DNS records on Namecheap point to Render's IP addresses - this part stays untouched.
2. Create a Dummy Domain for Hosting Setup
Since Namecheap requires a domain when setting up shared hosting, I used a dummy domain (e.g., mysandboxdomain.com
) just to initialise the hosting account.
This way, my main domain's DNS was never touched.
3. Add a Subdomain (blog) Pointing to Namecheap
In my DNS settings on Namecheap (or Cloudflare if you're managing DNS there), I added this:
Type: A
Host: blog
Value: <Namecheap hosting IP>
TTL: Automatic
This pointed only the subdomain (blog.mydomain.com
) to Namecheap hosting - leaving mydomain.com
and api.mydomain.com
on Render untouched.
4. Install WordPress on the Subdomain
In Namecheap’s cPanel:
- I added
blog.mydomain.com
as an Addon Domain or via the Domains panel. - Then I installed WordPress to that subdomain via Softaculous.
Everything was working, except…
5. SSL: The Final Challenge
Render already handles SSL for my main site and APIs.
But Namecheap wouldn’t let me install Let’s Encrypt automatically for the subdomain.
So I did the next best thing:
Manual Let’s Encrypt Setup with Certbot
On my local Linux machine:
- I installed Certbot:
sudo apt install certbot
- Then I generated a cert manually using the DNS challenge:
certbot certonly --manual --preferred-challenges dns -d blog.mydomain.com
Certbot gave me a
_acme-challenge.blog
TXT record to add.-
I added that in my DNS and waited a few minutes before confirming.
Certbot suggested Google Admin Toolbox tool to confirm that the TXT value has propagated.
Files Generated
After successful verification, Certbot gave me:
-
cert.pem
(SSL certificate) -
privkey.pem
(Private key) -
chain.pem
(CA bundle)
Installed Certificate in cPanel
In cPanel > SSL/TLS > Manage SSL Sites, I selected blog.mydomain.com
and:
- Pasted
cert.pem
as the Certificate (CRT) - Pasted
privkey.pem
as the Private Key - Pasted
chain.pem
as the CA Bundle
Boom - SSL activated.
What I Have to Do Every 90 Days
Let’s Encrypt certs expire every 90 days, so I:
- Run the same
certbot
command - Update the TXT record again
- Get fresh certs
- Paste them into cPanel manually
It takes 5–10 minutes and works reliably.
What This Setup Gives Me
[] | Outcome |
---|---|
- | Main domain + API remain fully functional on Render |
- | Blog subdomain is hosted separately on Namecheap |
- | SSL for blog via Let's Encrypt (manual install) |
- | Legacy hosting saves $$$ vs cloud WordPress hosting |
- | I have a full-featured WordPress blog securely running |
Who This Is For
- You host your main domain/app on Render, Vercel, Netlify, etc.
- You want a separate WordPress blog under the same domain
- You need HTTPS on a subdomain via Let’s Encrypt
- You want to avoid high-cost WordPress hosting platforms
- You’re okay pasting a cert every 90 days
Final Thoughts
This setup might sound like a hack, but it’s a clean and modular way to get:
- Performance and simplicity (Render)
- Flexibility and blogging power (WordPress on Namecheap)
- No extra monthly cost for cloud blog hosting
- SSL across your stack, with control over all parts
And the best part? I didn't have to touch the main domain's DNS or sacrifice performance.
Let me know if you have any suggestions or questions in the comments.
You can reach me on LinkedIn and Twitter: killcodeNG.
Top comments (0)