diff --git a/apps/website/app/comparison/page.tsx b/apps/website/app/comparison/page.tsx index 27a4854..1b23efe 100644 --- a/apps/website/app/comparison/page.tsx +++ b/apps/website/app/comparison/page.tsx @@ -44,6 +44,12 @@ const competitors = [ description: "Compare Dokploy's self-hosted infrastructure ownership to Render's fully managed, per-service PaaS.", }, + { + name: "Vercel", + href: "/dokploy-vs-vercel", + description: + "See how Dokploy's Docker-native, full-stack deployment compares to Vercel's serverless, frontend-first platform.", + }, ]; const whyDokploy = [ diff --git a/apps/website/app/dokploy-vs-vercel/page.tsx b/apps/website/app/dokploy-vs-vercel/page.tsx new file mode 100644 index 0000000..edc1793 --- /dev/null +++ b/apps/website/app/dokploy-vs-vercel/page.tsx @@ -0,0 +1,429 @@ +import { Container } from "@/components/Container"; +import { CallToAction } from "@/components/CallToAction"; +import { Testimonials } from "@/components/Testimonials"; +import { ComparisonStats } from "@/components/comparison-stats"; +import AnimatedGridPattern from "@/components/ui/animated-grid-pattern"; +import { + Check, + X, + Container as ContainerLucide, + Settings, + HardDrive, + Gauge, + Bot, +} from "lucide-react"; +import Image from "next/image"; +import Link from "next/link"; +import type { Metadata } from "next"; +import { Button } from "@/components/ui/button"; + +export const metadata: Metadata = { + title: "Dokploy vs. Vercel: Docker-Native vs. Serverless", + description: + "Compare Dokploy vs. Vercel: Docker support, runtime limits, persistent storage, pricing, and full-stack infrastructure. Decide which fits your team.", +}; + +const featureComparisonRows = [ + { feature: "Self-hostable on your own VPS or server", dokploy: true, vercel: false }, + { feature: "Run on any cloud provider via SSH", dokploy: true, vercel: false }, + { feature: "Deploy Docker images and containers", dokploy: true, vercel: false }, + { feature: "Docker Compose support", dokploy: true, vercel: false }, + { feature: "Docker Stack support", dokploy: true, vercel: false }, + { feature: "Persistent filesystem (Docker volumes)", dokploy: true, vercel: false }, + { feature: "Persistent disk shared across services", dokploy: true, vercel: false }, + { feature: "Named Docker volume backups to S3", dokploy: true, vercel: false }, + { feature: "One-click scheduled database backups to S3", dokploy: true, vercel: false }, + { feature: "Long-running processes and background workers", dokploy: true, vercel: false }, + { + feature: "WebSocket connections without function duration limits", + dokploy: true, + vercel: false, + }, + { feature: "Unlimited function duration", dokploy: true, vercel: false }, + { feature: "Custom build servers", dokploy: true, vercel: false }, + { feature: "Nixpacks build support", dokploy: true, vercel: false }, + { feature: "Heroku Buildpacks support", dokploy: true, vercel: false }, + { feature: "Preview deployments", dokploy: true, vercel: true }, + { feature: "Multi-server deployment", dokploy: true, vercel: false }, + { feature: "Docker Swarm clustering", dokploy: true, vercel: false }, + { feature: "One-command installation", dokploy: true, vercel: false }, + { feature: "Scheduled jobs (cron)", dokploy: true, vercel: true }, + { feature: "Built-in monitoring metrics (CPU, RAM, Disk)", dokploy: true, vercel: false }, + { feature: "Automated metric alerts built in", dokploy: true, vercel: true }, + { feature: "AI-assisted deployments", dokploy: true, vercel: true }, + { feature: "MCP server support", dokploy: true, vercel: true }, + { feature: "API and CLI automation", dokploy: true, vercel: true }, + { feature: "Fine-grained RBAC", dokploy: true, vercel: false }, + { feature: "SSO / SAML", dokploy: true, vercel: true }, + { feature: "Audit logs", dokploy: true, vercel: true }, + { feature: "Predictable per-server platform pricing", dokploy: true, vercel: false }, + { feature: "No per-seat billing", dokploy: true, vercel: false }, +]; + +const whyChooseItems = [ + { + icon: ContainerLucide, + title: "Deploy apps with Docker, Compose, and Stack", + description: + "Dokploy supports Docker, Docker Compose, and Docker Stack, so your containers run exactly as they do locally—no rewriting for a serverless model. Vercel does not support deploying Docker images or running Docker containers.", + }, + { + icon: Settings, + title: "Run services without runtime limits", + description: + "Dokploy runs apps as containers on servers you control, with no platform-imposed timeouts. Vercel Functions have duration, memory, and payload caps that rule out long-running processes, persistent connections, and media pipelines.", + }, + { + icon: HardDrive, + title: "Keep persistent data on your own servers", + description: + "Dokploy supports persistent Docker volumes with scheduled S3 backups, making it a stronger fit for stateful apps, SQLite-backed tools, and self-hosted services that need durable local storage. Vercel's filesystem is read-only outside a small scratch space.", + }, + { + icon: Gauge, + title: "Monitor and alert without extra tooling", + description: + "Get CPU, memory, and disk metrics out of the box, with automated alerts built in. Vercel offers observability for function invocations and edge requests, but not server-level infrastructure metrics.", + }, + { + icon: Bot, + title: "Deploy AI-built apps in governed environments", + description: + "Give your team a governed sandbox to ship AI-assisted apps, complete with RBAC, audit logs, SSO, and a path from AI-generated code to a live URL.", + }, +]; + +const pricingRows = [ + { label: "Pricing model", dokploy: "Per server", vercel: "Per seat + metered usage" }, + { + label: "Entry price", + dokploy: "Free (open source, self-hosted)", + vercel: "Free (Hobby, non-commercial only)", + }, + { + label: "Production tier", + dokploy: "$15/month (Startup, 3 servers)", + vercel: "$20/month per deploying seat", + }, + { label: "Apps per plan", dokploy: "Unlimited", vercel: "Unlimited on Pro" }, + { label: "Databases", dokploy: "Unlimited per server", vercel: "Not included – third-party add-ons" }, + { + label: "Bandwidth", + dokploy: "Included (your server's allowance)", + vercel: "1 TB included on Pro; metered above that", + }, + { label: "Infrastructure", dokploy: "Your own servers (any provider)", vercel: "Vercel-managed only" }, +]; + +const integrationRows = [ + { + category: "Git providers", + dokploy: "GitHub, GitLab, Bitbucket, Gitea, Git Generic", + vercel: "GitHub, GitLab, Bitbucket, Azure DevOps", + }, + { + category: "Build and deployment systems", + dokploy: + "Docker, Docker Compose, Nixpacks, Heroku Buildpacks, Paketo Buildpacks, Railpack", + vercel: "Vercel framework detection (35+ frameworks), Vercel CLI", + }, + { + category: "Notifications and communication", + dokploy: + "Slack, Telegram, Discord, Lark, Email (SMTP), Resend, Gotify, Ntfy, Pushover, Webhook", + vercel: "Slack, Email, Webhook", + }, +]; + +export default function DokployVsVercelPage() { + return ( +
+ Learn why so many teams are choosing Dokploy as their application + deployment tool over Vercel. +
+ ++ Dokploy is built for full-stack, Docker-native deployment on + infrastructure you own. Choose Vercel if your app is + primarily frontend or serverless and you want a managed + platform optimized for that model. +
++ For frontend and serverless-first teams that want a managed + platform with a global edge network, zero-config framework + support, and instant preview deployments—without managing + infrastructure. +
++ Read our comprehensive Vercel vs. Dokploy features comparison + before you make your decision. +
+| Feature | +Dokploy | +Vercel | +
|---|---|---|
| {row.feature} | +
+ {row.dokploy ? (
+ |
+
+ {row.vercel ? (
+ |
+
{item.description}
++ Dokploy Cloud charges per server, not per seat or per function, so + your platform cost stays flat as your team and app count grow. + Vercel charges $20 per deploying team member per month, plus + metered usage across bandwidth, function invocations, active CPU + time, and edge requests. For backend-heavy or multi-developer + teams, costs can accrue quickly. +
+| + | + Dokploy Cloud + | +Vercel | +
|---|---|---|
| {row.label} | ++ {row.dokploy} + | ++ {row.vercel} + | +
| Category | +Dokploy | +Vercel | +
|---|---|---|
| {row.category} | ++ {row.dokploy} + | ++ {row.vercel} + | +