From eaeb83f09d8147cc94704fdb587eaa513672dd38 Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Mon, 16 Mar 2026 14:35:50 -0600 Subject: [PATCH] feat: add Dokploy vs. Portainer comparison page - Introduced a new comparison page for Dokploy and Portainer, detailing features, deployment capabilities, and integration options. - Updated the footer to include a link to the new comparison page, enhancing navigation and user access to relevant content. --- .../website/app/dokploy-vs-portainer/page.tsx | 359 ++++++++++++++++++ apps/website/components/Footer.tsx | 4 + 2 files changed, 363 insertions(+) create mode 100644 apps/website/app/dokploy-vs-portainer/page.tsx diff --git a/apps/website/app/dokploy-vs-portainer/page.tsx b/apps/website/app/dokploy-vs-portainer/page.tsx new file mode 100644 index 0000000..da1cc7f --- /dev/null +++ b/apps/website/app/dokploy-vs-portainer/page.tsx @@ -0,0 +1,359 @@ +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, Zap, Globe, Bell, Users } 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. Portainer Comparison | Dokploy", + description: + "Comparing Dokploy vs. Portainer? See how these self-hosted or cloud container tools stack up on deployment, reverse proxy, multi-server support, and more.", +}; + +type FeatureValue = boolean | "limited"; + +interface FeatureRow { + feature: string; + dokploy: FeatureValue; + portainer: FeatureValue; + section?: string; +} + +const featureComparisonRows: FeatureRow[] = [ + // Setup & Installation + { feature: "One-command installation", dokploy: true, portainer: true, section: "Setup & Installation" }, + { feature: "Installation feedback and progress logs", dokploy: true, portainer: false }, + { feature: "Works with firewall and TailScale out of the box", dokploy: true, portainer: false }, + { feature: "Lightweight CPU usage while idle", dokploy: true, portainer: true }, + // Deployment + { feature: "Deploy web apps from git repos (GitHub, GitLab, Bitbucket)", dokploy: true, portainer: "limited", section: "Deployment" }, + { feature: "Auto-deploy on git push", dokploy: true, portainer: "limited" }, + { feature: "Docker Compose support", dokploy: true, portainer: true }, + { feature: "Deploy from custom Docker images", dokploy: true, portainer: true }, + { feature: "Nixpacks and Heroku Buildpack support", dokploy: true, portainer: false }, + { feature: "Preview deployments (review apps)", dokploy: true, portainer: false }, + { feature: "One-click open source templates", dokploy: true, portainer: true }, + // Networking & Domains + { feature: "Built-in reverse proxy (Traefik)", dokploy: true, portainer: false, section: "Networking & Domains" }, + { feature: "Automatic SSL / encrypt cert via Let's Encrypt", dokploy: true, portainer: false }, + { feature: "Custom domain management", dokploy: true, portainer: false }, + // Infrastructure + { feature: "Multi-server support", dokploy: true, portainer: true, section: "Infrastructure" }, + { feature: "Docker Swarm clustering", dokploy: true, portainer: true }, + { feature: "Kubernetes support", dokploy: false, portainer: true }, + // Configuration & Services + { feature: "Real-time monitoring (CPU, RAM, disk)", dokploy: true, portainer: "limited", section: "Configuration & Services" }, + { feature: "Metrics enabled by default", dokploy: true, portainer: false }, + { feature: "Automated alerts from metrics", dokploy: true, portainer: false }, + { feature: "Application and container log viewer", dokploy: true, portainer: true }, + // Teams & Access + { feature: "Teams and multi-user support", dokploy: true, portainer: true, section: "Teams & Access" }, + { feature: "Role-based access control (RBAC)", dokploy: true, portainer: true }, + { feature: "Projects grouping", dokploy: true, portainer: false }, + { feature: "API and CLI access", dokploy: true, portainer: true }, + { feature: "AI-assisted deployments", dokploy: true, portainer: false }, + { feature: "Free community edition", dokploy: true, portainer: true }, + { feature: "Full-featured without a paid plan", dokploy: true, portainer: false }, +]; + +const whyChooseItems = [ + { + icon: Zap, + title: "Deploy web services end-to-end, don't just manage containers", + description: + "Dokploy is a full deployment platform. Connect your git repos, and it handles the rest: building code, running it in containers, routing traffic through its built-in reverse proxy, and issuing SSL certificates automatically. Whether you're deploying web apps with Docker Compose files or spinning up databases on a cheap VPS, there's no bash script to maintain and no separate proxy to configure.", + image: { + src: "/images/dokploy-deployment-log.png", + alt: "Dokploy deployment panel showing build and deployment logs", + }, + }, + { + icon: Globe, + title: "Get built-in networking without extra tools", + description: + "Dokploy offers SSL, built-in reverse proxy, and managed domains and cert issuance encryption. It ships with Traefik integrated, so assigning a domain to a service and getting a valid HTTPS certificate is a few clicks in the UI. You can also manage Traefik config directly via the file editor if you need more control.", + image: { + src: "/images/dokploy-provider-settings.png", + alt: "Dokploy deploy settings with provider and domain configuration", + }, + }, + { + icon: Bell, + title: "Monitor, back up, and alert from one dashboard", + description: + "Dokploy has real-time CPU, memory, and disk metrics enabled by default, automated alerts, and scheduled S3-compatible database and volume backups built in. There's less to install, less to maintain, and less to go wrong. Troubleshooting is also simpler: logs, metrics, and alerts all live in the same UI.", + image: { + src: "/images/dokploy-monitoring-dashboard.png", + alt: "Dokploy monitoring dashboard showing CPU, memory, disk and I/O metrics", + }, + }, + { + icon: Users, + title: "Switch to a more flexible workflow as your project grows", + description: + "Dokploy's open source version is genuinely full-featured for solo developers, startups, teams, and large enterprises alike. You can manage multi-server deployments, organize services into projects, control user permissions, and deploy across multiple environments—only upgrading as you grow. Whether you're a student running a side project or an agency managing client instances, the same tool scales with you.", + image: { + src: "/images/dokploy-projects-dashboard.png", + alt: "Dokploy projects dashboard with services grid and environment selector", + }, + }, +]; + +const integrationRows = [ + { + category: "Git providers", + dokploy: "GitHub, GitLab, Bitbucket, Gitea, Git Generic", + portainer: "Git Generic (any URL with credentials)", + }, + { + category: "Build and deployment systems", + dokploy: "Docker, Docker Compose, Nixpacks, Heroku Buildpacks, Paketo Buildpacks, Railpack", + portainer: "Docker, Docker Compose", + }, + { + category: "Notifications and communication", + dokploy: "Slack, Telegram, Discord, Lark, Email (SMTP), Resend, Gotify, Ntfy, Pushover, Webhook", + portainer: "Slack, Microsoft Teams, Email (SMTP), Webhook", + }, +]; + +function FeatureCell({ value }: { value: FeatureValue }) { + if (value === true) return ; + if (value === "limited") return Limited; + return ; +} + +export default function DokployVsPortainerPage() { + return ( +
+ {/* Hero Section */} +
+ + +
+

