Why I Chose VPS + Coolify Instead of Vercel
When deploying my personal projects, I chose a self-hosted VPS with Coolify over Vercel. Here's why control, learning, and cost predictability won over convenience.
Why I Needed an Alternative to Vercel
Vercel is exceptional for Next.js deployments. The GitHub integration is seamless, the zero-config setup gets you to production in minutes, and the developer experience is polished. For solo projects, it's completely free, which makes it an obvious choice for many developers.
However, as soon as you add collaborators to a project, the pricing model changes significantly. Each team member costs an additional fee, and while that might make sense for production applications with revenue, it felt excessive for personal projects where I wanted the flexibility to collaborate or experiment without worrying about mounting costs.
Beyond cost, I wanted hands-on experience with infrastructure and deployment pipelines—the kind of skills that stand out on a resume. Vercel's abstraction is convenient, but it doesn't teach you Docker, server management, or CI/CD configuration. Those are valuable skills for backend engineers, and I wanted to build them while deploying something real.
What is Coolify?
Coolify is an open-source, self-hosted Platform-as-a-Service (PaaS) alternative to Heroku, Vercel, or Netlify. It runs on your own VPS and provides an interface for deploying applications using Docker containers. You get GitHub integration, automatic SSL certificates, webhook-based deployments, and a clean dashboard—all running on infrastructure you control.
Unlike managed platforms, Coolify gives you full access to the server, deployment pipeline, and application environment. You can host multiple projects on the same VPS, customize your Docker setup, and avoid vendor lock-in. It's the middle ground between raw server management and fully managed platforms.
The Decision: Why VPS + Coolify?
The decision came down to three main factors: cost predictability, full control, and learning value.
Cost predictability was a big driver. I went with a Hetzner CX23 VPS (2 vCPU, 4GB RAM, 40GB SSD, 20TB traffic) for $4.99 per month plus IPv4 costs (around $6 total). That's a fixed cost regardless of traffic, collaborators, or bandwidth. With Vercel, while solo use is free, adding collaborators would quickly exceed the VPS cost. More importantly, the VPS can host multiple projects at the same flat rate, which provides excellent value.
Full control over the infrastructure meant I could configure deployments exactly how I wanted. I use pnpm instead of npm to optimize GitHub Actions usage on the free tier. I crafted a multi-stage Docker build that minimizes image size and memory consumption for the small VPS environment. I manage secrets through Coolify and GitHub Actions without relying on third-party abstractions.
Learning value was perhaps the most important factor. Setting up a VPS, installing Coolify, configuring Docker builds, and wiring up a GitHub Actions pipeline taught me practical DevOps skills. These experiences are resume-worthy and gave me a deeper understanding of how modern deployment pipelines work. You don't get that from clicking "Deploy" on a managed platform.
Additionally, hosting on a VPS means I can deploy other projects—APIs, databases, or experimental apps—on the same server without paying per-project. That flexibility is valuable for developers who like to experiment and build side projects.
Setup Overview: How It Works
The deployment pipeline for my projects is straightforward but powerful. Here's how it works in practice. If you're interested in the full setup process, I wrote a detailed guide on how to setup Coolify on a Hetzner VPS.
I start with a multi-stage Dockerfile optimized for VPS constraints. The first stage installs dependencies using pnpm (enabled via corepack), the second stage builds the Next.js application, and the final stage creates a minimal production image with only the runtime files. The production image includes a non-root user for security, a healthcheck endpoint, and Node memory limits tuned for the 4GB VPS environment.
The GitHub Actions workflow handles the build and deployment. On every push to the main branch, GitHub Actions builds the Docker image using BuildKit caching to speed up subsequent builds. The image is tagged with both latest and the commit SHA, then pushed to GitHub Container Registry (GHCR). After the image is published, the workflow triggers a Coolify webhook that pulls the new image and deploys it.
Secrets like COOLIFY_TOKEN and COOLIFY_WEBHOOK are managed in GitHub repository secrets, keeping them out of the codebase. Coolify handles SSL certificates automatically via Let's Encrypt, domain routing, and container health checks.
The entire pipeline runs on GitHub Actions' free tier because pnpm is more efficient than npm, and Docker layer caching minimizes build time. From code push to live deployment typically takes 3-5 minutes.
The Challenges
This setup is not without trade-offs. The initial configuration took significantly longer than Vercel's zero-config deployment. I had to learn Docker multi-stage builds, configure Coolify, set up GitHub Actions, and debug various issues along the way. For someone with no DevOps experience, this would be a steep learning curve.
Unlike Vercel, there's no global edge network or serverless functions out of the box. You're running a single server in one region (in my case, Germany with Hetzner). For personal projects with modest traffic, this is fine. For a high-traffic application that needs global low latency, you would need additional infrastructure like a CDN (which can be added via Cloudflare).
Maintenance is another consideration. With Vercel, infrastructure updates are automatic. With a VPS, you're responsible for keeping the server secure, applying updates, and monitoring uptime. Coolify simplifies much of this, but the responsibility still falls on you.
That said, these challenges are also learning opportunities. If your goal is to build DevOps skills and understand infrastructure, these "challenges" are actually features, not bugs.
When to Choose Which Platform
Choose Vercel if you need zero-config deployment, edge functions, or serverless scale. It's ideal for teams that want to focus purely on application code without touching infrastructure. If you're building a production SaaS with revenue and need global performance, Vercel's features and support justify the cost.
Choose VPS + Coolify if you want control, cost predictability, or hands-on DevOps experience. It's perfect for developers who want to learn infrastructure skills, host multiple projects economically, or avoid vendor lock-in. If you're early in your career and want to build resume-worthy experience, going directly to VPS + Coolify (or AWS) provides practical skills at a low cost.
For personal projects and side projects, I recommend starting with a VPS setup. The learning curve pays dividends in technical knowledge, and the cost savings are significant if you're hosting multiple applications. You can always migrate to a managed platform later if requirements change.
Conclusion
Choosing VPS + Coolify over Vercel was the right decision for my personal projects. I gained practical DevOps experience, reduced costs to a predictable flat rate, and maintained full control over my infrastructure and deployment pipeline. The setup process was more involved, but the result is a production-grade deployment that I fully understand and can extend as needed.
This isn't just about where code runs—it's about career growth. Understanding Docker, CI/CD pipelines, server management, and deployment strategies makes you a more well-rounded engineer. These skills are transferable to any infrastructure you encounter in your career, whether it's AWS, GCP, or on-premise systems.
If you're considering a similar choice, I encourage you to try both. Vercel is excellent for understanding modern deployment workflows, and VPS + Coolify is excellent for learning what happens under the hood. Both have value, but for developers seeking infrastructure experience at a low cost, the VPS path offers unique benefits.