|
| 1 | +import { Container } from "@/components/Container"; |
| 2 | +import { CallToAction } from "@/components/CallToAction"; |
| 3 | +import { Testimonials } from "@/components/Testimonials"; |
| 4 | +import { ComparisonStats } from "@/components/comparison-stats"; |
| 5 | +import AnimatedGridPattern from "@/components/ui/animated-grid-pattern"; |
| 6 | +import { Check, X, Zap, Cpu, Plug, LayoutDashboard, Bell } from "lucide-react"; |
| 7 | +import Image from "next/image"; |
| 8 | +import Link from "next/link"; |
| 9 | +import type { Metadata } from "next"; |
| 10 | +import { Button } from "@/components/ui/button"; |
| 11 | + |
| 12 | +export const metadata: Metadata = { |
| 13 | + title: "Dokploy Vs. Coolify Comparison", |
| 14 | + description: |
| 15 | + "Dokploy vs. Coolify at a glance: How to choose the right self-hosted open deployment option for your applications.", |
| 16 | +}; |
| 17 | + |
| 18 | +const featureComparisonRows = [ |
| 19 | + { feature: "One-command installation", dokploy: true, coolify: true }, |
| 20 | + { feature: "Installation feedback and progress logs", dokploy: true, coolify: true }, |
| 21 | + { feature: "Works with firewall and TailScale out of the box", dokploy: true, coolify: false }, |
| 22 | + { feature: "Lightweight CPU usage while idle", dokploy: true, coolify: false }, |
| 23 | + { feature: "Low memory usage", dokploy: true, coolify: true }, |
| 24 | + { feature: "Teams and organizations support", dokploy: true, coolify: true }, |
| 25 | + { feature: "Projects grouping", dokploy: true, coolify: true }, |
| 26 | + { feature: "Consistent, responsive UI", dokploy: true, coolify: false }, |
| 27 | + { feature: "Built with Next.js / TypeScript", dokploy: true, coolify: false }, |
| 28 | + { feature: "AI-assisted deployments", dokploy: true, coolify: false }, |
| 29 | + { feature: "Deploy from custom Docker images", dokploy: true, coolify: true }, |
| 30 | + { feature: "Database deployment (Postgres, MySQL, Redis, etc.)", dokploy: true, coolify: true }, |
| 31 | + { feature: "Scheduled database backups (S3)", dokploy: true, coolify: true }, |
| 32 | + { feature: "Back up arbitrary Docker volumes, not just databases", dokploy: true, coolify: false }, |
| 33 | + { feature: "Preview deployments (review apps)", dokploy: true, coolify: true }, |
| 34 | + { feature: "API and CLI tools for automation", dokploy: true, coolify: true }, |
| 35 | + { feature: "Multi-server deployment", dokploy: true, coolify: true }, |
| 36 | + { feature: "Docker Swarm clustering", dokploy: true, coolify: "limited" }, |
| 37 | + { feature: "Cron jobs inside containers", dokploy: true, coolify: true }, |
| 38 | + { feature: "Cron jobs on your host machine", dokploy: true, coolify: false }, |
| 39 | + { feature: "Monitoring metrics (CPU, RAM, Disk)", dokploy: true, coolify: "limited" }, |
| 40 | + { feature: "Metrics enabled by default", dokploy: true, coolify: false }, |
| 41 | + { feature: "Automated alerts from metrics", dokploy: true, coolify: false }, |
| 42 | +]; |
| 43 | + |
| 44 | +const whyChooseItems = [ |
| 45 | + { |
| 46 | + icon: Zap, |
| 47 | + title: "Benefit from a fast, reliable setup", |
| 48 | + description: |
| 49 | + "Use a single command to deploy with Dokploy, which works seamlessly across firewalls, TailScale, and secure environments. Launch applications faster with Dokploy's optimized build system.", |
| 50 | + }, |
| 51 | + { |
| 52 | + icon: Cpu, |
| 53 | + title: "Do more with less", |
| 54 | + description: |
| 55 | + "Keep your VPS fast and responsive with Dokploy's lightweight architecture, which uses minimal CPU and memory, even while idle. Automate builds, alerts, and scaling events effortlessly.", |
| 56 | + }, |
| 57 | + { |
| 58 | + icon: Plug, |
| 59 | + title: "Integrate with your favorite platforms", |
| 60 | + description: |
| 61 | + "Connect Dokploy to GitHub, GitLab, and Bitbucket. Dokploy supports Docker, Compose, Nixpacks, and Buildpacks, and even lets you add APIs and use CLI automation.", |
| 62 | + }, |
| 63 | + { |
| 64 | + icon: LayoutDashboard, |
| 65 | + title: "Experience an intuitive, polished UX", |
| 66 | + description: |
| 67 | + "Enjoy a clean, consistent UI in the cloud, powered by Next.js and TypeScript. Dokploy is the modern deployment dashboard, optimized for productivity and clarity, with smooth navigation and predictable save behavior.", |
| 68 | + }, |
| 69 | + { |
| 70 | + icon: Bell, |
| 71 | + title: "Know what's happening before it's a problem", |
| 72 | + description: |
| 73 | + "Built-in metrics, automated alerting, and volume backups make Dokploy ideal for serious deployments. Monitor CPU, memory, and disk usage, automate notifications, and keep data safe with S3-compatible backups.", |
| 74 | + }, |
| 75 | +]; |
| 76 | + |
| 77 | +const integrationRows = [ |
| 78 | + { |
| 79 | + category: "Git providers", |
| 80 | + dokploy: "GitHub, GitLab, Bitbucket, Gitea, Git Generic", |
| 81 | + coolify: "GitHub, Git Generic", |
| 82 | + }, |
| 83 | + { |
| 84 | + category: "Build and deployment systems", |
| 85 | + dokploy: "Docker, Docker Compose, Nixpacks, Heroku Buildpacks, Paketo Buildpacks, Railpack", |
| 86 | + coolify: "Docker, Docker Compose, Nixpacks", |
| 87 | + }, |
| 88 | + { |
| 89 | + category: "Notifications and communication", |
| 90 | + dokploy: "Slack, Telegram, Discord, Lark, Email (SMTP), Resend, Gotify, Ntfy, Pushover, Webhook", |
| 91 | + coolify: "Slack, Discord, Telegram, Email (SMTP), Pushover, Resend, Teams", |
| 92 | + }, |
| 93 | +]; |
| 94 | + |
| 95 | +export default function DokployVsCoolifyPage() { |
| 96 | + return ( |
| 97 | + <div className="min-h-screen bg-background"> |
| 98 | + {/* Hero Section */} |
| 99 | + <section className="relative overflow-hidden border-b border-border/30 bg-black py-20 sm:py-32"> |
| 100 | + <AnimatedGridPattern |
| 101 | + numSquares={30} |
| 102 | + maxOpacity={0.1} |
| 103 | + height={40} |
| 104 | + width={40} |
| 105 | + duration={3} |
| 106 | + repeatDelay={1} |
| 107 | + className="[mask-image:radial-gradient(800px_circle_at_center,white,transparent)] absolute inset-x-0 inset-y-[-30%] h-[200%] skew-y-12" |
| 108 | + /> |
| 109 | + <Container className="relative z-10"> |
| 110 | + <div className="mx-auto max-w-4xl text-center"> |
| 111 | + <h1 className="font-display text-4xl tracking-tight text-white sm:text-5xl lg:text-6xl"> |
| 112 | + Dokploy vs. Coolify |
| 113 | + </h1> |
| 114 | + <p className="mt-6 text-lg text-muted-foreground"> |
| 115 | + If you're looking for a self-hosted, open deployment solution that |
| 116 | + lets you run applications on your own VPS or hardware, Dokploy and |
| 117 | + Coolify are the two leading options. But which should you choose? |
| 118 | + </p> |
| 119 | + |
| 120 | + <div className="mt-16 grid gap-8 sm:grid-cols-2"> |
| 121 | + <div className="rounded-xl border border-border/50 bg-card p-6 text-left"> |
| 122 | + <h3 className="text-xl font-semibold text-white">Dokploy</h3> |
| 123 | + <p className="mt-3 text-sm text-muted-foreground"> |
| 124 | + For a polished, intuitive, open deployment solution with |
| 125 | + powerful automation, AI, monitoring and integration features – |
| 126 | + designed for developers who want control without complexity – |
| 127 | + choose Dokploy. |
| 128 | + </p> |
| 129 | + </div> |
| 130 | + <div className="rounded-xl border border-border/50 bg-card p-6 text-left"> |
| 131 | + <h3 className="text-xl font-semibold text-white">Coolify</h3> |
| 132 | + <p className="mt-3 text-sm text-muted-foreground"> |
| 133 | + For an open source deployment tool that's geared toward indie |
| 134 | + devs and OSS hobbyists, with an accessible, less polished |
| 135 | + approach that suits individuals over businesses, choose |
| 136 | + Coolify. |
| 137 | + </p> |
| 138 | + </div> |
| 139 | + </div> |
| 140 | + |
| 141 | + <Button className="mt-10 rounded-full" asChild> |
| 142 | + <Link |
| 143 | + href="https://app.dokploy.com/register" |
| 144 | + target="_blank" |
| 145 | + rel="noopener noreferrer" |
| 146 | + > |
| 147 | + Register now |
| 148 | + </Link> |
| 149 | + </Button> |
| 150 | + </div> |
| 151 | + </Container> |
| 152 | + </section> |
| 153 | + |
| 154 | + {/* Dokploy vs Coolify at a glance */} |
| 155 | + <section className="border-b border-border/30 py-20 sm:py-32"> |
| 156 | + <Container> |
| 157 | + <div className="mx-auto max-w-2xl text-center"> |
| 158 | + <h2 className="font-display text-3xl tracking-tight sm:text-4xl"> |
| 159 | + Dokploy vs. Coolify at a glance |
| 160 | + </h2> |
| 161 | + <p className="mt-4 text-lg text-muted-foreground"> |
| 162 | + Read our comprehensive Coolify vs. Dokploy features comparison |
| 163 | + before you make your decision. |
| 164 | + </p> |
| 165 | + </div> |
| 166 | + |
| 167 | + <div className="mx-auto mt-12 max-w-5xl overflow-x-auto"> |
| 168 | + <table className="w-full border-collapse"> |
| 169 | + <thead> |
| 170 | + <tr className="border-b border-border"> |
| 171 | + <th className="px-4 py-4 text-left font-semibold">Feature</th> |
| 172 | + <th className="px-4 py-4 text-center font-semibold">Dokploy</th> |
| 173 | + <th className="px-4 py-4 text-center font-semibold">Coolify</th> |
| 174 | + </tr> |
| 175 | + </thead> |
| 176 | + <tbody> |
| 177 | + {featureComparisonRows.map((row) => ( |
| 178 | + <tr |
| 179 | + key={row.feature} |
| 180 | + className="border-b border-border/50 hover:bg-muted/30" |
| 181 | + > |
| 182 | + <td className="px-4 py-3 text-sm">{row.feature}</td> |
| 183 | + <td className="px-4 py-3 text-center"> |
| 184 | + {row.dokploy ? ( |
| 185 | + <Check className="mx-auto h-5 w-5 text-green-500" /> |
| 186 | + ) : ( |
| 187 | + <X className="mx-auto h-5 w-5 text-muted-foreground/50" /> |
| 188 | + )} |
| 189 | + </td> |
| 190 | + <td className="px-4 py-3 text-center"> |
| 191 | + {row.coolify === true ? ( |
| 192 | + <Check className="mx-auto h-5 w-5 text-green-500" /> |
| 193 | + ) : row.coolify === "limited" ? ( |
| 194 | + <span className="text-xs text-amber-500">Limited</span> |
| 195 | + ) : ( |
| 196 | + <X className="mx-auto h-5 w-5 text-muted-foreground/50" /> |
| 197 | + )} |
| 198 | + </td> |
| 199 | + </tr> |
| 200 | + ))} |
| 201 | + </tbody> |
| 202 | + </table> |
| 203 | + </div> |
| 204 | + </Container> |
| 205 | + </section> |
| 206 | + |
| 207 | + {/* Why you should choose Dokploy */} |
| 208 | + <section className="border-b border-border/30 bg-black py-20 sm:py-32"> |
| 209 | + <Container> |
| 210 | + <div className="mx-auto max-w-2xl text-center"> |
| 211 | + <h2 className="font-display text-3xl tracking-tight text-white sm:text-4xl"> |
| 212 | + Why you should choose Dokploy |
| 213 | + </h2> |
| 214 | + </div> |
| 215 | + |
| 216 | + <div className="mx-auto mt-16 max-w-6xl space-y-20"> |
| 217 | + {whyChooseItems.map((item, index) => ( |
| 218 | + <div |
| 219 | + key={item.title} |
| 220 | + className={`flex flex-col gap-8 md:flex-row md:items-center ${ |
| 221 | + index % 2 === 1 ? "md:flex-row-reverse" : "" |
| 222 | + }`} |
| 223 | + > |
| 224 | + <div className="flex-1"> |
| 225 | + <div className="mb-4 flex h-12 w-12 items-center justify-center rounded-lg bg-primary/20 text-primary"> |
| 226 | + <item.icon className="h-6 w-6" /> |
| 227 | + </div> |
| 228 | + <h3 className="text-xl font-semibold text-white"> |
| 229 | + {item.title} |
| 230 | + </h3> |
| 231 | + <p className="mt-3 text-muted-foreground">{item.description}</p> |
| 232 | + </div> |
| 233 | + <div className="flex-1"> |
| 234 | + {index === 0 ? ( |
| 235 | + <div className="relative aspect-video overflow-hidden rounded-xl border border-border/50"> |
| 236 | + <Image |
| 237 | + src="/images/dokploy-deployment-log.png" |
| 238 | + alt="Dokploy deployment panel showing build and deployment logs" |
| 239 | + fill |
| 240 | + className="object-cover object-top" |
| 241 | + sizes="(max-width: 768px) 100vw, 50vw" |
| 242 | + /> |
| 243 | + </div> |
| 244 | + ) : index === 1 ? ( |
| 245 | + <div className="relative aspect-video overflow-hidden rounded-xl border border-border/50"> |
| 246 | + <Image |
| 247 | + src="/images/dokploy-monitoring-dashboard.png" |
| 248 | + alt="Dokploy monitoring dashboard showing CPU, memory, disk and I/O metrics" |
| 249 | + fill |
| 250 | + className="object-cover object-top" |
| 251 | + sizes="(max-width: 768px) 100vw, 50vw" |
| 252 | + /> |
| 253 | + </div> |
| 254 | + ) : index === 2 ? ( |
| 255 | + <div className="relative aspect-video overflow-hidden rounded-xl border border-border/50"> |
| 256 | + <Image |
| 257 | + src="/images/dokploy-provider-settings.png" |
| 258 | + alt="Dokploy deploy settings with GitHub, GitLab, Bitbucket and other providers" |
| 259 | + fill |
| 260 | + className="object-cover object-top" |
| 261 | + sizes="(max-width: 768px) 100vw, 50vw" |
| 262 | + /> |
| 263 | + </div> |
| 264 | + ) : index === 3 ? ( |
| 265 | + <div className="relative aspect-video overflow-hidden rounded-xl border border-border/50"> |
| 266 | + <Image |
| 267 | + src="/images/dokploy-projects-dashboard.png" |
| 268 | + alt="Dokploy projects dashboard with services grid and environment selector" |
| 269 | + fill |
| 270 | + className="object-cover object-top" |
| 271 | + sizes="(max-width: 768px) 100vw, 50vw" |
| 272 | + /> |
| 273 | + </div> |
| 274 | + ) : index === 4 ? ( |
| 275 | + <div className="relative aspect-video overflow-hidden rounded-xl border border-border/50"> |
| 276 | + <Image |
| 277 | + src="/images/dokploy-create-backup.png" |
| 278 | + alt="Dokploy Create Backup modal for database and volume backups" |
| 279 | + fill |
| 280 | + className="object-cover object-top" |
| 281 | + sizes="(max-width: 768px) 100vw, 50vw" |
| 282 | + /> |
| 283 | + </div> |
| 284 | + ) : ( |
| 285 | + <div className="aspect-video rounded-xl border border-border/50 bg-muted/30" /> |
| 286 | + )} |
| 287 | + </div> |
| 288 | + </div> |
| 289 | + ))} |
| 290 | + </div> |
| 291 | + </Container> |
| 292 | + </section> |
| 293 | + |
| 294 | + {/* Dokploy integrates with the leading solutions */} |
| 295 | + <section className="border-b border-border/30 py-20 sm:py-32"> |
| 296 | + <Container> |
| 297 | + <div className="mx-auto max-w-2xl text-center"> |
| 298 | + <h2 className="font-display text-3xl tracking-tight sm:text-4xl"> |
| 299 | + Dokploy integrates with the leading solutions |
| 300 | + </h2> |
| 301 | + </div> |
| 302 | + |
| 303 | + <div className="mx-auto mt-12 max-w-4xl overflow-x-auto"> |
| 304 | + <table className="w-full border-collapse"> |
| 305 | + <thead> |
| 306 | + <tr className="border-b border-border"> |
| 307 | + <th className="px-4 py-4 text-left font-semibold">Category</th> |
| 308 | + <th className="px-4 py-4 text-left font-semibold">Dokploy</th> |
| 309 | + <th className="px-4 py-4 text-left font-semibold">Coolify</th> |
| 310 | + </tr> |
| 311 | + </thead> |
| 312 | + <tbody> |
| 313 | + {integrationRows.map((row) => ( |
| 314 | + <tr |
| 315 | + key={row.category} |
| 316 | + className="border-b border-border/50" |
| 317 | + > |
| 318 | + <td className="px-4 py-3 font-medium">{row.category}</td> |
| 319 | + <td className="px-4 py-3 text-sm text-muted-foreground"> |
| 320 | + {row.dokploy} |
| 321 | + </td> |
| 322 | + <td className="px-4 py-3 text-sm text-muted-foreground"> |
| 323 | + {row.coolify} |
| 324 | + </td> |
| 325 | + </tr> |
| 326 | + ))} |
| 327 | + </tbody> |
| 328 | + </table> |
| 329 | + </div> |
| 330 | + </Container> |
| 331 | + </section> |
| 332 | + |
| 333 | + {/* Why Dokploy is perfect for teams */} |
| 334 | + <section className="border-b border-border/30 bg-black py-20 sm:py-32"> |
| 335 | + <Container> |
| 336 | + <div className="mx-auto max-w-3xl text-center"> |
| 337 | + <h2 className="font-display text-3xl tracking-tight text-white sm:text-4xl"> |
| 338 | + Why Dokploy is perfect for teams of any size |
| 339 | + </h2> |
| 340 | + <p className="mt-6 text-lg text-muted-foreground"> |
| 341 | + Empower every team, from solo developers to enterprise engineering |
| 342 | + squads, with a deployment platform built for collaboration and |
| 343 | + control. Dokploy's organizational and project structuring features |
| 344 | + make it simple for you to manage users, permissions, and |
| 345 | + environments, while its automation and monitoring tools scale |
| 346 | + seamlessly as your team grows. Whether you're running one app or |
| 347 | + hundreds, Dokploy adapts to your needs without adding complexity. |
| 348 | + </p> |
| 349 | + </div> |
| 350 | + </Container> |
| 351 | + </section> |
| 352 | + |
| 353 | + {/* Thousands have chosen Dokploy - Stats */} |
| 354 | + <ComparisonStats /> |
| 355 | + |
| 356 | + {/* Testimonials */} |
| 357 | + <Testimonials /> |
| 358 | + |
| 359 | + {/* Final CTA */} |
| 360 | + <CallToAction /> |
| 361 | + </div> |
| 362 | + ); |
| 363 | +} |
0 commit comments