+ Dokploy vs. Portainer +

+

+ Both tools help you manage containers on your own server. But they + solve very different problems—here's what that means for your setup. +

+ +
+
+

Dokploy

+

+ For scaling teams that want to self-host web apps and databases + with a polished UI, automated deployments from git repos, + multi-server support, a built-in reverse proxy, and SSL. +

+
+
+

Portainer

+

+ For enterprises that already run Kubernetes and want a GUI to + manage containers, images, and stacks. A practical choice for + ops-focused users who need visibility into existing + infrastructure. +

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

+ Dokploy vs. Portainer at a glance +

+

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

+
+ +
+ + + + + + + + + + {featureComparisonRows.map((row) => ( + <> + {row.section && ( + + + + )} + + + + + + + ))} + +
FeatureDokployPortainer
+ {row.section} +
{row.feature} + + + +
+
+
+
+ + {/* Why you should go with Dokploy */} +
+ +
+

+ Why you should go with Dokploy +

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

+ {item.title} +

+

{item.description}

+
+
+
+ {item.image.alt} +
+
+
+ ))} +
+
+
+ + {/* Dokploy integrates with the leading solutions */} +
+ +
+

+ Dokploy integrates with the leading solutions +

+

+ When it comes to a Dokploy vs. Portainer comparison, you want the + container management solution that syncs with the tools in your + workflow. +

+
+ +
+ + + + + + + + + + {integrationRows.map((row) => ( + + + + + + ))} + +
CategoryDokployPortainer
{row.category} + {row.dokploy} + + {row.portainer} +
+
+
+
+ + {/* Why Dokploy is perfect for teams */} +
+ +
+

+ Why Dokploy is perfect for teams of any size +

+

+ Whether you're a startup founder deploying your first web app on a + cheap VPS or a growing team managing multiple services across + servers, Dokploy's flexible, polished platform makes self-hosting + accessible to everyone—from beginners and non-technical users who've + never touched a bash script to engineers who want full control over + their config, containers, and workflow. +

+
+
+
+ + {/* Stats */} + + + {/* Testimonials */} + + + {/* Final CTA */} + +
+ ); +} diff --git a/apps/website/components/Footer.tsx b/apps/website/components/Footer.tsx index 3790ca0..62089cd 100644 --- a/apps/website/components/Footer.tsx +++ b/apps/website/components/Footer.tsx @@ -33,6 +33,10 @@ const footerSections = [ href: "/dokploy-vs-coolify", label: "Dokploy vs. Coolify", }, + { + href: "/dokploy-vs-portainer", + label: "Dokploy vs. Portainer", + }, { href: "/blog", label: "Blog" }, { href: "https://docs.dokploy.com/docs/core",