diff --git a/apps/website/app/comparison/page.tsx b/apps/website/app/comparison/page.tsx index 67861ad..27a4854 100644 --- a/apps/website/app/comparison/page.tsx +++ b/apps/website/app/comparison/page.tsx @@ -38,6 +38,12 @@ const competitors = [ description: "See how Dokploy's visual dashboard and built-in tooling compare to Dokku's CLI-first workflow.", }, + { + name: "Render", + href: "/dokploy-vs-render", + description: + "Compare Dokploy's self-hosted infrastructure ownership to Render's fully managed, per-service PaaS.", + }, ]; const whyDokploy = [ diff --git a/apps/website/app/dokploy-vs-render/page.tsx b/apps/website/app/dokploy-vs-render/page.tsx new file mode 100644 index 0000000..4bb3d28 --- /dev/null +++ b/apps/website/app/dokploy-vs-render/page.tsx @@ -0,0 +1,422 @@ +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, + Building2, + Container as ContainerIcon, + Archive, + 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. Render: Self-Hosted Vs. Managed PaaS", + description: + "Compare Dokploy vs. Render: infrastructure ownership, Docker Compose support, pricing, and deployment architecture—decide which fits your team.", +}; + +const featureComparisonRows = [ + { feature: "Self-hostable on your own VPS or server", dokploy: true, render: false }, + { feature: "Run on any cloud provider via SSH", dokploy: true, render: false }, + { feature: "Docker Compose support", dokploy: true, render: false }, + { feature: "Docker Stack support", dokploy: true, render: false }, + { feature: "Dockerfile and prebuilt image deploys", dokploy: true, render: true }, + { feature: "Nixpacks build support", dokploy: true, render: false }, + { feature: "Heroku Buildpacks support", dokploy: true, render: true }, + { feature: "Paketo Buildpacks support", dokploy: true, render: false }, + { feature: "Railpack build support", dokploy: true, render: false }, + { feature: "Custom build servers", dokploy: true, render: false }, + { feature: "Named Docker volume backups to S3", dokploy: true, render: false }, + { feature: "Scheduled database backups to S3 (built-in)", dokploy: true, render: false }, + { feature: "Preview deployments", dokploy: true, render: true }, + { feature: "Multi-server deployment", dokploy: true, render: false }, + { feature: "Docker Swarm clustering", dokploy: true, render: false }, + { feature: "One-command installation", dokploy: true, render: false }, + { feature: "Scheduled jobs (cron)", dokploy: true, render: true }, + { feature: "Background workers", dokploy: true, render: true }, + { feature: "Built-in monitoring metrics (CPU, RAM, Disk)", dokploy: true, render: false }, + { feature: "Automated metric alerts", dokploy: true, render: false }, + { feature: "Metrics enabled by default", dokploy: true, render: false }, + { feature: "AI-assisted deployments", dokploy: true, render: false }, + { feature: "MCP server support", dokploy: true, render: true }, + { feature: "API and CLI automation", dokploy: true, render: true }, + { feature: "Fine-grained RBAC", dokploy: true, render: false }, + { feature: "SSO / SAML", dokploy: true, render: true }, + { feature: "Audit logs", dokploy: true, render: true }, + { feature: "Predictable per-server platform pricing", dokploy: true, render: false }, + { feature: "Persistent disk shared across services", dokploy: true, render: false }, +]; + +const whyChooseItems = [ + { + icon: Building2, + title: "Own your infrastructure", + description: + "Deploy to any VPS, cloud instance, or dedicated server reachable by SSH—Hetzner, DigitalOcean, AWS, or your own hardware. Render runs services on its own infrastructure; Dokploy puts you in control.", + }, + { + icon: ContainerIcon, + title: "Keep your Docker Compose workflow", + description: + "Deploy multi-service applications directly from your existing Docker Compose or Docker Stack files. Render has no native Compose support, so teams lose the same architecture they use locally.", + }, + { + icon: Archive, + title: "Back up volumes and databases reliably", + description: + "Schedule backups of any named Docker volume, not just managed databases, to S3-compatible storage. Render's persistent disks are tied to a single service instance with no native volume backup export.", + }, + { + 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. Render has no native monitoring dashboard or automated alerting—you need a third-party solution.", + }, + { + 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", render: "Workspace plan + per-service compute" }, + { + label: "Entry price", + dokploy: "Free (open source, self-hosted)", + render: "$0/month workspace + compute per service", + }, + { + label: "Production tier", + dokploy: "$15/month (Startup, 3 servers)", + render: "$25/month workspace + compute per service", + }, + { label: "Apps per server or plan", dokploy: "Unlimited", render: "No service cap on paid plans" }, + { label: "Databases", dokploy: "Unlimited per server", render: "Billed separately per instance" }, + { + label: "Bandwidth", + dokploy: "Included (your server's allowance)", + render: "25 GB included on Pro; metered above that", + }, + { label: "Infrastructure", dokploy: "Your own servers (any provider)", render: "Render-managed only" }, +]; + +const integrationRows = [ + { + category: "Git providers", + dokploy: "GitHub, GitLab, Bitbucket, Gitea, Git Generic", + render: "GitHub, GitLab, Bitbucket", + }, + { + category: "Build and deployment systems", + dokploy: + "Docker, Docker Compose, Nixpacks, Heroku Buildpacks, Paketo Buildpacks, Railpack", + render: "Docker (Dockerfile + prebuilt images), Heroku Buildpacks", + }, + { + category: "Notifications and communication", + dokploy: + "Slack, Telegram, Discord, Lark, Email (SMTP), Resend, Gotify, Ntfy, Pushover, Webhook", + render: "Slack, Email, Webhook (Pro plan+)", + }, +]; + +export default function DokployVsRenderPage() { + return ( +
+ {/* Hero Section */} +
+ + +
+

