Why I Ditched PaaS: The Journey to Self-Hosted Infrastructure
How moving away from Vercel and Railway saved me thousands whilst maintaining performance and improving control
After years of paying premium prices for Platform-as-a-Service (PaaS) solutions like Vercel and Railway, I made the decision to move my entire infrastructure to self-hosted VPS servers with Hetzner. The result? Dramatic cost savings, excellent performance, and complete control over my stack. Here's why this transition has been one of the best business decisions I've made for Foresite.
The Evolution: From Shared Hosting to PaaS to Self-Hosted
My hosting journey didn't start with PaaS solutions. Like many developers, I began with WordPress sites on shared hosting - GoDaddy, Gandi, and similar providers. At first, the £5-10/month shared hosting seemed reasonable. But as client needs grew, so did the costs.
The WordPress Cost Creep:
- Shared hosting performance issues with more complex sites (e-commerce) often led to "premium" hosting upgrades
- Specialist WordPress hosts like WP Engine: £24/month per site
- Premium plugins for base functionality & performance: £50-200+ per site annually
- Security, backup and monitoring plugins: Another £100-300/year
- Regular maintenance and updates: Ongoing time investment
For a handful of client WordPress sites, I was easily spending £100-300/month just on hosting and plugin licensing, before factoring in the maintenance overhead. Each site lived in its own silo with its own costs.
In 2015 I moved away from mainly using WordPress, in favour of modern JavaScript frameworks, like React, and static site generators (Astro and Gatsby) using JAMstack approaches, which significantly reduced complexity (for simple websites), costs and improved performance. However, I still needed a reliable way to host and deploy these modern applications.
Enter PaaS Solutions: Vercel, Netlify, Fleek and Railway promised easy deployments, scalability, and modern developer experiences. Initially, I embraced these platforms enthusiastically:
- Vercel for hosting front-end applications (NextJS, Astro) and static sites
- Netlify & Fleek for static site hosting
- Railway for backend services and databases
- Supabase managed databases for data storage
- Monitoring services (UptimeRobot, Logflare) for observability
The developer experience was fantastic. Deployments were a breeze, and scaling was handled automatically. However, as my number of projects grew, so did the costs. The per-project pricing model with many of the services meant that every new client or application added to my monthly bill and subsequently, having to pass those costs onto the client.
The PaaS Tax Was Killing My Margins
Let's talk numbers. What I was paying monthly for PaaS solutions:
- Vercel Pro: £17/month base + usage overages
- Railway: £3-17/month per project
- Analytics, bug alerts & other extras: Another £20-30/month per project
For multiple client projects and my own applications like Yore, I could easily hit £150-300+ per month. As a freelance developer, that's a significant chunk of revenue that could be better invested in business growth and improving value to clients.
Compare that to my current setup: Five Hetzner Cloud VPS servers for under £50/month total. That's roughly an 80% cost reduction while actually improving capabilities. Yes, I do lose some features that these services provide, so I don’t have a global delivery network and edge computing as standard but for most use-cases I deal with, these are benefits that aren’t needed.
What I Gained: More Than Just Cost Savings
Complete Infrastructure Control
With my self-hosted setup, I can:
- Configure servers exactly how I need them
- Install any software or service required
- Optimise performance for specific use cases
- Implement custom security measures
- Scale resources independently
Better Performance Through Optimisation
PaaS solutions are built for the general case. My self-hosted infrastructure is optimised for my specific needs:
- Faster deployments: No waiting for PaaS build queues
- Optimised for target audience: Servers located in Europe for UK-focused businesses (no need to pay for global CDN when clients target local markets)
- Custom caching strategies: Redis and application-level caching tailored to specific use cases
- Resource allocation: CPU and memory allocated based on actual usage patterns
- No cold starts: Always-on containers vs serverless spin-up delays
The Technical Stack That Makes It Work
My current infrastructure is built on solid foundations:
Server Architecture:
- 5 Hetzner Cloud VPS servers in a coordinated cluster
- Docker Swarm for orchestration and high availability
- Traefik for intelligent load balancing and SSL termination
- Dokploy for deployment management
Monitoring and Observability:
- Grafana + Prometheus for comprehensive metrics
- Discord alerts for critical issues
- CPU spike detection (learned this the hard way during a security incident!)
- Real-time performance monitoring across all services
- Open-source analytics with OpenPanel ensures clients have access to website analytics and data privacy for users.
Security Layers:
- UFW firewalls on every server
- Custom iptables rules for Docker containers
- Hetzner Cloud firewall as an additional layer
- Regular security updates and monitoring
Real-World Results
Six months into this transition, the benefits are clear:
Financial Impact:
- Monthly infrastructure costs down from £150-300 to ~£55
- £2,000+ annual savings that goes straight to business growth
- Ability to offer more competitive pricing to clients
Technical Benefits:
- Deployment times reduced
- Better monitoring and observability - all in one place
- Great performance
- Complete flexibility to implement any architecture pattern
- Zero vendor lock-in concerns
- Right-sized for target market: Most of my clients serve UK audiences, so European servers provide excellent performance without paying for global CDN infrastructure they don't need.
Business Impact:
- Competitive advantage through lower operational costs
- Better margins on fixed-price projects
- Ability to take on more experimental projects
- No more per-site hosting costs - one infrastructure serves all clients
Breaking Free from Per-Site Economics
One of the biggest advantages of self-hosted infrastructure is escaping the per-site cost model. Whether I'm hosting one client site or twenty, my base infrastructure costs are predi. This is a game-changer for business economics.
With WordPress hosting, each new client meant:
- Another hosting account to manage
- Separate security and backup concerns
- Individual licensing costs
- Isolated performance optimisation
Now, adding a new client site means:
- Deploying another container to the existing cluster
- Shared monitoring and security infrastructure
- Bulk resource utilisation across all projects
- Consistent tooling and deployment processes
This shift from per-site to infrastructure-wide thinking has transformed how I can price projects and scale the business.
The Learning Curve Was Worth It
I won't sugarcoat it: there was definitely a learning curve. Docker orchestration, server management, and security hardening all require time investment. But here's the thing – these are skills that make you a better developer and more valuable to clients.
The knowledge gained from managing production infrastructure has made me better at:
- Debugging performance issues
- Understanding application bottlenecks
- Architecting for scale and reliability
- Security best practices
Is Self-Hosted Right for You?
This approach isn't for everyone. Consider self-hosted infrastructure if you:
- Have multiple projects that would benefit from shared resources
- Want to understand your infrastructure deeply
- Are comfortable with server administration
- Value cost control and performance optimisation
- Want to differentiate yourself technically
Stick with PaaS if you:
- Are just getting started and need to focus purely on application code
- Don't have time to learn infrastructure management
- Have unpredictable traffic patterns that benefit from serverless
- Prefer to pay for convenience over cost optimisation
The Strategic Advantage
Here's what I've learned through this entire journey - from shared WordPress hosting to premium PaaS and finally to self-hosted infrastructure: every hosting decision is a business decision.
The progression taught me valuable lessons:
- Shared hosting taught me the basics but showed the limitations of shared resources
- WordPress specialist hosting and plugin system demonstrated how quickly "affordable" solutions become expensive
- PaaS solutions provided modern deployment but at premium prices
- Self-hosted infrastructure finally gave me control over both costs and capabilities
Infrastructure isn't just a cost centre – it's a competitive advantage. When potential clients see my technical setup, they understand they're working with someone who has evolved through every hosting paradigm and chosen the optimal solution. The frst.uk subdomain architecture (web.frst.uk, monitor.frst.uk, analytics.frst.uk) serves as a living portfolio that demonstrates our capabilities before we even start talking about their project.
Looking Forward
The transition to self-hosted infrastructure has been transformational for Foresite. Lower costs, great performance, technical differentiation, and deeper understanding of production systems – it's difficult to see any downside.
If you're a freelance developer or small agency feeling the pinch from PaaS pricing, I'd encourage you to explore self-hosted options. Start small, learn gradually, and migrate carefully. The investment in infrastructure knowledge will pay dividends for years to come.
Interested in learning more about cost-effective, high-performance infrastructure? Check out how I can help your business achieve similar results at frst.uk – Fast, Reliable Sites & Technology without the premium pricing.