Short answer: For personal portfolio or static blog, I recommend Hugo + Cloudflare Pages. It’s fast, free, and no server headache. VPS gives more control, but needs setup and maintenance. Serverless is easy but billing can be unpredictable. So my personal winner — Cloudflare Pages + Hugo.
💭 My Personal Hosting Experience
I used almost 3 VPS hosting services in the past — some cheap, some mid-range. VPS hosting gives you total control, but you have to set up everything manually. That means installing web servers, databases, SSL, and security tools. It’s powerful but also a pain sometimes.
The best free VPS control panel I’ve found is CloudPanel. It’s super easy to use and supports Node.js, Next.js, Laravel, PHP, and WordPress directly. You can deploy a Next.js app easily without dealing with complex Nginx config files.
There’s also Coolify — kind of a self-hosted version of Vercel or Netlify. It’s cool and modern but not great for beginners since it relies heavily on CLI and containers. For simplicity and long-term stability, CloudPanel on a VPS works great in my experience.
💰 VPS vs Serverless — Cost and Control
Cheap VPS providers like IONOS or Contabo offer plans starting at just $5/month. You get real resources — like 4GB RAM, storage, and root access. Compared to serverless platforms (like Vercel, Netlify, or Cloudflare Workers), that’s a lot more power for the price.
But the difference is — with VPS, you manage everything. That includes updates, SSL, domains, and scaling. With serverless, you skip all that setup — but then the cost can jump randomly based on API calls, bandwidth, or edge executions. That’s the real deal down 👎 for many devs who just want stable predictable hosting.
⚙️ My Stack for Portfolio / Blog
After trying all types of setups, here’s what I personally use now:
- Static Site Generator: Hugo (super fast)
- Frontend Tools: Tailwind CSS + Alpine.js
- Deployment: Cloudflare Pages via Wrangler CLI
- Automation: Custom Node.js scripts that generate local Markdown files and handle content data automatically
This combo is perfect for blogs, portfolios, or any project that doesn’t need real-time backend logic. It’s fully serverless, free, and globally cached.
🌍 My Current Blog Setup
The blog you’re reading right now is built using the same stack — Hugo + Cloudflare Pages. Deployed using wrangler pages deploy ./public, all Markdown content auto-formatted locally, and the site updates instantly across Cloudflare’s global edge network.
No bills, no scaling issues, no downtime. Just clean workflow and instant speed.
⚖️ VPS vs Serverless — Quick Comparison
| Feature | VPS Hosting | Serverless Platforms |
|---|---|---|
| Setup | Manual, needs software setup | Automatic, ready to deploy |
| Control | Full root access | Limited (platform managed) |
| Cost Predictability | Fixed monthly | Usage-based, sometimes unpredictable |
| Performance | Depends on your VPS specs | Edge optimized, scalable |
| Best For | Developers who want full control | Static or small dynamic sites |
🏁 Final Thought
If you love tweaking servers and want to run multiple apps (Next.js, PHP, WordPress) — go with a VPS + CloudPanel.
But if you want peace of mind, no bills, and pure speed for your portfolio or blog — use Hugo + Cloudflare Pages. That’s my personal choice, and I don’t see myself going back soon.
Stack summary: Hugo + Tailwind CSS + Alpine.js + Wrangler CLI + Cloudflare Pages = Perfect combo 💪