+ Dokploy vs. Render +

+

+ Choose Dokploy and choose control over your servers, setup, and + infrastructure bill. +

+ +
+
+

Dokploy

+

+ Dokploy gives you PaaS-level simplicity on infrastructure you + own. Deploy apps, Docker Compose stacks, databases, and + background workers on any VPS or cloud server, with + predictable pricing and no vendor lock-in. +

+
+
+

Render

+

+ A hosted, fully managed PaaS, Render handles servers, + networking, and scaling for you, with service types for web + apps, background workers, cron jobs, and managed databases, + all billed per service. +

+
+
+ +
+ + +
+
+
+
+ + {/* Dokploy vs Render at a glance */} +
+ +
+

+ Dokploy vs. Render at a glance +

+

+ Read our comprehensive Render vs. Dokploy features comparison + before you make your decision. +

+
+ +
+ + + + + + + + + + {featureComparisonRows.map((row) => ( + + + + + + ))} + +
FeatureDokployRender
{row.feature} + {row.dokploy ? ( + + ) : ( + + )} + + {row.render ? ( + + ) : ( + + )} +
+
+
+
+ + {/* Why you should choose Dokploy */} +
+ +
+

+ Why you should choose Dokploy +

+
+ +
+ {whyChooseItems.map((item, index) => ( +
+
+
+ +
+

+ {item.title} +

+

{item.description}

+
+
+ {index === 0 ? ( +
+ Dokploy deploy settings showing server and provider configuration +
+ ) : index === 1 ? ( +
+ Dokploy deployment panel showing build and deployment logs +
+ ) : index === 2 ? ( +
+ Dokploy Create Backup modal for database and volume backups +
+ ) : index === 3 ? ( +
+ Dokploy monitoring dashboard showing CPU, memory, disk and I/O metrics +
+ ) : ( +
+ Dokploy projects dashboard showing AI app deployments +
+ )} +
+
+ ))} +
+
+
+ + {/* Pricing comparison */} +
+ +
+

+ Pricing comparison: platform fees vs. per-service compute +

+

+ Dokploy Cloud charges per server, not per service, so your platform + cost stays flat as your app count grows. Render charges a workspace + plan fee plus a separate compute for every service instance, with + managed databases, storage, and bandwidth each billed on top. +

+
+ +
+ + + + + + + + + {pricingRows.map((row) => ( + + + + + + ))} + +
+ + Dokploy Cloud + Render
{row.label} + {row.dokploy} + + {row.render} +
+
+
+
+ + {/* Dokploy integrates with the leading solutions */} +
+ +
+

+ Dokploy integrates with the leading solutions +

+
+ +
+ + + + + + + + + + {integrationRows.map((row) => ( + + + + + + ))} + +
CategoryDokployRender
{row.category} + {row.dokploy} + + {row.render} +
+
+
+
+ + {/* Thousands have chosen Dokploy - Stats */} + + + {/* Testimonials */} + + + {/* Final CTA */} + +
+ ); +} diff --git a/apps/website/components/Footer.tsx b/apps/website/components/Footer.tsx index c3f149f..4e67b9e 100644 --- a/apps/website/components/Footer.tsx +++ b/apps/website/components/Footer.tsx @@ -69,6 +69,10 @@ const footerSections = [ href: "/dokploy-vs-dokku", label: "Dokploy vs. Dokku", }, + { + href: "/dokploy-vs-render", + label: "Dokploy vs. Render", + }, { href: "/blog", label: "Blog" }, { href: "https://docs.dokploy.com/docs/core",