VPS vs managed hosting is usually framed as a simple monthly-bill comparison. But a SaaS founder reporting 350,000-plus monthly visitors, 12,000 registered users, and just $60–$70 per month for a Next.js, Vercel, and Supabase stack shows why that framing can lead small teams into an expensive mistake.
The original discussion in r/SaaS came from a solo developer preparing to launch a second related product. Their current setup uses Vercel for the Next.js application and Supabase for Postgres and authentication, alongside Android and Windows clients. The question was reasonable: should a growing business move to a VPS with Coolify or Dokploy before the architecture gets more complicated? Yet the community’s dominant response was even more useful: at that price, the team should first identify a concrete operational or technical limitation—not simply chase a theoretically cheaper server. (reddit.com)
That is the central lesson for founders, marketers, and builders. Hosting is not a contest to obtain the lowest sticker price. It is a decision about risk, engineering focus, customer experience, recovery capability, and the amount of optionality a company preserves as it grows.
The SaaS hosting debate behind the $70 bill
The numbers in the Reddit post naturally attracted attention. Serving more than 350,000 monthly visitors for under $70 sounds unusually efficient, particularly when the stack includes managed deployment, a production database, and authentication. But visitors are not equivalent to requests, concurrent users, database writes, outbound bandwidth, or CPU-heavy workloads. A content-heavy product with aggressive caching has radically different infrastructure needs than a real-time analytics dashboard, AI application, or file-processing service.
Still, the important fact is not that every SaaS should expect the same bill. It is that this particular product is already receiving enough value from its managed stack that a migration needs to clear a high bar.
The author’s situation has four notable traits:
- The product is already in production and appears stable.
- The company has a solo developer, so engineering time is scarce.
- The stack spans web and native clients, making authentication and API reliability important.
- A second product is planned, which raises legitimate concerns about duplicated services, environments, deployments, and data boundaries.
The top community replies largely converged on one idea: $70 per month is a tiny expense compared with even a few hours spent provisioning, patching, debugging, or restoring infrastructure. One commenter who identified as a DevOps professional put the annual cost at roughly $720—less than one or two days of many infrastructure specialists’ time. Another suggested moving only the specific component whose cost grows abnormally, rather than replacing a functioning platform wholesale. (reddit.com)
That reaction is not blind loyalty to Vercel or Supabase. It is an application of total cost of ownership.
VPS vs managed hosting is a total-cost-of-ownership decision
A VPS has an appealing property: its monthly invoice can be predictable and low. A developer can rent a server with fixed CPU, RAM, and disk capacity, deploy Docker containers, and run multiple applications on it. Add a deployment dashboard such as Coolify, and the experience may look remarkably close to a platform-as-a-service workflow.
But comparing a $10–$40 VPS with a $70 managed stack excludes the work that the higher-level platform is absorbing. The comparison is incomplete unless it includes the cost of operating the server.
What managed platforms are actually buying you
Managed hosting commonly bundles some combination of deployment automation, TLS certificate handling, observability, automatic scaling, access management, secrets management, logs, networking, backups, database maintenance, patching, and incident response. The exact level varies by vendor and plan, but the distinction matters.
Vercel’s current platform documentation describes its Functions model as automatically optimizing resource use and scaling with demand under Fluid compute. Its pricing also makes clear that function usage can become variable: Pro usage is billed according to resources such as active CPU, provisioned memory, and invocations, rather than as a single forever-fixed server price. (vercel.com)
That variable billing is a legitimate reason to monitor usage carefully. It is not, by itself, a reason to preemptively self-host. A better question is: what workload is producing the spend, and can that workload be redesigned, cached, rate-limited, or moved independently?
Supabase and other managed Postgres providers similarly package operational work that becomes highly visible only when something fails. Database operation includes backups, point-in-time recovery policies, connection management, version upgrades, schema migrations, capacity planning, replication decisions, security updates, and recovery testing. Those are not abstract enterprise concerns once customers depend on the product.
The hidden cost formula
A practical way to compare VPS vs managed hosting is:
- Cash infrastructure cost — hosting, database, storage, bandwidth, monitoring, email, and backups.
- Routine operations time — updates, deploy failures, dependency upgrades, certificate issues, and account management.
- Incident cost — outages, slow pages, failed jobs, corrupted data, security events, and recovery.
- Opportunity cost — product features, marketing experiments, customer support, and sales work delayed by infrastructure work.
- Risk cost — the probability-weighted damage from an outage or data-loss event.
For a solo founder, the fourth category is often the largest. Saving $30 each month is $360 annually. Spending six additional hours each year administering a server may already erase that saving, even before considering the possibility of an after-hours incident.
This does not mean a VPS is bad. It means a VPS is not merely a cheaper version of managed hosting. It is a different job description.
Why the community said “do not move yet”
The Reddit thread’s strongest consensus was not that self-hosting is impossible for solo developers. It was that the founder had not described a problem worth solving through migration. At $60–$70 per month, the current platform cost is effectively a business expense rather than a material constraint. (reddit.com)
That conclusion is especially persuasive because the product is already operating at meaningful traffic. The founder is not choosing a stack for a weekend prototype; they have evidence that the present system works with actual users.
A low bill changes the burden of proof
Every migration has direct and indirect costs:
- Rebuilding CI/CD workflows.
- Reconfiguring DNS, environment variables, domains, and certificates.
- Migrating databases and validating data integrity.
- Changing authentication callbacks and mobile-client settings.
- Recreating cron jobs, queues, scheduled work, webhooks, and monitoring.
- Testing rollback procedures.
- Managing two architectures during the transition.
If the annual savings are minor, the migration must deliver something else: better performance in a target geography, lower latency to a database, a required background worker, a stronger compliance posture, a custom network design, or a meaningful escape from usage-based cost risk.
Without one of those reasons, a migration is frequently architecture speculation. It replaces proven complexity with unproven complexity.
The relevant question is not “can I self-host?”
A capable developer can almost certainly run a VPS. The more useful questions are:
- Can the team restore the database quickly and correctly at 2 a.m.?
- Does someone own operating-system patching and security hardening?
- Are backups encrypted, off-site, retained appropriately, and actually tested?
- Can the product tolerate a single server or single-region failure?
- Is monitoring set up to detect slow queries, disk pressure, CPU saturation, failed jobs, and expiring certificates before users complain?
- Does the migration make customer value or company economics materially better?
A “yes” to the first question and “no” to the rest is not production readiness. It is a promising hobby-server setup.
What Coolify and Dokploy change—and what they do not
Tools such as Coolify and Dokploy have made self-hosting substantially more approachable. They can reduce the friction of deploying containerized applications, attaching domains, configuring HTTPS, managing environment variables, running databases, and rolling out updates. Coolify, for example, describes itself as a tool that connects to servers through SSH and coordinates Docker-based builds, deployments, domains, certificates, health checks, and day-to-day application operations. (coolify.io)
For a small team, that is real value. A deployment control plane means less manual SSH work, more repeatable deployments, and a workflow closer to a conventional platform service.
But automation changes the interface to operations; it does not eliminate the responsibility.
The control plane is not the infrastructure team
Coolify’s own documentation is explicit about the dividing line. In a self-hosted setup, the user operates the Coolify instance and is responsible for its updates, backups, availability, and recovery. Even with Coolify Cloud managing the control plane, the customer still provides and secures the servers running the applications, services, and databases. (next.coolify.io)
That distinction is crucial. A dashboard can make deployment easier, but it cannot automatically decide:
- Whether a database backup is recoverable.
- How much memory Postgres should reserve.
- Whether an open firewall rule exposes a service.
- What happens when disk usage reaches 100%.
- How to isolate a compromised container.
- When to rotate credentials or apply operating-system updates.
- Whether a server outage requires failover, restoration, or customer communication.
For a product with low revenue or a technically curious founder, these may be acceptable learning costs. For a growing SaaS with paying users, the right test is whether the company wants to own those responsibilities now.
When Coolify is a reasonable move
A Coolify-backed VPS can be sensible when the team has a clear workload fit and operational discipline. Good candidates commonly include:
- A stable, containerized application with predictable traffic.
- Long-running workers or custom services that do not fit serverless execution well.
- Internal tools where downtime has limited customer impact.
- A team with Linux, Docker, backup, and incident-response competence.
- A product whose managed-service spend is materially affecting margins.
- A system that needs network-level or runtime-level control unavailable on the current host.
Coolify can run on modest infrastructure—its self-hosted setup guide lists a baseline of two CPU cores, 2 GB of RAM, and 10 GB of disk for the Coolify instance itself—but that should not be confused with the capacity and resilience required for the applications and databases it may manage. (next.coolify.io)
The takeaway: Coolify makes self-hosting easier to operate. It does not turn self-hosting into managed hosting.
The real triggers for leaving Vercel or Supabase
The better migration trigger is a specific constraint, measured over time. In the original thread, one commenter identified a classic example: long-running background work and custom cron requirements that the current serverless platform does not expose in the desired way. (reddit.com)
That is a far better reason to add infrastructure than “a VPS is probably cheaper.”
Trigger 1: A bill line grows faster than the business
A founder should inspect billing by category: compute, bandwidth or egress, image optimization, storage, database compute, database disk, function invocations, build minutes, observability, and third-party APIs. If one metric rises much faster than active users, revenue, or meaningful usage, investigate it.
For instance, a high Vercel bill caused by uncached dynamic rendering may point to a caching or architecture issue. A growing egress bill may point to large media assets, unoptimized downloads, or a CDN configuration issue. A database bill driven by inefficient queries may call for indexes, query changes, connection pooling, or read replicas—not an immediate migration of the entire application.
Vercel’s usage model is designed around measured consumption, including function CPU, memory, and invocations. That makes budget alerts, usage dashboards, and capacity reviews essential for a growing product. (vercel.com)
Trigger 2: You need a workload that is structurally different
Serverless and edge-oriented deployments are excellent for many web workloads, but not every workload belongs in a request-response function. Potential reasons to add a persistent service include:
- Video, audio, or document processing.
- Long-running imports and exports.
- Durable job queues and workers.
- WebSocket-heavy real-time coordination.
- Custom networking or private-service connectivity.
- CPU-intensive AI inference or scheduled batch jobs.
Vercel has expanded what its platform can do. Its current function documentation lists a Pro maximum duration configurable up to 800 seconds, with an extended 1,800-second beta maximum under certain conditions. That may be sufficient for some jobs, but persistent workers can still be operationally and economically cleaner for workloads that are continuous or queue-driven. (vercel.com)
The most efficient response is often hybrid: keep the polished Next.js front end on Vercel, while running a worker or specialized API on another service.
Trigger 3: You need geographic or network control
Regional traffic matters, but not in the simplistic sense that local users automatically require a VPS. What matters is the latency path between users, the application runtime, and the primary database.
If most users, the app runtime, and the database are all near one region, a single-region architecture can be fast and operationally straightforward. Moving a front end closer to users while leaving all dynamic requests dependent on a distant primary database may provide less improvement than expected. It can even increase complexity through cross-region latency and consistency concerns.
Platforms such as Fly expose explicit regional deployment options, and Fly’s documentation advises placing Managed Postgres close to the application for optimal performance. Render offers managed Postgres with features such as backups, recovery, replicas, and high availability depending on the chosen plan. (fly.io)
For a mostly regional product, start by measuring real user latency, database query times, and API response times. Do not migrate based only on a map.
Trigger 4: Compliance or architecture requires ownership
Data residency requirements, private networking, customer contracts, fixed IP allowlists, specialized observability, or a need for custom system packages can justify a move. These are business and technical requirements—not aesthetic preferences.
A VPS may indeed be the right destination in this case. But the migration should be planned as an operations project, with ownership, recovery objectives, and a maintenance budget, rather than treated as a hosting optimization.
Managed middle grounds: Render, Railway, Fly, and managed Postgres
The choice is not limited to “stay on Vercel forever” or “run everything on one VPS.” There is a broad middle layer of managed application platforms and managed databases that can handle services that do not fit a front-end-first serverless stack.
Render: a conventional managed-service model
Render offers separate service types for web services, private services, background workers, cron jobs, and workflows, along with managed Postgres and key-value services. That menu can be attractive when an application needs a long-running API or worker but the team wants the provider to retain responsibility for the underlying platform. (render.com)
Its managed Postgres offering includes recovery and backup capabilities, while paid databases include point-in-time recovery and logical exports. Larger plans can add read replicas and high availability. (render.com)
Render is a useful option when a founder wants more service types than a purely serverless flow, without assuming direct server management.
Railway: fast deployment with usage discipline
Railway is another middle-ground option, especially for developers who want source-code or container deployment, managed operational workflows, and straightforward project-level services. Railway’s pricing documentation describes a subscription plus usage model, and its CLI supports inspecting costs and setting service-level usage limits. (docs.railway.com)
Its own VPS comparison captures the core trade-off well: a VPS gives the operator full responsibility for OS setup, patching, monitoring, scaling, and security, while a managed application platform reduces that burden in exchange for a different pricing structure and less low-level control. (docs.railway.com)
Railway is not necessarily cheaper than a VPS. It is useful because it separates “I need a persistent service” from “I want to become responsible for every production server concern.”
Fly: regional control, with a careful database choice
Fly is particularly compelling when deployment geography matters and the team is comfortable with a more infrastructure-aware model. Fly Machines can be deployed in regions, and its platform documentation describes scaling the number of instances as an explicit operational action. (fly.io)
However, a founder evaluating Fly should distinguish carefully between Fly’s older unmanaged Postgres approach and Fly Managed Postgres. Fly’s docs warn that unmanaged Postgres is still an app the customer must operate, including responding to memory or disk failures, while the newer Managed Postgres service handles areas such as backups, recovery, failover, monitoring, scaling, encryption, and incident response. (fly.io)
That distinction reinforces the larger theme: the database is usually the last component a small team should self-manage merely to save money.
A better architecture: migrate components, not identity
The original commenter who advised moving only the expensive component was pointing toward a more mature infrastructure strategy. Companies rarely need to replace every layer at once. A modular migration reduces risk and makes it possible to validate the economic case before committing.
For the founder in the thread, a practical progression might look like this:
- Keep the Next.js front end on Vercel. It is already working, and the cost is low.
- Keep Supabase for Postgres and Auth. Authentication and production data are high-risk components to move without a clear reason.
- Add a managed worker only if needed. Use Render, Railway, Fly, or another platform for long-running jobs, queue consumers, or scheduled work.
- Measure the new component separately. Track its cost, failure modes, deployment experience, and impact on developer velocity.
- Only self-host a workload after proving the need. If the worker has stable, predictable resource usage and becomes costly, it may be a good first VPS candidate.
This approach preserves optionality. It avoids betting the product on a migration while still giving the team room to learn which workloads need different infrastructure.
For businesses that send product emails from those background jobs—password resets, receipts, account alerts, or onboarding sequences—the architecture should also include dependable retry behavior, idempotency, and visibility into failed sends. Those implementation details matter as much as the hosting platform; an email API reference and setup guide can help keep delivery concerns separate from the web application itself.
Should two products share infrastructure?
A second product changes the conversation because shared infrastructure can either create healthy economies of scale or create a shared blast radius. The answer is not “always separate” or “always consolidate.” It depends on what is being shared.
Share the operational foundation, separate the production boundaries
For a solo developer, sharing tooling is usually beneficial. Both products can use common patterns for source control, CI/CD, monitoring, error tracking, secrets rotation, backup verification, billing alerts, and infrastructure-as-code. These reduce repeated work.
But customer-facing systems should generally retain separable boundaries:
- Separate production databases unless the products intentionally share domain data.
- Separate environment variables and credentials.
- Separate deployment pipelines and rollback paths.
- Separate storage buckets or namespaces.
- Separate rate limits and quota monitoring.
- Separate authentication projects or clear tenant boundaries where appropriate.
The critical distinction is between shared platform operations and shared failure domains. One server running two products may seem efficient, but a failed disk, misconfigured reverse proxy, exhausted memory pool, or runaway job can take down both businesses at once.
A pragmatic first setup
At the stage described in the Reddit thread, the simplest strategy is likely to launch the second product on the same managed pattern: separate Vercel project, separate Supabase project or carefully defined data boundary, shared code conventions, shared monitoring standards, and separate billing alerts.
That creates clean accounting and makes future migration easier. If Product B later needs a background worker, add it to Product B without destabilizing Product A. If it becomes a high-volume workload, it can graduate to a specialized platform or VPS on its own merits.
The operating checklist before any self-hosting move
Before moving production traffic to a VPS, a founder should be able to answer the following questions in writing. If the answers are unclear, the managed platform is still performing valuable work.
Reliability and recovery
- What are the recovery time objective and recovery point objective for the application and database?
- Where are backups stored, how long are they retained, and are they encrypted?
- When was the last restore test completed successfully?
- What happens if the primary server, provider account, or region disappears?
- Is there a documented rollback procedure for a failed deployment?
Security and maintenance
- Who applies OS, Docker, database, and dependency updates?
- How are SSH access, secrets, and production credentials protected and rotated?
- What firewall rules and network boundaries exist?
- Who receives alerts for CPU, memory, disk, latency, error rate, and certificate expiration?
- What is the incident communication plan for customers?
Economics and capacity
- What exact managed-service bill line is the migration intended to reduce?
- What is the current and expected resource profile: CPU, RAM, disk, bandwidth, database connections, and jobs?
- How many engineering hours per month will ongoing operations consume?
- What is the financial impact of one hour of downtime?
- What does high availability cost if the product cannot tolerate a single VPS failure?
The exercise often produces an uncomfortable but useful finding: a “cheap VPS” becomes less cheap once backups, monitoring, object storage, a standby environment, and the founder’s time are included.
How to control managed hosting costs without migrating
The alternative to a premature migration is not passivity. Founders can actively reduce managed-platform risk and spend while retaining the benefits of managed operations.
First, set budget notifications and review actual usage monthly. Vercel offers spend-management capabilities on applicable plans, and its pricing documentation separates the services and metrics that can drive charges. (vercel.com)
Second, optimize obvious cost drivers before changing providers. Cache public pages and API responses where it is safe; reduce unnecessary server-side rendering; optimize images and media; avoid repetitive database queries; add indexes based on observed query patterns; batch background tasks; and place abuse protections around expensive endpoints.
Third, make external dependencies visible. A product’s hosting bill may be low while paid APIs, logging tools, analytics, image services, email providers, and AI models quietly become the meaningful operating cost. Infrastructure decisions should consider the full unit economics per active customer, not one platform invoice.
Finally, keep migration readiness without executing a migration. Use containers where sensible, avoid proprietary assumptions in core business logic, document environment variables, test database exports, and maintain a short architecture decision record. Preparedness is cheaper than a rushed exit.
Conclusion: optimize for founder focus, not server ownership
The r/SaaS thread is a valuable corrective to the idea that mature infrastructure means owning a VPS. For a solo developer serving hundreds of thousands of monthly visitors for around $70, managed hosting appears to be doing exactly what it should: removing work that would otherwise compete with product development. (reddit.com)
The right answer is not that Vercel and Supabase are permanently best for every company. Usage-based bills can grow, serverless platforms have architectural boundaries, and regional or long-running workloads can justify a different approach. But an infrastructure change should follow a named constraint, a measurable cost driver, or a new operational requirement.
Until then, the best next move may be boring: launch the second product with the known-good pattern, separate the products cleanly, add billing guardrails, and watch the workload. The most valuable infrastructure optimization for a small SaaS is often the one that leaves the founder free to build.
FAQ
Is a VPS cheaper than managed hosting?
A VPS can have a lower direct monthly price, but it may be more expensive after adding backups, monitoring, security work, downtime risk, and the developer time required to operate it. Compare total cost of ownership, not the server invoice alone.
When should a SaaS move from Vercel to a VPS?
Move when a specific need justifies it: persistent workers, specialized networking, predictable high compute use, meaningful margin pressure, compliance requirements, or a technical limitation that cannot be solved cleanly on the current platform. Do not move solely because a VPS looks cheaper in isolation.
Is Coolify enough for production self-hosting?
Coolify can make production deployments much easier by managing Docker-based application workflows, domains, TLS, health checks, and deployment coordination. But you still own the underlying server security, backups, availability, updates, incident response, and recovery. (coolify.io)
Should a solo founder self-host Postgres?
Usually not as an early cost-saving measure. A production database requires reliable backups, restore tests, patching, monitoring, connection management, and recovery planning. Managed Postgres is often worth keeping even if an application worker eventually moves to a VPS.
Should two SaaS products run on one server?
They can share development practices and operational tooling, but production workloads should have clear separation of credentials, deployments, databases, and resource limits. Avoid placing both products in one failure domain unless the downtime risk is acceptable and deliberately planned for.