{
  "slug": "vercel-to-dokploy",
  "title": "Vercel Pro to self-hosted Dokploy",
  "summary": "Dokploy is the lighter of the two self-hosted platform-as-a-service options here. The seat price is still only half the story.",
  "publishable": true,
  "block_reason": null,
  "freshness": {
    "state": "fresh",
    "publishable": true,
    "oldest_input_days": 46.5,
    "problems": []
  },
  "incumbent": {
    "vendor": "Vercel",
    "vendor_id": "vercel",
    "plan": "Pro",
    "plan_id": "pro",
    "amount": 20,
    "period": "month",
    "per_seat": true,
    "billed": "monthly",
    "seats": 5,
    "quote": "Pro Popular $20 /mo. ... Team Seats Developer seat 1 $20 / month",
    "caveat": "$20 per developer seat per month, which includes $20 of usage credit. Bandwidth and compute above that credit are billed on top, so real bills commonly exceed the seat price.",
    "source_url": "https://vercel.com/pricing",
    "verified_at": "2026-10-19",
    "needs_reverification": false
  },
  "alternative": {
    "name": "Dokploy (self-hosted)",
    "repo": "Dokploy/dokploy",
    "project": {
      "full_name": "Dokploy/dokploy",
      "url": "https://github.com/Dokploy/dokploy",
      "homepage": "https://dokploy.com/",
      "description": "Open Source Alternative to Vercel, Netlify and Heroku.",
      "stars": 37861,
      "forks": 3094,
      "open_issues": 777,
      "license": null,
      "archived": false,
      "pushed_at": "2026-10-16T15:40:46Z",
      "days_since_push": 3,
      "latest_release": {
        "tag": "v0.30.8",
        "published_at": "2026-09-29T08:16:23Z",
        "url": "https://github.com/Dokploy/dokploy/releases/tag/v0.30.8"
      },
      "days_since_release": 20,
      "health": "active",
      "recommended": true,
      "verified_at": "2026-10-19T10:53:58.874Z"
    },
    "box": {
      "provider": "Vultr",
      "name": "vc2-2c-4gb",
      "id": "vultr:vc2-2c-4gb",
      "vcpu": 2,
      "ram_gb": 4,
      "disk_gb": 80,
      "bandwidth_tb": 3,
      "monthly_usd": 20,
      "url": "https://www.vultr.com/pricing/",
      "verified_at": "2026-10-19T10:53:42.716Z"
    },
    "storage": {
      "id": "backblaze-b2",
      "name": "Backblaze B2",
      "usd_per_gb_month": 0.00695,
      "egress": "free up to 3x stored volume per month, then $0.01/GB",
      "pricing_url": "https://www.backblaze.com/cloud-storage/pricing",
      "quote": "the amount of data stored per byte-hour over the last month at a rate of $6.95/TB/30-day",
      "verified_at": "2026-09-03",
      "verified_by": "human",
      "affiliate": true,
      "gb": 40,
      "monthly_usd": 0.28
    },
    "requirements": {
      "ram_gb": 4,
      "vcpu": 2,
      "disk_gb": 50
    },
    "box_alternatives": [
      {
        "provider": "Vultr",
        "name": "vc2-2c-4gb",
        "monthly_usd": 20,
        "vcpu": 2,
        "ram_gb": 4,
        "disk_gb": 80,
        "url": "https://www.vultr.com/pricing/",
        "chosen": true
      },
      {
        "provider": "Linode",
        "name": "Linode 4GB",
        "monthly_usd": 24,
        "vcpu": 2,
        "ram_gb": 4,
        "disk_gb": 80,
        "url": "https://www.linode.com/pricing/",
        "chosen": false
      },
      {
        "provider": "DigitalOcean",
        "name": "2 vCPU · 4 GB",
        "monthly_usd": 24,
        "vcpu": 2,
        "ram_gb": 4,
        "disk_gb": 80,
        "url": "https://www.digitalocean.com/pricing/droplets",
        "chosen": false
      }
    ],
    "migration_hours": 10,
    "maintenance_hours_per_month": 1
  },
  "result": {
    "computable": true,
    "inputs": {
      "seats": 5,
      "horizon_months": 36,
      "hourly_rate": 50
    },
    "incumbent": {
      "cash_monthly": 100,
      "time_monthly": 0,
      "monthly": 100,
      "one_time": 0,
      "annual": 1200
    },
    "alternative": {
      "cash_monthly": 20.28,
      "time_monthly": 50,
      "monthly": 70.28,
      "one_time": 500,
      "cash_one_time": 0,
      "time_one_time": 500,
      "annual": 843.34
    },
    "delta": {
      "monthly": 29.72,
      "upfront_to_switch": 500,
      "annual": 356.66
    },
    "break_even_month": 17,
    "break_even_hourly_rate": 62.39,
    "totals": {
      "at_12_months": {
        "incumbent": 1200,
        "alternative": 1343.34
      },
      "at_36_months": {
        "incumbent": 3600,
        "alternative": 3030.01
      },
      "at_horizon": {
        "incumbent": 3600,
        "alternative": 3030.01
      }
    },
    "savings": {
      "year_1": -143.34,
      "year_3": 569.99,
      "at_horizon": 569.99
    },
    "verdict": "switch"
  },
  "managed": null,
  "curve": [
    {
      "month": 0,
      "incumbent": 0,
      "alternative": 500
    },
    {
      "month": 1,
      "incumbent": 100,
      "alternative": 570.28
    },
    {
      "month": 2,
      "incumbent": 200,
      "alternative": 640.56
    },
    {
      "month": 3,
      "incumbent": 300,
      "alternative": 710.84
    },
    {
      "month": 4,
      "incumbent": 400,
      "alternative": 781.12
    },
    {
      "month": 5,
      "incumbent": 500,
      "alternative": 851.4
    },
    {
      "month": 6,
      "incumbent": 600,
      "alternative": 921.68
    },
    {
      "month": 7,
      "incumbent": 700,
      "alternative": 991.96
    },
    {
      "month": 8,
      "incumbent": 800,
      "alternative": 1062.24
    },
    {
      "month": 9,
      "incumbent": 900,
      "alternative": 1132.52
    },
    {
      "month": 10,
      "incumbent": 1000,
      "alternative": 1202.8
    },
    {
      "month": 11,
      "incumbent": 1100,
      "alternative": 1273.08
    },
    {
      "month": 12,
      "incumbent": 1200,
      "alternative": 1343.36
    },
    {
      "month": 13,
      "incumbent": 1300,
      "alternative": 1413.64
    },
    {
      "month": 14,
      "incumbent": 1400,
      "alternative": 1483.92
    },
    {
      "month": 15,
      "incumbent": 1500,
      "alternative": 1554.2
    },
    {
      "month": 16,
      "incumbent": 1600,
      "alternative": 1624.48
    },
    {
      "month": 17,
      "incumbent": 1700,
      "alternative": 1694.76
    },
    {
      "month": 18,
      "incumbent": 1800,
      "alternative": 1765.04
    },
    {
      "month": 19,
      "incumbent": 1900,
      "alternative": 1835.32
    },
    {
      "month": 20,
      "incumbent": 2000,
      "alternative": 1905.6
    },
    {
      "month": 21,
      "incumbent": 2100,
      "alternative": 1975.88
    },
    {
      "month": 22,
      "incumbent": 2200,
      "alternative": 2046.16
    },
    {
      "month": 23,
      "incumbent": 2300,
      "alternative": 2116.44
    },
    {
      "month": 24,
      "incumbent": 2400,
      "alternative": 2186.72
    },
    {
      "month": 25,
      "incumbent": 2500,
      "alternative": 2257
    },
    {
      "month": 26,
      "incumbent": 2600,
      "alternative": 2327.28
    },
    {
      "month": 27,
      "incumbent": 2700,
      "alternative": 2397.56
    },
    {
      "month": 28,
      "incumbent": 2800,
      "alternative": 2467.84
    },
    {
      "month": 29,
      "incumbent": 2900,
      "alternative": 2538.12
    },
    {
      "month": 30,
      "incumbent": 3000,
      "alternative": 2608.4
    },
    {
      "month": 31,
      "incumbent": 3100,
      "alternative": 2678.68
    },
    {
      "month": 32,
      "incumbent": 3200,
      "alternative": 2748.96
    },
    {
      "month": 33,
      "incumbent": 3300,
      "alternative": 2819.24
    },
    {
      "month": 34,
      "incumbent": 3400,
      "alternative": 2889.52
    },
    {
      "month": 35,
      "incumbent": 3500,
      "alternative": 2959.8
    },
    {
      "month": 36,
      "incumbent": 3600,
      "alternative": 3030.08
    }
  ],
  "sensitivity": [
    {
      "hourly_rate": 0,
      "verdict": "switch",
      "break_even_month": 0,
      "savings_at_horizon": 2869.99
    },
    {
      "hourly_rate": 25,
      "verdict": "switch",
      "break_even_month": 5,
      "savings_at_horizon": 1719.99
    },
    {
      "hourly_rate": 50,
      "verdict": "switch",
      "break_even_month": 17,
      "savings_at_horizon": 569.99
    },
    {
      "hourly_rate": 75,
      "verdict": "stay",
      "break_even_month": 159,
      "savings_at_horizon": -580.01
    },
    {
      "hourly_rate": 100,
      "verdict": "stay",
      "break_even_month": null,
      "savings_at_horizon": -1730.01
    },
    {
      "hourly_rate": 150,
      "verdict": "stay",
      "break_even_month": null,
      "savings_at_horizon": -4030.01
    },
    {
      "hourly_rate": 200,
      "verdict": "stay",
      "break_even_month": null,
      "savings_at_horizon": -6330.01
    }
  ],
  "tradeoffs": {
    "you_lose": [
      "Vercel's edge network, which one VPS does not replicate at any price",
      "Automatic image optimisation and instant cache invalidation",
      "Zero-config Next.js behaviour that exists because Vercel builds both halves",
      "Preview deployments that cost nothing when idle"
    ],
    "you_gain": [
      "A fixed bill instead of usage billing that can spike without warning",
      "Free seats, including for people who only need to read logs",
      "Any runtime, not only the supported ones"
    ]
  },
  "caveats": [
    "Latency-sensitive global traffic is the case where this loses regardless of price. Put a CDN in front of it or stay on Vercel.",
    "The $20 per seat excludes usage overages. If bandwidth is why you are here, your Vercel bill is higher than this page assumes and Dokploy wins sooner.",
    "Dokploy is younger than Coolify with a smaller community. That is a real operational risk on the box that runs your production apps."
  ],
  "category": "hosting-paas",
  "updated_at": "2026-10-19"
}